[cig-commits] r18927 - in short/3D/PyLith/trunk: . 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/include modulesrc/materials modulesrc/meshio modulesrc/mpi modulesrc/problems modulesrc/topology modulesrc/utils pylith/feassemble pylith/utils tests/refinefaulttip unittests/libtests/bc unittests/libtests/bc/data unittests/libtests/faults unittests/libtests/faults/data unittests/libtests/feassemble unittests/libtests/feassemble/data unittests/libtests/friction unittests/libtests/friction/data unittests/libtests/materials unittests/libtests/materials/data unittests/libtests/meshio unittests/libtests/meshio/data unittests/libtests/topology unittests/libtests/topology/data unittests/pytests/bc unittests/pytests/faults unittests/pytests/feassemble unittests/pytests/utils

brad at geodynamics.org brad at geodynamics.org
Sat Sep 17 11:48:32 PDT 2011


Author: brad
Date: 2011-09-17 11:48:29 -0700 (Sat, 17 Sep 2011)
New Revision: 18927

Added:
   short/3D/PyLith/trunk/libsrc/pylith/utils/types.hh
   short/3D/PyLith/trunk/modulesrc/include/pylithtypes.i
   short/3D/PyLith/trunk/modulesrc/utils/pylith_general.i
   short/3D/PyLith/trunk/tests/refinefaulttip/Makefile.in
   short/3D/PyLith/trunk/unittests/pytests/utils/TestPylith.py
Modified:
   short/3D/PyLith/trunk/TODO
   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/BoundaryCondition.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/bc/TimeDependentPoints.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh
   short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.icc
   short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
   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/FaultCohesiveDyn.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.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/LiuCosSlipFn.icc
   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/feassemble/CellGeometry.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.icc
   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/ElasticityImplicitCUDA.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitCUDA.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/GeometryHex3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryHex3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine1D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine1D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine2D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine2D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint1D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint1D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint2D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint2D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad2D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad2D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTet3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTet3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri2D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri2D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.cc
   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/feassemble/Quadrature.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.icc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature0D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature0D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din2D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din2D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2Din3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2Din3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.icc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.cc
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.hh
   short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.icc
   short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc
   short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh
   short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.icc
   short/3D/PyLith/trunk/libsrc/pylith/friction/RateStateAgeing.cc
   short/3D/PyLith/trunk/libsrc/pylith/friction/RateStateAgeing.hh
   short/3D/PyLith/trunk/libsrc/pylith/friction/SlipWeakening.cc
   short/3D/PyLith/trunk/libsrc/pylith/friction/SlipWeakening.hh
   short/3D/PyLith/trunk/libsrc/pylith/friction/StaticFriction.cc
   short/3D/PyLith/trunk/libsrc/pylith/friction/StaticFriction.hh
   short/3D/PyLith/trunk/libsrc/pylith/friction/TimeWeakening.cc
   short/3D/PyLith/trunk/libsrc/pylith/friction/TimeWeakening.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/EffectiveStress.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/EffectiveStress.icc
   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/ElasticIsotropic3D.icc
   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/GenMaxwellIsotropic3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/Material.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/Material.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.hh
   short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.icc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ViscoelasticMaxwell.cc
   short/3D/PyLith/trunk/libsrc/pylith/materials/ViscoelasticMaxwell.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.cc
   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/DataWriterHDF5Ext.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.hh
   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/ExodusII.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/ExodusII.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileAscii.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileAscii.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileBinary.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileBinary.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshBuilder.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshBuilder.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIO.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIO.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOAscii.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOAscii.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOCubit.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOCubit.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOHDF5.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOHDF5.hh
   short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOLagrit.cc
   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/PsetFileAscii.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/PsetFileBinary.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/UCDFaultFile.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/Xdmf.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/Xdmf.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/SolverLinear.cc
   short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.cc
   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/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/FieldBase.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/FieldsNew.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/FieldsNew.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/MeshOrder.hh
   short/3D/PyLith/trunk/libsrc/pylith/topology/RefineEdges2.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/RefineFace4Edges2.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/RefineVol8Face4Edges2.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh
   short/3D/PyLith/trunk/libsrc/pylith/utils/TestArray.cc
   short/3D/PyLith/trunk/libsrc/pylith/utils/TestArray.hh
   short/3D/PyLith/trunk/libsrc/pylith/utils/array.hh
   short/3D/PyLith/trunk/libsrc/pylith/utils/arrayfwd.hh
   short/3D/PyLith/trunk/libsrc/pylith/utils/constdefs.h
   short/3D/PyLith/trunk/libsrc/pylith/utils/sievefwd.hh
   short/3D/PyLith/trunk/libsrc/pylith/utils/sievetypes.hh
   short/3D/PyLith/trunk/modulesrc/bc/AbsorbingDampers.i
   short/3D/PyLith/trunk/modulesrc/bc/DirichletBC.i
   short/3D/PyLith/trunk/modulesrc/bc/Neumann.i
   short/3D/PyLith/trunk/modulesrc/bc/PointForce.i
   short/3D/PyLith/trunk/modulesrc/bc/bc.i
   short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i
   short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i
   short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i
   short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i
   short/3D/PyLith/trunk/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/faults.i
   short/3D/PyLith/trunk/modulesrc/feassemble/CellGeometry.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/ElasticityImplicitCUDA.i
   short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryHex3D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine1D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine2D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine3D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint1D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint2D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint3D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryQuad2D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryQuad3D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTet3D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTri2D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTri3D.i
   short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i
   short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i
   short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticityLgDeform.i
   short/3D/PyLith/trunk/modulesrc/feassemble/QuadratureRefCell.i
   short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i
   short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i
   short/3D/PyLith/trunk/modulesrc/friction/RateStateAgeing.i
   short/3D/PyLith/trunk/modulesrc/friction/SlipWeakening.i
   short/3D/PyLith/trunk/modulesrc/friction/StaticFriction.i
   short/3D/PyLith/trunk/modulesrc/friction/TimeWeakening.i
   short/3D/PyLith/trunk/modulesrc/friction/friction.i
   short/3D/PyLith/trunk/modulesrc/include/Makefile.am
   short/3D/PyLith/trunk/modulesrc/include/doublearray.i
   short/3D/PyLith/trunk/modulesrc/materials/DruckerPrager3D.i
   short/3D/PyLith/trunk/modulesrc/materials/ElasticIsotropic3D.i
   short/3D/PyLith/trunk/modulesrc/materials/ElasticMaterial.i
   short/3D/PyLith/trunk/modulesrc/materials/ElasticPlaneStrain.i
   short/3D/PyLith/trunk/modulesrc/materials/ElasticPlaneStress.i
   short/3D/PyLith/trunk/modulesrc/materials/ElasticStrain1D.i
   short/3D/PyLith/trunk/modulesrc/materials/ElasticStress1D.i
   short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellIsotropic3D.i
   short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellPlaneStrain.i
   short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellQpQsIsotropic3D.i
   short/3D/PyLith/trunk/modulesrc/materials/Material.i
   short/3D/PyLith/trunk/modulesrc/materials/MaxwellIsotropic3D.i
   short/3D/PyLith/trunk/modulesrc/materials/MaxwellPlaneStrain.i
   short/3D/PyLith/trunk/modulesrc/materials/PowerLaw3D.i
   short/3D/PyLith/trunk/modulesrc/materials/materials.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/meshio.i
   short/3D/PyLith/trunk/modulesrc/mpi/mpi.i
   short/3D/PyLith/trunk/modulesrc/problems/Formulation.i
   short/3D/PyLith/trunk/modulesrc/problems/problems.i
   short/3D/PyLith/trunk/modulesrc/topology/Field.i
   short/3D/PyLith/trunk/modulesrc/topology/FieldsNew.i
   short/3D/PyLith/trunk/modulesrc/topology/topology.i
   short/3D/PyLith/trunk/modulesrc/utils/Makefile.am
   short/3D/PyLith/trunk/modulesrc/utils/TestArray.i
   short/3D/PyLith/trunk/modulesrc/utils/utils.i
   short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py
   short/3D/PyLith/trunk/pylith/utils/testarray.py
   short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.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/bc/data/AbsorbingDampersData.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceData.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveData.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8i.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8i.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2Lagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2Lagrange.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4b.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4b.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4c.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4c.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4d.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4d.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4e.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4e.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4g.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4g.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4h.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4h.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4b.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4b.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4d.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4d.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4g.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4g.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4h.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4h.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4j.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4j.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3f.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynData.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3d.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3d.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinData.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4e.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4e.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4e.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4e.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3d.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3d.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestCellGeometry.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.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/TestElasticityImplicitGrav1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint1D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticity.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature0D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadratureEngine.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadratureRefCell.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/data/FrictionModelData.hh
   short/3D/PyLith/trunk/unittests/libtests/friction/data/RateStateAgeingData.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/data/RateStateAgeingData.hh
   short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.hh
   short/3D/PyLith/trunk/unittests/libtests/friction/data/StaticFrictionData.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/data/StaticFrictionData.hh
   short/3D/PyLith/trunk/unittests/libtests/friction/data/TimeWeakeningData.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/data/TimeWeakeningData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/TestDruckerPrager3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestEffectiveStress.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestEffectiveStress.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellPlaneStrain.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellQpQsIsotropic3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellPlaneStrain.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestMetadata.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestPowerLaw3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh
   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/TestDataWriterFaultMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5.cc
   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/TestDataWriterSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTK.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTK.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/TestDataWriterVTKSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestExodusII.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestExodusII.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestHDF5.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestVertexFilterVecNorm.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterData.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3DIndexOne.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3DIndexOne.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTet.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTet.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTri.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTri.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataLagritTet.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataLagritTet.hh
   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/TestFieldsNewMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestRefineUniform.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesive.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2Fault1.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2Fault1.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2Fault1.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2Fault1.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2Fault1.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2Fault1.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2Fault1.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2Fault1.hh
   short/3D/PyLith/trunk/unittests/pytests/bc/TestAbsorbingDampers.py
   short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py
   short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py
   short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.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/feassemble/TestElasticityImplicit.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATLagrange.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATSimplex.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestMeshQuadrature.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestSubMeshQuadrature.py
   short/3D/PyLith/trunk/unittests/pytests/utils/testutils.py
Log:
Merge from stable. Added ability to run in single precision (match PETSc precision).

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/TODO	2011-09-17 18:48:29 UTC (rev 18927)
@@ -53,6 +53,12 @@
 
   Line search should be improved to include the inequality constraints.
 
+* GPU utilization
+
+  PETSc w/GPU and single precision
+    PyLith use PetscScalar instead of double
+    spatialdata - create single precision versions
+
 ----------------------------------------
 MISCELLANEOUS
 ----------------------------------------

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
 typedef pylith::topology::Mesh::RealSection RealSection;
 typedef pylith::topology::Field<pylith::topology::SubMesh>::RestrictVisitor RestrictVisitor;
 typedef pylith::topology::Field<pylith::topology::SubMesh>::UpdateAddVisitor UpdateAddVisitor;
-typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PetscInt> IndicesVisitor;
+typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PylithInt> IndicesVisitor;
 
 // ----------------------------------------------------------------------
 // Default constructor.
@@ -83,7 +83,10 @@
 
   _initializeLogger();
 
-  double_array up(upDir, 3);
+  scalar_array up(3);
+  for (int i=0; i < 3; ++i)
+    up[i] = upDir[i];
+
   const int numCorners = _quadrature->numBasis();
 
   // Get 'surface' cells (1 dimension lower than top-level cells)
@@ -118,9 +121,9 @@
   // Containers for orientation information
   const int orientationSize = spaceDim * spaceDim;
   const int jacobianSize = spaceDim * cellDim;
-  double_array jacobian(jacobianSize);
-  double jacobianDet = 0;
-  double_array orientation(orientationSize);
+  scalar_array jacobian(jacobianSize);
+  PylithScalar jacobianDet = 0;
+  scalar_array orientation(orientationSize);
 
   // open database with material property information
   _db->open();
@@ -136,15 +139,15 @@
   } // else
 
   // Container for data returned in query of database
-  double_array queryData(numValues);
-  double_array quadPtRef(cellDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array queryData(numValues);
+  scalar_array quadPtRef(cellDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Container for damping constants for current cell
-  double_array dampingConstsLocal(fiberDim);
-  double_array dampingConstsGlobal(fiberDim);
+  scalar_array dampingConstsLocal(fiberDim);
+  scalar_array dampingConstsGlobal(fiberDim);
 
-  double_array coordinatesCell(numCorners*spaceDim);
+  scalar_array coordinatesCell(numCorners*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveSubMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -152,10 +155,10 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double densityScale = _normalizer->densityScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
   assert(_normalizer->timeScale() > 0);
-  const double velocityScale = 
+  const PylithScalar velocityScale = 
     _normalizer->lengthScale() / _normalizer->timeScale();
 
   const ALE::Obj<SubRealUniformSection>& parametersSection = 
@@ -182,8 +185,8 @@
     _quadrature->computeGeometry(coordinatesCell, *c_iter);
 #endif
 
-    const double_array& quadPtsNondim = _quadrature->quadPts();
-    const double_array& quadPtsRef = _quadrature->quadPtsRef();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& quadPtsRef = _quadrature->quadPtsRef();
     quadPtsGlobal = quadPtsNondim;
     _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(), 
 				lengthScale);
@@ -204,16 +207,16 @@
 	throw std::runtime_error(msg.str());
       } // if
       // Nondimensionalize damping constants
-      const double densityN = 
+      const PylithScalar densityN = 
 	_normalizer->nondimensionalize(queryData[0], densityScale);
-      const double vpN = 
+      const PylithScalar vpN = 
 	_normalizer->nondimensionalize(queryData[1], velocityScale);
-      const double vsN = (3 == numValues) ?
+      const PylithScalar vsN = (3 == numValues) ?
 	_normalizer->nondimensionalize(queryData[2], velocityScale) :
 	0.0;
       
-      const double constTangential = densityN * vsN;
-      const double constNormal = densityN * vpN;
+      const PylithScalar constTangential = densityN * vsN;
+      const PylithScalar constNormal = densityN * vpN;
       const int numTangential = spaceDim-1;
       for (int iDim=0; iDim < numTangential; ++iDim)
 	dampingConstsLocal[iDim] = constTangential;
@@ -221,7 +224,7 @@
 
       // Compute normal/tangential orientation
       memcpy(&quadPtRef[0], &quadPtsRef[iQuad*cellDim], 
-	     cellDim*sizeof(double));
+	     cellDim*sizeof(PylithScalar));
 #if defined(PRECOMPUTE_GEOMETRY)
       coordsVisitor.clear();
       sieveSubMesh->restrictClosure(*c_iter, coordsVisitor);
@@ -251,7 +254,7 @@
 void
 pylith::bc::AbsorbingDampers::integrateResidual(
 			     const topology::Field<topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     topology::SolutionFields* const fields)
 { // integrateResidual
   assert(0 != _quadrature);
@@ -270,7 +273,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -297,14 +300,14 @@
   assert(!residualSection.isNull());
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
   
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
   
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveSubMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates,
@@ -344,7 +347,7 @@
     sieveSubMesh->restrictClosure(*c_iter, velVisitor);
     assert(numQuadPts*spaceDim == 
 	   parametersSection->getFiberDimension(*c_iter));
-    const double* dampersCell = parametersSection->restrictPoint(*c_iter);
+    const PylithScalar* dampersCell = parametersSection->restrictPoint(*c_iter);
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(restrictEvent);
@@ -352,17 +355,17 @@
 #endif
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute action for absorbing bc terms
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
 
       for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-        const double valI = wt*basis[iQuad*numBasis+iBasis];
+        const PylithScalar valI = wt*basis[iQuad*numBasis+iBasis];
         for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-          const double valIJ = valI * basis[iQuad*numBasis+jBasis];
+          const PylithScalar valIJ = valI * basis[iQuad*numBasis+jBasis];
           for (int iDim=0; iDim < spaceDim; ++iDim)
             _cellVector[iBasis*spaceDim+iDim] -= 
 	      dampersCell[iQuad*spaceDim+iDim] *
@@ -397,7 +400,7 @@
 void
 pylith::bc::AbsorbingDampers::integrateResidualLumped(
            const topology::Field<topology::Mesh>& residual,
-           const double t,
+           const PylithScalar t,
            topology::SolutionFields* const fields)
 { // integrateResidualLumped
   assert(0 != _quadrature);
@@ -416,7 +419,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -443,14 +446,14 @@
   assert(!residualSection.isNull());
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     sieveSubMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates,
@@ -490,7 +493,7 @@
     sieveSubMesh->restrictClosure(*c_iter, velVisitor);
     assert(numQuadPts*spaceDim == 
 	   parametersSection->getFiberDimension(*c_iter));
-    const double* dampersCell = parametersSection->restrictPoint(*c_iter);
+    const PylithScalar* dampersCell = parametersSection->restrictPoint(*c_iter);
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(restrictEvent);
@@ -498,19 +501,19 @@
 #endif
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute action for absorbing bc terms
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
       const int iQ = iQuad * numBasis;
-      double valJ = 0.0;
+      PylithScalar valJ = 0.0;
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
         valJ += basis[iQ + jBasis];
       valJ *= wt;
       for (int iBasis = 0; iBasis < numBasis; ++iBasis) {
-        const double valIJ = basis[iQ + iBasis] * valJ;
+        const PylithScalar valIJ = basis[iQ + iBasis] * valJ;
         for (int iDim = 0; iDim < spaceDim; ++iDim)
           _cellVector[iBasis*spaceDim+iDim] -= valIJ * 
 	    dampersCell[iQuad*spaceDim+iDim] * velCell[iBasis*spaceDim+iDim];
@@ -541,7 +544,7 @@
 void
 pylith::bc::AbsorbingDampers::integrateJacobian(
 				      topology::Jacobian* jacobian,
-				      const double t,
+				      const PylithScalar t,
 				      topology::SolutionFields* const fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -560,7 +563,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -596,14 +599,14 @@
   assert(0 != jacobianMat);
 
   // Get parameters used in integration.
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(dt > 0);
 
   // Allocate matrix for cell values.
   _initCellMatrix();
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     sieveSubMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates,
@@ -636,7 +639,7 @@
 
     // Get damping constants
     assert(numQuadPts*spaceDim == parametersSection->getFiberDimension(*c_iter));
-    const double* dampingConstsCell = parametersSection->restrictPoint(*c_iter);
+    const PylithScalar* dampingConstsCell = parametersSection->restrictPoint(*c_iter);
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(restrictEvent);
@@ -647,17 +650,17 @@
     _resetCellMatrix();
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute Jacobian for absorbing bc terms
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = 
+      const PylithScalar wt = 
 	quadWts[iQuad] * jacobianDet[iQuad] / (2.0 * dt);
       for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
-        const double valI = wt*basis[iQ+iBasis];
+        const PylithScalar valI = wt*basis[iQ+iBasis];
         for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-          const double valIJ = valI * basis[iQ+jBasis];
+          const PylithScalar valIJ = valI * basis[iQ+jBasis];
           for (int iDim=0; iDim < spaceDim; ++iDim) {
             const int iBlock = (iBasis*spaceDim + iDim) * (numBasis*spaceDim);
             const int jBlock = (jBasis*spaceDim + iDim);
@@ -698,7 +701,7 @@
 void
 pylith::bc::AbsorbingDampers::integrateJacobian(
 			      topology::Field<topology::Mesh>* jacobian,
-			      const double t,
+			      const PylithScalar t,
 			      topology::SolutionFields* const fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -717,7 +720,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -732,7 +735,7 @@
   const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get parameters used in integration.
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(dt > 0);
 
   // Allocate matrix for cell values.
@@ -755,7 +758,7 @@
   UpdateAddVisitor jacobianVisitor(*jacobianSection, &_cellVector[0]);
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveSubMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates,
@@ -788,7 +791,7 @@
 
     // Get damping constants
     assert(numQuadPts*spaceDim == parametersSection->getFiberDimension(*c_iter));
-    const double* dampingConstsCell = parametersSection->restrictPoint(*c_iter);
+    const PylithScalar* dampingConstsCell = parametersSection->restrictPoint(*c_iter);
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(restrictEvent);
@@ -799,19 +802,19 @@
     _resetCellVector();
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute Jacobian for absorbing bc terms
     for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad] / (2.0 * dt);
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] / (2.0 * dt);
       const int iQ = iQuad * numBasis;
-      double valJ = 0.0;
+      PylithScalar valJ = 0.0;
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
         valJ += basis[iQ + jBasis];
       valJ *= wt;
       for (int iBasis = 0; iBasis < numBasis; ++iBasis) {
-        const double valIJ = basis[iQ + iBasis] * valJ;
+        const PylithScalar valIJ = basis[iQ + iBasis] * valJ;
         for (int iDim = 0; iDim < spaceDim; ++iDim)
           _cellVector[iBasis * spaceDim + iDim] += valIJ
               * dampingConstsCell[iQuad * spaceDim + iDim];

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -99,7 +99,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to residual term (r) for operator.
@@ -109,7 +109,7 @@
    * @param fields Solution fields
    */
   void integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
-       const double t,
+       const PylithScalar t,
        topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -120,7 +120,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -131,7 +131,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryCondition.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryCondition.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/BoundaryCondition.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -30,7 +30,7 @@
 #include "bcfwd.hh" // forward declarations
 
 #include "pylith/topology/topologyfwd.hh" // USES Mesh
-#include "pylith/utils/arrayfwd.hh" // USES double_array
+#include "pylith/utils/arrayfwd.hh" // USES scalar_array
 
 #include "spatialdata/geocoords/geocoordsfwd.hh" // USES CoordSys
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES SpatialDB

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -69,7 +69,7 @@
   _getPoints(mesh);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
   _queryDatabases(mesh, lengthScale, "displacement");
 } // initialize
 
@@ -193,7 +193,7 @@
 // ----------------------------------------------------------------------
 // Set values in field.
 void
-pylith::bc::DirichletBC::setField(const double t,
+pylith::bc::DirichletBC::setField(const PylithScalar t,
 				  const topology::Field<topology::Mesh>& field)
 { // setField
   const int numFixedDOF = _bcDOF.size();
@@ -219,7 +219,7 @@
   assert(!fieldSection.isNull());
   const int fiberDimension = 
     (numPoints > 0) ? fieldSection->getFiberDimension(_points[0]) : 0;
-  double_array fieldVertex(fiberDimension);
+  scalar_array fieldVertex(fiberDimension);
   
   for (int iPoint=0; iPoint < numPoints; ++iPoint) {
     const SieveMesh::point_type p_bc = _points[iPoint];
@@ -227,7 +227,7 @@
     fieldSection->restrictPoint(p_bc, &fieldVertex[0], fieldVertex.size());
 
     assert(parametersFiberDim == parametersSection->getFiberDimension(p_bc));
-    const double* parametersVertex = parametersSection->restrictPoint(p_bc);
+    const PylithScalar* parametersVertex = parametersSection->restrictPoint(p_bc);
 
     for (int iDOF=0; iDOF < numFixedDOF; ++iDOF)
       fieldVertex[_bcDOF[iDOF]] = parametersVertex[valueIndex+iDOF];
@@ -239,8 +239,8 @@
 // ----------------------------------------------------------------------
 // Set increment in values from t0 to t1 in field.
 void
-pylith::bc::DirichletBC::setFieldIncr(const double t0,
-				      const double t1,
+pylith::bc::DirichletBC::setFieldIncr(const PylithScalar t0,
+				      const PylithScalar t1,
 				      const topology::Field<topology::Mesh>& field)
 { // setFieldIncr
   assert(_useSolnIncr);
@@ -268,7 +268,7 @@
   assert(!fieldSection.isNull());
   const int fiberDimension = 
     (numPoints > 0) ? fieldSection->getFiberDimension(_points[0]) : 0;
-  double_array fieldVertex(fiberDimension);
+  scalar_array fieldVertex(fiberDimension);
   
   for (int iPoint=0; iPoint < numPoints; ++iPoint) {
     const SieveMesh::point_type p_bc = _points[iPoint];
@@ -276,7 +276,7 @@
     fieldSection->restrictPoint(p_bc, &fieldVertex[0], fieldVertex.size());
 
     assert(parametersFiberDim == parametersSection->getFiberDimension(p_bc));
-    const double* parametersVertex = parametersSection->restrictPoint(p_bc);
+    const PylithScalar* parametersVertex = parametersSection->restrictPoint(p_bc);
 
     for (int iDOF=0; iDOF < numFixedDOF; ++iDOF)
       fieldVertex[_bcDOF[iDOF]] = parametersVertex[valueIndex+iDOF];

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBC.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -84,7 +84,7 @@
    * @param t Current time
    * @param field Solution field
    */
-  void setField(const double t,
+  void setField(const PylithScalar t,
 		const topology::Field<topology::Mesh>& field);
 
   /** Set increment in values from t0 to t1 in field.
@@ -93,8 +93,8 @@
    * @param t1 Time t+dt.
    * @param field Solution field
    */
-  void setFieldIncr(const double t0,
-		    const double t1,
+  void setFieldIncr(const PylithScalar t0,
+		    const PylithScalar t1,
 		    const topology::Field<topology::Mesh>& field);
 
   /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -77,9 +77,9 @@
 					   const topology::SolutionFields& fields)
 { // getVertexField
   assert(_normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double timeScale = _normalizer->timeScale();
-  const double rateScale = lengthScale / timeScale;
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
+  const PylithScalar rateScale = lengthScale / timeScale;
 
   assert(_boundaryMesh);
   const spatialdata::geocoords::CoordSys* cs = _boundaryMesh->coordsys();
@@ -131,7 +131,7 @@
 const pylith::topology::Field<pylith::topology::SubMesh>&
 pylith::bc::DirichletBoundary::_bufferVector(const char* name,
 					     const char* label,
-					     const double scale)
+					     const PylithScalar scale)
 { // _bufferVector
   typedef topology::SubMesh::SieveMesh SieveMesh;
   typedef topology::Mesh::RealUniformSection RealUniformSection;
@@ -164,7 +164,7 @@
     _outputFields->section();
   assert(!outputSection.isNull());
   const int outputFiberDim = _outputFields->fiberDim();  
-  double_array outputVertex(outputFiberDim);
+  scalar_array outputVertex(outputFiberDim);
   const int bufferIndex = _outputFields->sectionIndex("buffer (vector)");
   const int bufferFiberDim = _outputFields->sectionFiberDim("buffer (vector)");
   assert(bufferIndex + bufferFiberDim <= outputFiberDim);
@@ -184,7 +184,7 @@
     outputVertex = 0.0;
 
     assert(parametersFiberDim == parametersSection->getFiberDimension(point));
-    const double* parametersVertex = parametersSection->restrictPoint(point);
+    const PylithScalar* parametersVertex = parametersSection->restrictPoint(point);
     assert(parametersVertex);
     
     for (int iDOF=0; iDOF < numFixedDOF; ++iDOF)
@@ -207,7 +207,7 @@
 const pylith::topology::Field<pylith::topology::SubMesh>&
 pylith::bc::DirichletBoundary::_bufferScalar(const char* name,
 					     const char* label,
-					     const double scale)
+					     const PylithScalar scale)
 { // _bufferScalar
   typedef topology::SubMesh::SieveMesh SieveMesh;
   typedef topology::Mesh::RealUniformSection RealUniformSection;
@@ -235,7 +235,7 @@
     _outputFields->section();
   assert(!outputSection.isNull());
   const int outputFiberDim = _outputFields->fiberDim();  
-  double_array outputVertex(outputFiberDim);
+  scalar_array outputVertex(outputFiberDim);
   const int bufferIndex = _outputFields->sectionIndex("buffer (vector)");
   const int bufferFiberDim = _outputFields->sectionFiberDim("buffer (vector)");
   assert(bufferIndex + bufferFiberDim <= outputFiberDim);
@@ -255,7 +255,7 @@
     outputVertex = 0.0;
 
     assert(parametersFiberDim == parametersSection->getFiberDimension(point));
-    const double* parametersVertex = parametersSection->restrictPoint(point);
+    const PylithScalar* parametersVertex = parametersSection->restrictPoint(point);
     assert(parametersVertex);
     
     outputVertex[bufferIndex] = parametersVertex[fieldIndex];

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/DirichletBoundary.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -86,7 +86,7 @@
   const topology::Field<topology::SubMesh>&
   _bufferVector(const char* name,
 		const char* label,
-		const double scale);
+		const PylithScalar scale);
 
   /** Get vertex scalar field with BC information.
    *
@@ -99,7 +99,7 @@
   const topology::Field<topology::SubMesh>&
   _bufferScalar(const char* name,
 		const char* label,
-		const double scale);
+		const PylithScalar scale);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -86,7 +86,7 @@
 void
 pylith::bc::Neumann::integrateResidual(
 			     const topology::Field<topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     topology::SolutionFields* const fields)
 { // integrateResidual
   assert(_quadrature);
@@ -95,14 +95,14 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
 
   // Allocate vectors for cell values.
   _initCellVector();
-  double_array tractionsCell(numQuadPts*spaceDim);
+  scalar_array tractionsCell(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveSubMesh>& subSieveMesh = _boundaryMesh->sieveMesh();
@@ -127,7 +127,7 @@
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     subSieveMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates,
@@ -152,22 +152,22 @@
     // Restrict tractions to cell
     assert(parametersFiberDim == 
 	   parametersSection->getFiberDimension(*c_iter));
-    const double* parametersCell = parametersSection->restrictPoint(*c_iter);
+    const PylithScalar* parametersCell = parametersSection->restrictPoint(*c_iter);
     assert(parametersCell);
-    const double* tractionsCell = &parametersCell[valueIndex];
+    const PylithScalar* tractionsCell = &parametersCell[valueIndex];
     assert(tractionsCell);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute action for traction bc terms
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
       for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-        const double valI = wt*basis[iQuad*numBasis+iBasis];
+        const PylithScalar valI = wt*basis[iQuad*numBasis+iBasis];
         for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-          const double valIJ = valI * basis[iQuad*numBasis+jBasis];
+          const PylithScalar valIJ = valI * basis[iQuad*numBasis+jBasis];
           for (int iDim=0; iDim < spaceDim; ++iDim)
             _cellVector[iBasis*spaceDim+iDim] += 
 	      tractionsCell[iQuad*spaceDim+iDim] * valIJ;
@@ -236,9 +236,9 @@
   assert(_quadrature);
   assert(_boundaryMesh);
   
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
-  const double rateScale = pressureScale / timeScale;
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
+  const PylithScalar rateScale = pressureScale / timeScale;
 
   const int spaceDim = _quadrature->spaceDim();
   const int numQuadPts = _quadrature->numQuadPts();
@@ -386,7 +386,7 @@
 pylith::bc::Neumann::_queryDB(const char* name,
 			      spatialdata::spatialdb::SpatialDB* const db,
 			      const int querySize,
-			      const double scale)
+			      const PylithScalar scale)
 { // _queryDB
   assert(name);
   assert(db);
@@ -410,11 +410,11 @@
   
   // Containers for database query results and quadrature coordinates in
   // reference geometry.
-  double_array valuesCell(numQuadPts*querySize);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array valuesCell(numQuadPts*querySize);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get sections.
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     subSieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -428,13 +428,13 @@
   const int valueIndex = _parameters->sectionIndex(name);
   const int valueFiberDim = _parameters->sectionFiberDim(name);
   assert(valueIndex+valueFiberDim <= parametersFiberDim);
-  double_array parametersCell(parametersFiberDim);
+  scalar_array parametersCell(parametersFiberDim);
 
   const spatialdata::geocoords::CoordSys* cs = _boundaryMesh->coordsys();
   assert(cs);
 
   assert(_normalizer);
-  const double lengthScale = _normalizer->lengthScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
 
   // Compute quadrature information
   _quadrature->initializeGeometry();
@@ -454,7 +454,7 @@
     subSieveMesh->restrictClosure(*c_iter, coordsVisitor);
     _quadrature->computeGeometry(coordinatesCell, *c_iter);
 #endif
-    const double_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
     quadPtsGlobal = quadPtsNondim;
     _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
 				lengthScale);
@@ -501,7 +501,9 @@
   assert(_parameters);
   assert(_quadrature);
 
-  double_array up(upDir, 3);
+  scalar_array up(3);
+  for (int i=0; i < 3; ++i)
+    up[i] = upDir[i];
 
   // Get 'surface' cells (1 dimension lower than top-level cells)
   const ALE::Obj<SieveSubMesh>& subSieveMesh = _boundaryMesh->sieveMesh();
@@ -518,18 +520,18 @@
   const int numBasis = _quadrature->numBasis();
   const int numQuadPts = _quadrature->numQuadPts();
   const int spaceDim = cellGeometry.spaceDim();
-  double_array quadPtRef(cellDim);
-  const double_array& quadPtsRef = _quadrature->quadPtsRef();
+  scalar_array quadPtRef(cellDim);
+  const scalar_array& quadPtsRef = _quadrature->quadPtsRef();
   
   // Containers for orientation information
   const int orientationSize = spaceDim * spaceDim;
   const int jacobianSize = spaceDim * cellDim;
-  double_array jacobian(jacobianSize);
-  double jacobianDet = 0;
-  double_array orientation(orientationSize);
+  scalar_array jacobian(jacobianSize);
+  PylithScalar jacobianDet = 0;
+  scalar_array orientation(orientationSize);
 
   // Get sections.
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     subSieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -540,8 +542,8 @@
     _parameters->section();
   assert(!parametersSection.isNull());
   const int parametersFiberDim = _parameters->fiberDim();
-  double_array parametersCellLocal(parametersFiberDim);
-  double_array parametersCellGlobal(parametersFiberDim);
+  scalar_array parametersCellLocal(parametersFiberDim);
+  scalar_array parametersCellGlobal(parametersFiberDim);
 
   const int initialIndex = 
     (_dbInitial) ? _parameters->sectionIndex("initial") : -1;
@@ -580,7 +582,7 @@
 	++iQuad, iRef+=cellDim, iSpace+=spaceDim) {
       // Compute Jacobian and determinant at quadrature point, then get
       // orientation.
-      memcpy(&quadPtRef[0], &quadPtsRef[iRef], cellDim*sizeof(double));
+      memcpy(&quadPtRef[0], &quadPtsRef[iRef], cellDim*sizeof(PylithScalar));
 #if defined(PRECOMPUTE_GEOMETRY)
       coordsVisitor.clear();
       subSieveMesh->restrictClosure(*c_iter, coordsVisitor);
@@ -596,8 +598,8 @@
 	// coordinate system
 	assert(initialIndex >= 0);
 	assert(initialFiberDim == numQuadPts*spaceDim);
-	double* initialGlobal = &parametersCellGlobal[initialIndex+iSpace];
-	double* initialLocal = &parametersCellLocal[initialIndex+iSpace];
+	PylithScalar* initialGlobal = &parametersCellGlobal[initialIndex+iSpace];
+	PylithScalar* initialLocal = &parametersCellLocal[initialIndex+iSpace];
 	for(int iDim = 0; iDim < spaceDim; ++iDim) {
 	  initialGlobal[iDim] = 0.0;
 	  for(int jDim = 0; jDim < spaceDim; ++jDim)
@@ -611,8 +613,8 @@
 	// coordinate system
 	assert(rateIndex >= 0);
 	assert(rateFiberDim == numQuadPts*spaceDim);
-	double* rateGlobal = &parametersCellGlobal[rateIndex+iSpace];
-	double* rateLocal = &parametersCellLocal[rateIndex+iSpace];
+	PylithScalar* rateGlobal = &parametersCellGlobal[rateIndex+iSpace];
+	PylithScalar* rateLocal = &parametersCellLocal[rateIndex+iSpace];
 	for(int iDim = 0; iDim < spaceDim; ++iDim) {
 	  rateGlobal[iDim] = 0.0;
 	  for(int jDim = 0; jDim < spaceDim; ++jDim)
@@ -626,8 +628,8 @@
 	// coordinate system
 	assert(changeIndex >= 0);
 	assert(changeFiberDim == numQuadPts*spaceDim);
-	double* changeGlobal = &parametersCellGlobal[changeIndex+iSpace];
-	double* changeLocal = &parametersCellLocal[changeIndex+iSpace];
+	PylithScalar* changeGlobal = &parametersCellGlobal[changeIndex+iSpace];
+	PylithScalar* changeLocal = &parametersCellLocal[changeIndex+iSpace];
 	for(int iDim = 0; iDim < spaceDim; ++iDim) {
 	  changeGlobal[iDim] = 0.0;
 	  for(int jDim = 0; jDim < spaceDim; ++jDim)
@@ -647,13 +649,13 @@
 // ----------------------------------------------------------------------
 // Calculate temporal and spatial variation of value over the list of Submesh.
 void
-pylith::bc::Neumann::_calculateValue(const double t)
+pylith::bc::Neumann::_calculateValue(const PylithScalar t)
 { // _calculateValue
   assert(_parameters);
   assert(_boundaryMesh);
   assert(_quadrature);
 
-  const double timeScale = _getNormalizer().timeScale();
+  const PylithScalar timeScale = _getNormalizer().timeScale();
 
   // Get 'surface' cells (1 dimension lower than top-level cells)
   const ALE::Obj<SieveSubMesh>& subSieveMesh = _boundaryMesh->sieveMesh();
@@ -671,7 +673,7 @@
     _parameters->section();
   assert(!parametersSection.isNull());
   const int parametersFiberDim = _parameters->fiberDim();
-  double_array parametersCell(parametersFiberDim);
+  scalar_array parametersCell(parametersFiberDim);
   
   const int valueIndex = _parameters->sectionIndex("value");
   const int valueFiberDim = _parameters->sectionFiberDim("value");
@@ -726,7 +728,7 @@
       assert(rateTimeFiberDim == numQuadPts);
       
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-	const double tRel = t - parametersCell[rateTimeIndex+iQuad];
+	const PylithScalar tRel = t - parametersCell[rateTimeIndex+iQuad];
 	if (tRel > 0.0)  // rate of change integrated over time
 	  for (int iDim=0; iDim < spaceDim; ++iDim)
 	    parametersCell[valueIndex+iQuad*spaceDim+iDim] += 
@@ -742,11 +744,11 @@
       assert(changeTimeFiberDim == numQuadPts);
 
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-	const double tRel = t - parametersCell[changeTimeIndex+iQuad];
+	const PylithScalar tRel = t - parametersCell[changeTimeIndex+iQuad];
 	if (tRel >= 0) { // change in value over time
-	  double scale = 1.0;
+	  PylithScalar scale = 1.0;
 	  if (0 != _dbTimeHistory) {
-	    double tDim = tRel;
+	    PylithScalar tDim = tRel;
 	    _getNormalizer().dimensionalize(&tDim, 1, timeScale);
 	    const int err = _dbTimeHistory->query(&scale, tDim);
 	    if (0 != err) {

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -65,7 +65,7 @@
    * @param fields Solution fields.
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Verify configuration is acceptable.
@@ -115,7 +115,7 @@
   void _queryDB(const char* name,
 		spatialdata::spatialdb::SpatialDB* const db,
 		const int querySize,
-		const double scale);
+		const PylithScalar scale);
 
   /** Convert parameters in local coordinates to global coordinates.
    *
@@ -129,7 +129,7 @@
    *
    * @param t Current time.
    */
-  void _calculateValue(const double t);
+  void _calculateValue(const PylithScalar t);
 
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -70,9 +70,9 @@
   _getPoints(mesh);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
 
   _queryDatabases(mesh, forceScale, "force");
 } // initialize
@@ -82,7 +82,7 @@
 void
 pylith::bc::PointForce::integrateResidual(
 			   const topology::Field<topology::Mesh>& residual,
-			   const double t,
+			   const PylithScalar t,
 			   topology::SolutionFields* const fields)
 { // integrateResidualAssembled
   assert(_parameters);
@@ -99,7 +99,7 @@
   assert(0 != cs);
   const int spaceDim = cs->spaceDim();
 
-  double_array residualVertex(spaceDim);
+  scalar_array residualVertex(spaceDim);
   const ALE::Obj<RealSection>& residualSection = residual.section();
   assert(!residualSection.isNull());
 
@@ -130,7 +130,7 @@
     residualVertex *= 0.0; // Reset residual contribution to zero.
     
     assert(parametersFiberDim == parametersSection->getFiberDimension(p_bc));
-    const double* parametersVertex = parametersSection->restrictPoint(p_bc);
+    const PylithScalar* parametersVertex = parametersSection->restrictPoint(p_bc);
     assert(parametersVertex);
 
     for (int iDOF=0; iDOF < numBCDOF; ++iDOF)

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/PointForce.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -64,7 +64,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -78,11 +78,11 @@
 // Query databases for parameters.
 void
 pylith::bc::TimeDependentPoints::_queryDatabases(const topology::Mesh& mesh,
-						 const double valueScale,
+						 const PylithScalar valueScale,
 						 const char* fieldName)
 { // _queryDatabases
-  const double timeScale = _getNormalizer().timeScale();
-  const double rateScale = valueScale / timeScale;
+  const PylithScalar timeScale = _getNormalizer().timeScale();
+  const PylithScalar rateScale = valueScale / timeScale;
 
   const int numPoints = _points.size();
   const int numBCDOF = _bcDOF.size();
@@ -209,7 +209,7 @@
 pylith::bc::TimeDependentPoints::_queryDB(const char* name,
 				 spatialdata::spatialdb::SpatialDB* const db,
 				 const int querySize,
-				 const double scale)
+				 const PylithScalar scale)
 { // _queryDB
   assert(name);
   assert(db);
@@ -220,9 +220,9 @@
   assert(0 != cs);
   const int spaceDim = cs->spaceDim();
 
-  const double lengthScale = _getNormalizer().lengthScale();
+  const PylithScalar lengthScale = _getNormalizer().lengthScale();
 
-  double_array coordsVertex(spaceDim);
+  scalar_array coordsVertex(spaceDim);
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   assert(!sieveMesh.isNull());
   const ALE::Obj<RealSection>& coordinates = 
@@ -236,9 +236,9 @@
   const int valueIndex = _parameters->sectionIndex(name);
   const int valueFiberDim = _parameters->sectionFiberDim(name);
   assert(valueIndex+valueFiberDim <= parametersFiberDim);
-  double_array parametersVertex(parametersFiberDim);
+  scalar_array parametersVertex(parametersFiberDim);
 
-  double_array valueVertex(querySize);
+  scalar_array valueVertex(querySize);
 
   const int numPoints = _points.size();
   for (int iPoint=0; iPoint < numPoints; ++iPoint) {
@@ -275,19 +275,19 @@
 // ----------------------------------------------------------------------
 // Calculate temporal and spatial variation of value over the list of points.
 void
-pylith::bc::TimeDependentPoints::_calculateValue(const double t)
+pylith::bc::TimeDependentPoints::_calculateValue(const PylithScalar t)
 { // _calculateValue
   assert(_parameters);
 
   const int numPoints = _points.size();
   const int numBCDOF = _bcDOF.size();
-  const double timeScale = _getNormalizer().timeScale();
+  const PylithScalar timeScale = _getNormalizer().timeScale();
 
   const ALE::Obj<RealUniformSection>& parametersSection = 
     _parameters->section();
   assert(!parametersSection.isNull());
   const int parametersFiberDim = _parameters->fiberDim();
-  double_array parametersVertex(parametersFiberDim);
+  scalar_array parametersVertex(parametersFiberDim);
   
   const int valueIndex = _parameters->sectionIndex("value");
   const int valueFiberDim = _parameters->sectionFiberDim("value");
@@ -340,7 +340,7 @@
       assert(rateTimeIndex >= 0);
       assert(rateTimeFiberDim == 1);
       
-      const double tRel = t - parametersVertex[rateTimeIndex];
+      const PylithScalar tRel = t - parametersVertex[rateTimeIndex];
       if (tRel > 0.0)  // rate of change integrated over time
 	for (int iDim=0; iDim < numBCDOF; ++iDim)
 	  parametersVertex[valueIndex+iDim] += 
@@ -354,11 +354,11 @@
       assert(changeTimeIndex >= 0);
       assert(changeTimeFiberDim == 1);
 
-      const double tRel = t - parametersVertex[changeTimeIndex];
+      const PylithScalar tRel = t - parametersVertex[changeTimeIndex];
       if (tRel >= 0) { // change in value over time
-	double scale = 1.0;
+	PylithScalar scale = 1.0;
 	if (0 != _dbTimeHistory) {
-	  double tDim = tRel;
+	  PylithScalar tDim = tRel;
 	  _getNormalizer().dimensionalize(&tDim, 1, timeScale);
 	  const int err = _dbTimeHistory->query(&scale, tDim);
 	  if (0 != err) {
@@ -383,20 +383,20 @@
 // Calculate increment in temporal and spatial variation of value over
 // the list of points.
 void
-pylith::bc::TimeDependentPoints::_calculateValueIncr(const double t0,
-						     const double t1)
+pylith::bc::TimeDependentPoints::_calculateValueIncr(const PylithScalar t0,
+						     const PylithScalar t1)
 { // _calculateValueIncr
   assert(_parameters);
 
   const int numPoints = _points.size();
   const int numBCDOF = _bcDOF.size();
-  const double timeScale = _getNormalizer().timeScale();
+  const PylithScalar timeScale = _getNormalizer().timeScale();
 
   const ALE::Obj<RealUniformSection>& parametersSection = 
     _parameters->section();
   assert(!parametersSection.isNull());
   const int parametersFiberDim = _parameters->fiberDim();
-  double_array parametersVertex(parametersFiberDim);
+  scalar_array parametersVertex(parametersFiberDim);
   
   const int valueIndex = _parameters->sectionIndex("value");
   const int valueFiberDim = _parameters->sectionFiberDim("value");
@@ -439,8 +439,8 @@
       assert(rateTimeFiberDim == 1);
       
       // Account for when rate dependence begins.
-      const double tRate = parametersVertex[rateTimeIndex];
-      double tIncr = 0.0;
+      const PylithScalar tRate = parametersVertex[rateTimeIndex];
+      PylithScalar tIncr = 0.0;
       if (t0 > tRate) // rate dependence for t0 to t1
 	tIncr = t1 - t0;
       else if (t1 > tRate) // rate dependence for tRef to t1
@@ -461,12 +461,12 @@
       assert(changeTimeIndex >= 0);
       assert(changeTimeFiberDim == 1);
 
-      const double tChange = parametersVertex[changeTimeIndex];
+      const PylithScalar tChange = parametersVertex[changeTimeIndex];
       if (t0 >= tChange) { // increment is after change starts
-	double scale0 = 1.0;
-	double scale1 = 1.0;
+	PylithScalar scale0 = 1.0;
+	PylithScalar scale1 = 1.0;
 	if (0 != _dbTimeHistory) {
-	  double tDim = t0 - tChange;
+	  PylithScalar tDim = t0 - tChange;
 	  _getNormalizer().dimensionalize(&tDim, 1, timeScale);
 	  int err = _dbTimeHistory->query(&scale0, tDim);
 	  if (0 != err) {
@@ -491,9 +491,9 @@
 	  parametersVertex[valueIndex+iDim] += 
 	    parametersVertex[changeIndex+iDim] * (scale1 - scale0);
       } else if (t1 >= tChange) { // increment spans when change starts
-	double scale1 = 1.0;
+	PylithScalar scale1 = 1.0;
 	if (0 != _dbTimeHistory) {
-	  double tDim = t1 - tChange;
+	  PylithScalar tDim = t1 - tChange;
 	  _getNormalizer().dimensionalize(&tDim, 1, timeScale);
 	  int err = _dbTimeHistory->query(&scale1, tDim);
 	  if (0 != err) {

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/TimeDependentPoints.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -80,7 +80,7 @@
    * @param fieldName Name of field associated with value.
    */
   void _queryDatabases(const topology::Mesh& mesh,
-		       const double valueScale,
+		       const PylithScalar valueScale,
 		       const char* fieldName);
 
   /** Query database for values.
@@ -93,14 +93,14 @@
   void _queryDB(const char* name,
 		spatialdata::spatialdb::SpatialDB* const db,
 		const int querySize,
-		const double scale);
+		const PylithScalar scale);
 
   /** Calculate spatial and temporal variation of value over the list
    *  of points.
    *
    * @param t Current time.
    */
-  void _calculateValue(const double t);
+  void _calculateValue(const PylithScalar t);
 
   /** Calculate increment in spatial and temporal variation of value
    *  over the list of points.
@@ -108,8 +108,8 @@
    * @param t0 Time when increment begins.
    * @param t1 Time when increment ends.
    */
-  void _calculateValueIncr(const double t0,
-			   const double t1);
+  void _calculateValueIncr(const PylithScalar t0,
+			   const PylithScalar t1);
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -73,7 +73,7 @@
 pylith::faults::BruneSlipFn::initialize(
 			    const topology::SubMesh& faultMesh,
 			    const spatialdata::units::Nondimensional& normalizer,
-			    const double originTime)
+			    const PylithScalar originTime)
 { // initialize
   assert(0 != _dbFinalSlip);
   assert(0 != _dbSlipTime);
@@ -83,8 +83,8 @@
   assert(0 != cs);
   const int spaceDim = cs->spaceDim();
 
-  const double lengthScale = normalizer.lengthScale();
-  const double timeScale = normalizer.timeScale();
+  const PylithScalar lengthScale = normalizer.lengthScale();
+  const PylithScalar timeScale = normalizer.timeScale();
 
   // Get vertices in fault mesh
   const ALE::Obj<SieveMesh>& sieveMesh = faultMesh.sieveMesh();
@@ -168,7 +168,7 @@
   assert(!coordinates.isNull());
 
   _slipVertex.resize(spaceDim);
-  double_array vCoordsGlobal(spaceDim);
+  scalar_array vCoordsGlobal(spaceDim);
   for (label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter) {
@@ -231,7 +231,7 @@
 // Get slip on fault surface at time t.
 void
 pylith::faults::BruneSlipFn::slip(topology::Field<topology::SubMesh>* slip,
-				  const double t)
+				  const PylithScalar t)
 { // slip
   assert(0 != slip);
   assert(0 != _parameters);
@@ -269,14 +269,14 @@
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
     riseTimeSection->restrictPoint(*v_iter, &_riseTimeVertex, 1);
 
-    double finalSlipMag = 0.0;
+    PylithScalar finalSlipMag = 0.0;
     for (int i=0; i < spaceDim; ++i)
       finalSlipMag += _slipVertex[i]*_slipVertex[i];
     finalSlipMag = sqrt(finalSlipMag);
 
-    const double slip = _slipFn(t-_slipTimeVertex, finalSlipMag,
+    const PylithScalar slip = _slipFn(t-_slipTimeVertex, finalSlipMag,
 				_riseTimeVertex);
-    const double scale = finalSlipMag > 0.0 ? slip / finalSlipMag : 0.0;
+    const PylithScalar scale = finalSlipMag > 0.0 ? slip / finalSlipMag : 0.0;
     _slipVertex *= scale;
     
     // Update field
@@ -291,8 +291,8 @@
 void
 pylith::faults::BruneSlipFn::slipIncr(
 				      topology::Field<topology::SubMesh>* slip,
-				      const double t0,
-				      const double t1)
+				      const PylithScalar t0,
+				      const PylithScalar t1)
 { // slipIncr
   assert(0 != slip);
   assert(0 != _parameters);
@@ -330,16 +330,16 @@
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
     riseTimeSection->restrictPoint(*v_iter, &_riseTimeVertex, 1);
 
-    double finalSlipMag = 0.0;
+    PylithScalar finalSlipMag = 0.0;
     for (int i=0; i < spaceDim; ++i)
       finalSlipMag += _slipVertex[i]*_slipVertex[i];
     finalSlipMag = sqrt(finalSlipMag);
 
-    const double slip0 = _slipFn(t0-_slipTimeVertex, finalSlipMag,
+    const PylithScalar slip0 = _slipFn(t0-_slipTimeVertex, finalSlipMag,
 				 _riseTimeVertex);
-    const double slip1 = _slipFn(t1-_slipTimeVertex, finalSlipMag,
+    const PylithScalar slip1 = _slipFn(t1-_slipTimeVertex, finalSlipMag,
 				 _riseTimeVertex);
-    const double scale = finalSlipMag > 0.0 ? 
+    const PylithScalar scale = finalSlipMag > 0.0 ? 
       (slip1 - slip0) / finalSlipMag : 0.0;
     _slipVertex *= scale;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -29,7 +29,8 @@
 
 #include "pylith/topology/topologyfwd.hh" // USES Fields<Field<SubMesh> >
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/types.hh" // HASA PylithScalar
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // BruneSlipFn ----------------------------------------------------------
 /** @brief Brune slip-time function.
@@ -84,7 +85,7 @@
    */
   void initialize(const topology::SubMesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
-		  const double originTime =0.0);
+		  const PylithScalar originTime =0.0);
 
   /** Get slip on fault surface at time t.
    *
@@ -94,7 +95,7 @@
    * @returns Slip vector as left-lateral/reverse/normal.
    */
   void slip(topology::Field<topology::SubMesh>* const slipField,
-	    const double t);
+	    const PylithScalar t);
   
   /** Get slip increment on fault surface between time t0 and t1.
    *
@@ -105,8 +106,8 @@
    * @returns Increment in slip vector as left-lateral/reverse/normal.
    */
   void slipIncr(topology::Field<topology::SubMesh>* slipField,
-		const double t0,
-		const double t1);
+		const PylithScalar t0,
+		const PylithScalar t1);
 
   /** Get final slip.
    *
@@ -138,16 +139,16 @@
    * @returns Slip at point at time t
    */
   static
-  double _slipFn(const double t,
-		 const double finalSlip,
-		 const double riseTime);
+  PylithScalar _slipFn(const PylithScalar t,
+		 const PylithScalar finalSlip,
+		 const PylithScalar riseTime);
 
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _slipTimeVertex; ///< Slip time at a vertex.
-  double _riseTimeVertex; ///< Rise time at a vertex.
-  double_array _slipVertex; ///< Slip at a vertex.
+  PylithScalar _slipTimeVertex; ///< Slip time at a vertex.
+  PylithScalar _riseTimeVertex; ///< Rise time at a vertex.
+  scalar_array _slipVertex; ///< Slip at a vertex.
 
   /// Spatial database for final slip.
   spatialdata::spatialdb::SpatialDB* _dbFinalSlip;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/BruneSlipFn.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,14 +46,14 @@
 
 // Compute slip using slip time function.
 inline
-double
-pylith::faults::BruneSlipFn::_slipFn(const double t,
-				     const double finalSlip,
-				     const double riseTime) {
-  double slip = 0.0;
+PylithScalar
+pylith::faults::BruneSlipFn::_slipFn(const PylithScalar t,
+				     const PylithScalar finalSlip,
+				     const PylithScalar riseTime) {
+  PylithScalar slip = 0.0;
   if (t > 0.0) {
     assert(riseTime > 0.0);
-    const double tau = 0.21081916*riseTime;
+    const PylithScalar tau = 0.21081916*riseTime;
     slip = finalSlip * (1.0 - exp(-t/tau) * (1.0 + t/tau));
   } // if
   return slip;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -499,11 +499,11 @@
   for (TopologyOps::PointSet::const_iterator c_iter = noReplaceCells.begin();
       c_iter != noRCellsEnd;
       ++c_iter) {
-    const double minusOne = -1.0;
+    const PylithScalar minusOne = -1.0;
     if (replacedCells->restrictPoint(*c_iter)[0] == 0.0) {
       replacedCells->updatePoint(*c_iter, &minusOne);
     } else {
-      const double minusTwo = -2.0;
+      const PylithScalar minusTwo = -2.0;
       replacedCells->updatePoint(*c_iter, &minusTwo);
     } // if/else
   } // for
@@ -513,20 +513,20 @@
       c_iter != rCellsEnd;
       ++c_iter) {
     if (replaceCellsBase.find(*c_iter) != replaceCellsBase.end()) {
-      const double one = 1.0;
+      const PylithScalar one = 1.0;
       if (replacedCells->restrictPoint(*c_iter)[0] == 0.0) {
         replacedCells->updatePoint(*c_iter, &one);
       } else {
-        const double two = 2.0;
+        const PylithScalar two = 2.0;
         replacedCells->updatePoint(*c_iter, &two);
       } // if/else
       continue;
     } // if
-    const double ten = 10.0;
+    const PylithScalar ten = 10.0;
     if (replacedCells->restrictPoint(*c_iter)[0] == 0.0) {
       replacedCells->updatePoint(*c_iter, &ten);
     } else {
-      const double twenty = 20.0;
+      const PylithScalar twenty = 20.0;
       replacedCells->updatePoint(*c_iter, &twenty);
     } // if/else
     // There should be a way to check for boundary elements

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -70,7 +70,7 @@
 pylith::faults::ConstRateSlipFn::initialize(
 			    const topology::SubMesh& faultMesh,
 			    const spatialdata::units::Nondimensional& normalizer,
-			    const double originTime)
+			    const PylithScalar originTime)
 { // initialize
   assert(0 != _dbSlipRate);
   assert(0 != _dbSlipTime);
@@ -79,9 +79,9 @@
   assert(0 != cs);
   const int spaceDim = cs->spaceDim();
 
-  const double lengthScale = normalizer.lengthScale();
-  const double timeScale = normalizer.timeScale();
-  const double velocityScale =
+  const PylithScalar lengthScale = normalizer.lengthScale();
+  const PylithScalar timeScale = normalizer.timeScale();
+  const PylithScalar velocityScale =
     normalizer.lengthScale() / normalizer.timeScale();
 
   // Get vertices in fault mesh
@@ -153,7 +153,7 @@
   assert(!coordinates.isNull());
 
   _slipRateVertex.resize(spaceDim);
-  double_array vCoordsGlobal(spaceDim);
+  scalar_array vCoordsGlobal(spaceDim);
   for (label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter) {
@@ -202,7 +202,7 @@
 // Get slip on fault surface at time t.
 void
 pylith::faults::ConstRateSlipFn::slip(topology::Field<topology::SubMesh>* slip,
-				      const double t)
+				      const PylithScalar t)
 { // slip
   assert(0 != slip);
   assert(0 != _parameters);
@@ -234,8 +234,8 @@
 				   _slipRateVertex.size());
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
 
-    const double relTime = t - _slipTimeVertex;
-    const double elapsedTime = (relTime > 0) ? relTime : 0.0;
+    const PylithScalar relTime = t - _slipTimeVertex;
+    const PylithScalar elapsedTime = (relTime > 0) ? relTime : 0.0;
     _slipRateVertex *= elapsedTime; // Convert slip rate to slip
     
     // Update field
@@ -250,8 +250,8 @@
 void
 pylith::faults::ConstRateSlipFn::slipIncr(
 				      topology::Field<topology::SubMesh>* slip,
-				      const double t0,
-				      const double t1)
+				      const PylithScalar t0,
+				      const PylithScalar t1)
 { // slipIncr
   assert(0 != slip);
   assert(0 != _parameters);
@@ -283,9 +283,9 @@
 				   _slipRateVertex.size());
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
 
-    const double relTime0 = t0 - _slipTimeVertex;
-    const double relTime1 = t1 - _slipTimeVertex;
-    double elapsedTime = 0.0;
+    const PylithScalar relTime0 = t0 - _slipTimeVertex;
+    const PylithScalar relTime1 = t1 - _slipTimeVertex;
+    PylithScalar elapsedTime = 0.0;
     if (relTime0 > 0)
       elapsedTime = t1 - t0;
     else if (relTime1 > 0)

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/ConstRateSlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -29,7 +29,7 @@
 
 #include "pylith/topology/topologyfwd.hh" // USES Fields<Field<SubMesh> >
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // ConstRateTimeFn ------------------------------------------------------
 /** @brief Constant slip rate slip-time function.
@@ -76,7 +76,7 @@
    */
   void initialize(const topology::SubMesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
-		  const double originTime =0.0);
+		  const PylithScalar originTime =0.0);
 
   /** Get slip on fault surface at time t.
    *
@@ -86,7 +86,7 @@
    * @returns Slip vector as left-lateral/reverse/normal.
    */
   void slip(topology::Field<topology::SubMesh>* const slipField,
-	    const double t);
+	    const PylithScalar t);
   
   /** Get slip increment on fault surface between time t0 and t1.
    *
@@ -97,8 +97,8 @@
    * @returns Increment in slip vector as left-lateral/reverse/normal.
    */
   void slipIncr(topology::Field<topology::SubMesh>* slipField,
-		const double t0,
-		const double t1);
+		const PylithScalar t0,
+		const PylithScalar t1);
 
   /** Get final slip.
    *
@@ -121,8 +121,8 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _slipTimeVertex; ///< Slip time at a vertex.
-  double_array _slipRateVertex; ///< Slip rate at a vertex.
+  PylithScalar _slipTimeVertex; ///< Slip time at a vertex.
+  scalar_array _slipRateVertex; ///< Slip rate at a vertex.
 
   /// Spatial database for slip rate.
   spatialdata::spatialdb::SpatialDB* _dbSlipRate;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,14 +52,14 @@
 // ----------------------------------------------------------------------
 // Set origin time for earthquake source.
 void
-pylith::faults::EqKinSrc::originTime(const double value)
+pylith::faults::EqKinSrc::originTime(const PylithScalar value)
 { // originTime
   _originTime = value;
 } // originTime
 
 // ----------------------------------------------------------------------
 // Get origin time for earthquake source.
-double
+PylithScalar
 pylith::faults::EqKinSrc::originTime(void) const
 { // originTime
   return _originTime;
@@ -91,7 +91,7 @@
 void
 pylith::faults::EqKinSrc::slip(
 			   topology::Field<topology::SubMesh>* const slipField,
-			   const double t)
+			   const PylithScalar t)
 { // slip
   assert(0 != _slipfn);
   _slipfn->slip(slipField, t);
@@ -102,8 +102,8 @@
 void
 pylith::faults::EqKinSrc::slipIncr(
 			   topology::Field<topology::SubMesh>* const slipField,
-			   const double t0,
-			   const double t1)
+			   const PylithScalar t0,
+			   const PylithScalar t1)
 { // slip
   assert(0 != _slipfn);
   _slipfn->slipIncr(slipField, t0, t1);

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/EqKinSrc.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,13 +59,13 @@
    *
    * @param value Origin time for earthquake source.
    */
-  void originTime(const double value);
+  void originTime(const PylithScalar value);
 
   /** Get origin time for earthquake source.
    *
    * @returns Origin time for earthquake source.
    */
-  double originTime(void) const;
+  PylithScalar originTime(void) const;
 
   /** Set slip time function.
    *
@@ -87,7 +87,7 @@
    * @param t Time t.
    */
   void slip(topology::Field<topology::SubMesh>* const slipField,
-	    const double t);
+	    const PylithScalar t);
 
   /** Get increment of slip on fault surface between time t0 and t1.
    *
@@ -96,8 +96,8 @@
    * @param t1 Time for end of slip increment.
    */
   void slipIncr(topology::Field<topology::SubMesh>* const slipField,
-		const double t0,
-		const double t1);
+		const PylithScalar t0,
+		const PylithScalar t1);
 
   /** Get final slip.
    *
@@ -120,7 +120,7 @@
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 
-  double _originTime; ///< Origin time for earthquake source
+  PylithScalar _originTime; ///< Origin time for earthquake source
   SlipTimeFn* _slipfn; ///< Slip time function
 
 }; // class EqKinSrc

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/Fault.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,7 +27,7 @@
 #include "faultsfwd.hh" // forward declarations
 
 #include "pylith/topology/topologyfwd.hh" // USES Field<SubMesh>, SubMesh
-#include "pylith/utils/arrayfwd.hh" // USES double_array
+#include "pylith/utils/arrayfwd.hh" // USES scalar_array
 
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES SpatialDB
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,10 +57,10 @@
 
 typedef pylith::topology::Field<pylith::topology::SubMesh>::RestrictVisitor RestrictVisitor;
 typedef pylith::topology::Field<pylith::topology::SubMesh>::UpdateAddVisitor UpdateAddVisitor;
-typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveSubMesh::order_type,PetscInt> IndicesVisitor;
+typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveSubMesh::order_type,PylithInt> IndicesVisitor;
 
 // ----------------------------------------------------------------------
-const double pylith::faults::FaultCohesiveDyn::_zeroTolerance = 1.0e-12;
+const PylithScalar pylith::faults::FaultCohesiveDyn::_zeroTolerance = 1.0e-12;
 
 // ----------------------------------------------------------------------
 // Default constructor.
@@ -115,7 +115,7 @@
 // Initialize fault. Determine orientation and setup boundary
 void
 pylith::faults::FaultCohesiveDyn::initialize(const topology::Mesh& mesh,
-					      const double upDir[3])
+					     const double upDir[3])
 { // initialize
   assert(0 != upDir);
   assert(0 != _quadrature);
@@ -152,7 +152,7 @@
 void
 pylith::faults::FaultCohesiveDyn::integrateResidual(
 			     const topology::Field<topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     topology::SolutionFields* const fields)
 { // integrateResidual
   assert(0 != fields);
@@ -170,12 +170,12 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Get sections
-  double_array forcesInitialVertex(spaceDim);
+  scalar_array forcesInitialVertex(spaceDim);
   const ALE::Obj<RealSection>& forcesInitialSection = 
     _fields->get("initial forces").section();
   assert(!forcesInitialSection.isNull());
 
-  double_array residualVertex(spaceDim);
+  scalar_array residualVertex(spaceDim);
   const ALE::Obj<RealSection>& residualSection = residual.section();
   assert(!residualSection.isNull());
 
@@ -207,7 +207,7 @@
 					forcesInitialVertex.size());
 
     assert(spaceDim == slipSection->getFiberDimension(v_fault));
-    const double* slipVertex = slipSection->restrictPoint(v_fault);
+    const PylithScalar* slipVertex = slipSection->restrictPoint(v_fault);
     assert(0 != slipVertex);
     
     // only apply initial tractions if there is no opening
@@ -232,7 +232,7 @@
 // Update state variables as needed.
 void
 pylith::faults::FaultCohesiveDyn::updateStateVars(
-				      const double t,
+				      const PylithScalar t,
 				      topology::SolutionFields* const fields)
 { // updateStateVars
   assert(0 != fields);
@@ -243,17 +243,17 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Allocate arrays for vertex values
-  double_array tractionTVertex(spaceDim);
-  double_array tractionTpdtVertex(spaceDim);
-  double_array slipTpdtVertex(spaceDim);
-  double_array lagrangeTpdtVertex(spaceDim);
+  scalar_array tractionTVertex(spaceDim);
+  scalar_array tractionTpdtVertex(spaceDim);
+  scalar_array slipTpdtVertex(spaceDim);
+  scalar_array lagrangeTpdtVertex(spaceDim);
 
   // Get sections
-  double_array slipVertex(spaceDim);
+  scalar_array slipVertex(spaceDim);
   const ALE::Obj<RealSection>& slipSection = _fields->get("slip").section();
   assert(!slipSection.isNull());
 
-  double_array slipRateVertex(spaceDim);
+  scalar_array slipRateVertex(spaceDim);
   const ALE::Obj<RealSection>& slipRateSection =
       _fields->get("slip rate").section();
   assert(!slipRateSection.isNull());
@@ -261,11 +261,11 @@
   const ALE::Obj<RealSection>& areaSection = _fields->get("area").section();
   assert(!areaSection.isNull());
 
-  double_array lagrangeTVertex(spaceDim);
+  scalar_array lagrangeTVertex(spaceDim);
   const ALE::Obj<RealSection>& dispTSection = fields->get("disp(t)").section();
   assert(!dispTSection.isNull());
 
-  double_array lagrangeTIncrVertex(spaceDim);
+  scalar_array lagrangeTIncrVertex(spaceDim);
   const ALE::Obj<RealSection>& dispTIncrSection =
       fields->get("dispIncr(t->t+dt)").section();
   assert(!dispTIncrSection.isNull());
@@ -285,7 +285,7 @@
       slipRateVertex.size());
 
     // Get total fault area asssociated with vertex (assembled over all cells)
-    const double* areaVertex = areaSection->restrictPoint(v_fault);
+    const PylithScalar* areaVertex = areaSection->restrictPoint(v_fault);
     assert(0 != areaVertex);
     assert(1 == areaSection->getFiberDimension(v_fault));
 
@@ -312,26 +312,26 @@
     // friction.
     switch (spaceDim) { // switch
     case 1: { // case 1
-      const double slipMag = 0.0;
-      const double slipRateMag = 0.0;
-      const double tractionNormal = tractionTpdtVertex[0];
+      const PylithScalar slipMag = 0.0;
+      const PylithScalar slipRateMag = 0.0;
+      const PylithScalar tractionNormal = tractionTpdtVertex[0];
       _friction->updateStateVars(slipMag, slipRateMag, tractionNormal, v_fault);
       break;
     } // case 1
     case 2: { // case 2
-      const double slipMag = fabs(slipVertex[0]);
-      const double slipRateMag = fabs(slipRateVertex[0]);
-      const double tractionNormal = tractionTpdtVertex[1];
+      const PylithScalar slipMag = fabs(slipVertex[0]);
+      const PylithScalar slipRateMag = fabs(slipRateVertex[0]);
+      const PylithScalar tractionNormal = tractionTpdtVertex[1];
       _friction->updateStateVars(slipMag, slipRateMag, tractionNormal, v_fault);
       break;
     } // case 2
     case 3: { // case 3
-      const double slipMag = 
+      const PylithScalar slipMag = 
 	sqrt(slipVertex[0]*slipVertex[0] + slipVertex[1]*slipVertex[1]);
-      const double slipRateMag = 
+      const PylithScalar slipRateMag = 
 	sqrt(slipRateVertex[0]*slipRateVertex[0] + 
 	     slipRateVertex[1]*slipRateVertex[1]);
-      const double tractionNormal = tractionTpdtVertex[2];
+      const PylithScalar tractionNormal = tractionTpdtVertex[2];
       _friction->updateStateVars(slipMag, slipRateMag, tractionNormal, v_fault);
       break;
     } // case 3
@@ -348,16 +348,16 @@
 void
 pylith::faults::FaultCohesiveDyn::constrainSolnSpace(
 				    topology::SolutionFields* const fields,
-				    const double t,
+				    const PylithScalar t,
 				    const topology::Jacobian& jacobian)
 { // constrainSolnSpace
   /// Member prototype for _constrainSolnSpaceXD()
   typedef void (pylith::faults::FaultCohesiveDyn::*constrainSolnSpace_fn_type)
-    (double_array*,
-     const double_array&,
-     const double_array&,
-     const double_array&,
-     const double);
+    (scalar_array*,
+     const scalar_array&,
+     const scalar_array&,
+     const scalar_array&,
+     const PylithScalar);
 
   assert(0 != fields);
   assert(0 != _quadrature);
@@ -373,18 +373,18 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Allocate arrays for vertex values
-  double_array tractionTVertex(spaceDim);
-  double_array tractionTpdtVertex(spaceDim);
-  double_array slipTpdtVertex(spaceDim);
-  double_array lagrangeTpdtVertex(spaceDim);
+  scalar_array tractionTVertex(spaceDim);
+  scalar_array tractionTpdtVertex(spaceDim);
+  scalar_array slipTpdtVertex(spaceDim);
+  scalar_array lagrangeTpdtVertex(spaceDim);
 
   // Get sections
-  double_array slipVertex(spaceDim);
-  double_array dSlipVertex(spaceDim);
+  scalar_array slipVertex(spaceDim);
+  scalar_array dSlipVertex(spaceDim);
   const ALE::Obj<RealSection>& slipSection = _fields->get("slip").section();
   assert(!slipSection.isNull());
 
-  double_array slipRateVertex(spaceDim);
+  scalar_array slipRateVertex(spaceDim);
   const ALE::Obj<RealSection>& slipRateSection =
       _fields->get("slip rate").section();
   assert(!slipRateSection.isNull());
@@ -392,25 +392,25 @@
   const ALE::Obj<RealSection>& areaSection = _fields->get("area").section();
   assert(!areaSection.isNull());
 
-  double_array orientationVertex(spaceDim * spaceDim);
+  scalar_array orientationVertex(spaceDim * spaceDim);
   const ALE::Obj<RealSection>& orientationSection =
       _fields->get("orientation").section();
   assert(!orientationSection.isNull());
 
-  double_array lagrangeTVertex(spaceDim);
-  double_array dispTVertexN(spaceDim);
-  double_array dispTVertexP(spaceDim);
+  scalar_array lagrangeTVertex(spaceDim);
+  scalar_array dispTVertexN(spaceDim);
+  scalar_array dispTVertexP(spaceDim);
   const ALE::Obj<RealSection>& dispTSection = fields->get("disp(t)").section();
   assert(!dispTSection.isNull());
 
-  double_array lagrangeTIncrVertex(spaceDim);
-  double_array dispTIncrVertexN(spaceDim);
-  double_array dispTIncrVertexP(spaceDim);
+  scalar_array lagrangeTIncrVertex(spaceDim);
+  scalar_array dispTIncrVertexN(spaceDim);
+  scalar_array dispTIncrVertexP(spaceDim);
   const ALE::Obj<RealSection>& dispTIncrSection =
       fields->get("dispIncr(t->t+dt)").section();
   assert(!dispTIncrSection.isNull());
 
-  double_array dLagrangeTpdtVertex(spaceDim);
+  scalar_array dLagrangeTpdtVertex(spaceDim);
   const ALE::Obj<RealSection>& dLagrangeTpdtSection =
       _fields->get("sensitivity dLagrange").section();
   assert(!dLagrangeTpdtSection.isNull());
@@ -457,7 +457,7 @@
       slipRateVertex.size());
 
     // Get total fault area asssociated with vertex (assembled over all cells)
-    const double* areaVertex = areaSection->restrictPoint(v_fault);
+    const PylithScalar* areaVertex = areaSection->restrictPoint(v_fault);
     assert(0 != areaVertex);
     assert(1 == areaSection->getFiberDimension(v_fault));
 
@@ -525,7 +525,7 @@
     slipSection->restrictPoint(v_fault, &slipVertex[0], slipVertex.size());
 
     // Get change in relative displacement.
-    const double* dispRelVertex = dispRelSection->restrictPoint(v_fault);
+    const PylithScalar* dispRelVertex = dispRelSection->restrictPoint(v_fault);
     assert(0 != dispRelVertex);
     assert(spaceDim == dispRelSection->getFiberDimension(v_fault));
 
@@ -542,7 +542,7 @@
 					dLagrangeTpdtVertex.size());
 
     // Only update slip if Lagrange multiplier is changing
-    double dLagrangeMag = 0.0;
+    PylithScalar dLagrangeMag = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       dLagrangeMag += dLagrangeTpdtVertex[iDim]*dLagrangeTpdtVertex[iDim];
     if (0.0 == dLagrangeMag)
@@ -558,7 +558,7 @@
     // Do not allow fault interpenetration and set fault opening to
     // zero if fault is under compression.
     const int indexN = spaceDim - 1;
-    const double lagrangeTpdtNormal = lagrangeTVertex[indexN] + 
+    const PylithScalar lagrangeTpdtNormal = lagrangeTVertex[indexN] + 
       lagrangeTIncrVertex[indexN] + dLagrangeTpdtVertex[indexN];
     if (lagrangeTpdtNormal < -_zeroTolerance || 
 	slipVertex[indexN] + dSlipVertex[indexN] < 0.0) {
@@ -613,26 +613,26 @@
 { // adjustSolnLumped
   /// Member prototype for _constrainSolnSpaceXD()
   typedef void (pylith::faults::FaultCohesiveDyn::*constrainSolnSpace_fn_type)
-    (double_array*,
-     const double_array&,
-     const double_array&,
-     const double_array&,
-     const double);
+    (scalar_array*,
+     const scalar_array&,
+     const scalar_array&,
+     const scalar_array&,
+     const PylithScalar);
 
   /// Member prototype for _sensitivitySolveLumpedXD()
   typedef void (pylith::faults::FaultCohesiveDyn::*sensitivitySolveLumped_fn_type)
-    (double_array*,
-     const double_array&,
-     const double_array&,
-     const double_array&);
+    (scalar_array*,
+     const scalar_array&,
+     const scalar_array&,
+     const scalar_array&);
 
   /// Member prototype for _adjustSolnLumpedXD()
   typedef void (pylith::faults::FaultCohesiveDyn::*adjustSolnLumped_fn_type)
-    (double_array*, double_array*, double_array*,
-     const double_array&, const double_array&,
-     const double_array&, const double_array&,
-     const double_array&, const double_array&,
-     const double_array&, const double_array&);
+    (scalar_array*, scalar_array*, scalar_array*,
+     const scalar_array&, const scalar_array&,
+     const scalar_array&, const scalar_array&,
+     const scalar_array&, const scalar_array&,
+     const scalar_array&, const scalar_array&);
 
 
   assert(0 != fields);
@@ -665,21 +665,21 @@
   const int orientationSize = spaceDim * spaceDim;
 
   // Allocate arrays for vertex values
-  double_array tractionTVertex(spaceDim);
-  double_array tractionTpdtVertex(spaceDim);
-  double_array slipTpdtVertex(spaceDim);
-  double_array lagrangeTpdtVertex(spaceDim);
-  double_array dLagrangeTpdtVertex(spaceDim);
+  scalar_array tractionTVertex(spaceDim);
+  scalar_array tractionTpdtVertex(spaceDim);
+  scalar_array slipTpdtVertex(spaceDim);
+  scalar_array lagrangeTpdtVertex(spaceDim);
+  scalar_array dLagrangeTpdtVertex(spaceDim);
 
   // Update time step in friction (can vary).
   _friction->timeStep(_dt);
 
   // Get section information
-  double_array slipVertex(spaceDim);
+  scalar_array slipVertex(spaceDim);
   const ALE::Obj<RealSection>& slipSection = _fields->get("slip").section();
   assert(!slipSection.isNull());
 
-  double_array slipRateVertex(spaceDim);
+  scalar_array slipRateVertex(spaceDim);
   const ALE::Obj<RealSection>& slipRateSection =
       _fields->get("slip rate").section();
   assert(!slipRateSection.isNull());
@@ -687,20 +687,20 @@
   const ALE::Obj<RealSection>& areaSection = _fields->get("area").section();
   assert(!areaSection.isNull());
 
-  double_array orientationVertex(orientationSize);
+  scalar_array orientationVertex(orientationSize);
   const ALE::Obj<RealSection>& orientationSection =
       _fields->get("orientation").section();
   assert(!orientationSection.isNull());
 
-  double_array dispTVertexN(spaceDim);
-  double_array dispTVertexP(spaceDim);
-  double_array lagrangeTVertex(spaceDim);
+  scalar_array dispTVertexN(spaceDim);
+  scalar_array dispTVertexP(spaceDim);
+  scalar_array lagrangeTVertex(spaceDim);
   const ALE::Obj<RealSection>& dispTSection = fields->get("disp(t)").section();
   assert(!dispTSection.isNull());
 
-  double_array dispTIncrVertexN(spaceDim);
-  double_array dispTIncrVertexP(spaceDim);
-  double_array lagrangeTIncrVertex(spaceDim);
+  scalar_array dispTIncrVertexN(spaceDim);
+  scalar_array dispTIncrVertexP(spaceDim);
+  scalar_array lagrangeTIncrVertex(spaceDim);
   const ALE::Obj<RealSection>& dispTIncrSection =
       fields->get("dispIncr(t->t+dt)").section();
   assert(!dispTIncrSection.isNull());
@@ -709,13 +709,13 @@
     "dispIncr adjust").section();
   assert(!dispTIncrAdjSection.isNull());
 
-  double_array jacobianVertexN(spaceDim);
-  double_array jacobianVertexP(spaceDim);
+  scalar_array jacobianVertexN(spaceDim);
+  scalar_array jacobianVertexP(spaceDim);
   const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
   assert(!jacobianSection.isNull());
 
-  double_array residualVertexN(spaceDim);
-  double_array residualVertexP(spaceDim);
+  scalar_array residualVertexN(spaceDim);
+  scalar_array residualVertexP(spaceDim);
   const ALE::Obj<RealSection>& residualSection =
       fields->get("residual").section();
 
@@ -785,7 +785,7 @@
 				   slipRateVertex.size());
     
     // Get total fault area asssociated with vertex (assembled over all cells)
-    const double* areaVertex = areaSection->restrictPoint(v_fault);
+    const PylithScalar* areaVertex = areaSection->restrictPoint(v_fault);
     assert(0 != areaVertex);
     assert(1 == areaSection->getFiberDimension(v_fault));
     
@@ -867,7 +867,7 @@
       assert(jacobianVertexN[0] > 0.0);
       assert(jacobianVertexP[0] > 0.0);
 
-      const double dlp = lagrangeTIncrVertex[0];
+      const PylithScalar dlp = lagrangeTIncrVertex[0];
 
       // Update displacements at negative vertex
       dispTIncrVertexN[0] = +1.0 / jacobianVertexN[0] * dlp;
@@ -888,16 +888,16 @@
       assert(jacobianVertexN[0] == jacobianVertexN[1]);
       assert(jacobianVertexP[0] == jacobianVertexP[1]);
 
-      const double Cpx = orientationVertex[0];
-      const double Cpy = orientationVertex[1];
-      const double Cqx = orientationVertex[2];
-      const double Cqy = orientationVertex[3];
+      const PylithScalar Cpx = orientationVertex[0];
+      const PylithScalar Cpy = orientationVertex[1];
+      const PylithScalar Cqx = orientationVertex[2];
+      const PylithScalar Cqy = orientationVertex[3];
 
-      const double dlp = lagrangeTIncrVertex[0];
-      const double dlq = lagrangeTIncrVertex[1];
+      const PylithScalar dlp = lagrangeTIncrVertex[0];
+      const PylithScalar dlq = lagrangeTIncrVertex[1];
 
-      const double dlx = Cpx * dlp + Cqx * dlq;
-      const double dly = Cpy * dlp + Cqy * dlq;
+      const PylithScalar dlx = Cpx * dlp + Cqx * dlq;
+      const PylithScalar dly = Cpy * dlp + Cqy * dlq;
   
       // Update displacements at negative vertex.
       dispTIncrVertexN[0] = dlx / jacobianVertexN[0];
@@ -924,23 +924,23 @@
       assert(jacobianVertexP[0] == jacobianVertexP[1] && 
 	     jacobianVertexP[0] == jacobianVertexP[2]);
 
-      const double Cpx = orientationVertex[0];
-      const double Cpy = orientationVertex[1];
-      const double Cpz = orientationVertex[2];
-      const double Cqx = orientationVertex[3];
-      const double Cqy = orientationVertex[4];
-      const double Cqz = orientationVertex[5];
-      const double Crx = orientationVertex[6];
-      const double Cry = orientationVertex[7];
-      const double Crz = orientationVertex[8];
+      const PylithScalar Cpx = orientationVertex[0];
+      const PylithScalar Cpy = orientationVertex[1];
+      const PylithScalar Cpz = orientationVertex[2];
+      const PylithScalar Cqx = orientationVertex[3];
+      const PylithScalar Cqy = orientationVertex[4];
+      const PylithScalar Cqz = orientationVertex[5];
+      const PylithScalar Crx = orientationVertex[6];
+      const PylithScalar Cry = orientationVertex[7];
+      const PylithScalar Crz = orientationVertex[8];
 
-      const double dlp = lagrangeTIncrVertex[0];
-      const double dlq = lagrangeTIncrVertex[1];
-      const double dlr = lagrangeTIncrVertex[2];
+      const PylithScalar dlp = lagrangeTIncrVertex[0];
+      const PylithScalar dlq = lagrangeTIncrVertex[1];
+      const PylithScalar dlr = lagrangeTIncrVertex[2];
 
-      const double dlx = Cpx * dlp + Cqx * dlq + Crx * dlr;
-      const double dly = Cpy * dlp + Cqy * dlq + Cry * dlr;
-      const double dlz = Cpz * dlp + Cqz * dlq + Crz * dlr;
+      const PylithScalar dlx = Cpx * dlp + Cqx * dlq + Crx * dlr;
+      const PylithScalar dly = Cpy * dlp + Cqy * dlq + Cry * dlr;
+      const PylithScalar dlz = Cpz * dlp + Cqz * dlq + Crz * dlr;
 
       // Update displacements at negative vertex.
       dispTIncrVertexN[0] = dlx / jacobianVertexN[0];
@@ -1017,7 +1017,7 @@
   const int cohesiveDim = _faultMesh->dimension();
   const int spaceDim = _quadrature->spaceDim();
 
-  double scale = 0.0;
+  PylithScalar scale = 0.0;
   int fiberDim = 0;
   if (0 == strcasecmp("slip", name)) {
     const topology::Field<topology::SubMesh>& slip = _fields->get("slip");
@@ -1121,17 +1121,17 @@
     return;
 
   assert(0 != _normalizer);
-  const double pressureScale = _normalizer->pressureScale();
-  const double lengthScale = _normalizer->lengthScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
 
   // Get quadrature information
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
 
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Create section to hold initial tractions.
   _fields->add("initial forces", "initial_forces");
@@ -1142,8 +1142,8 @@
   forcesInitial.scale(pressureScale);
   const ALE::Obj<RealSection>& forcesInitialSection = forcesInitial.section();
   assert(!forcesInitialSection.isNull());
-  double_array forcesInitialCell(numBasis*spaceDim);
-  double_array tractionQuadPt(spaceDim);
+  scalar_array forcesInitialCell(numBasis*spaceDim);
+  scalar_array tractionQuadPt(spaceDim);
   UpdateAddVisitor forcesInitialVisitor(*forcesInitialSection,
 					&forcesInitialCell[0]);
 
@@ -1185,7 +1185,7 @@
   assert(0 != cs);
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     faultSieveMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates,
@@ -1204,7 +1204,7 @@
     _quadrature->computeGeometry(coordinatesCell, *c_iter);
 #endif
 
-    const double_array& quadPtsNonDim = _quadrature->quadPts();
+    const scalar_array& quadPtsNonDim = _quadrature->quadPts();
     quadPtsGlobal = quadPtsNonDim;
     _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
         lengthScale);
@@ -1230,15 +1230,15 @@
       tractionQuadPt /= pressureScale;
 
       // Get cell geometry information that depends on cell
-      const double_array& basis = _quadrature->basis();
-      const double_array& jacobianDet = _quadrature->jacobianDet();
+      const scalar_array& basis = _quadrature->basis();
+      const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
       // Integrate tractions over cell.
-      const double wt = quadWts[iQuadPt] * jacobianDet[iQuadPt];
+      const PylithScalar wt = quadWts[iQuadPt] * jacobianDet[iQuadPt];
       for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-	const double valI = wt*basis[iQuadPt*numBasis+iBasis];
+	const PylithScalar valI = wt*basis[iQuadPt*numBasis+iBasis];
 	for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-	  const double valIJ = valI * basis[iQuadPt*numBasis+jBasis];
+	  const PylithScalar valIJ = valI * basis[iQuadPt*numBasis+jBasis];
 	  for (int iDim=0; iDim < spaceDim; ++iDim)
 	    forcesInitialCell[iBasis*spaceDim+iDim] += 
 	      tractionQuadPt[iDim] * valIJ;
@@ -1259,8 +1259,8 @@
   const ALE::Obj<RealSection>& orientationSection =
     _fields->get("orientation").section();
 
-  double_array forcesInitialVertexFault(spaceDim);
-  double_array forcesInitialVertexGlobal(spaceDim);
+  scalar_array forcesInitialVertexFault(spaceDim);
+  scalar_array forcesInitialVertexGlobal(spaceDim);
 
   const int numVertices = _cohesiveVertices.size();
   for (int iVertex=0; iVertex < numVertices; ++iVertex) {
@@ -1269,7 +1269,7 @@
     assert(orientationSize == orientationSection->getFiberDimension(v_fault));
     assert(spaceDim == forcesInitialSection->getFiberDimension(v_fault));
 
-    const double* orientationVertex = 
+    const PylithScalar* orientationVertex = 
       orientationSection->restrictPoint(v_fault);
 
     forcesInitialSection->restrictPoint(v_fault, 
@@ -1305,7 +1305,7 @@
 
   // Fiber dimension of tractions matches spatial dimension.
   const int fiberDim = _quadrature->spaceDim();
-  double_array tractionsVertex(fiberDim);
+  scalar_array tractionsVertex(fiberDim);
 
   // Get sections.
   const ALE::Obj<RealSection>& areaSection = _fields->get("area").section();
@@ -1324,7 +1324,7 @@
 
     //logger.stagePop();
   } // if
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
   tractions->label("traction");
   tractions->scale(pressureScale);
   tractions->zero();
@@ -1338,9 +1338,9 @@
     assert(fiberDim == tractionsSection->getFiberDimension(v_fault));
     assert(1 == areaSection->getFiberDimension(v_fault));
 
-    const double* dispTVertex = dispTSection->restrictPoint(v_lagrange);
+    const PylithScalar* dispTVertex = dispTSection->restrictPoint(v_lagrange);
     assert(0 != dispTVertex);
-    const double* areaVertex = areaSection->restrictPoint(v_fault);
+    const PylithScalar* areaVertex = areaSection->restrictPoint(v_fault);
     assert(0 != areaVertex);
 
     for (int i=0; i < fiberDim; ++i)
@@ -1372,8 +1372,8 @@
 
   // Fiber dimension of tractions matches spatial dimension.
   const int spaceDim = _quadrature->spaceDim();
-  double_array tractionsVertexGlobal(spaceDim);
-  double_array tractionsVertexFault(spaceDim);
+  scalar_array tractionsVertexGlobal(spaceDim);
+  scalar_array tractionsVertexFault(spaceDim);
 
   // Get sections.
   const ALE::Obj<RealSection>& areaSection = _fields->get("area").section();
@@ -1396,7 +1396,7 @@
 
     //logger.stagePop();
   } // if
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
   tractions->label("initial_traction");
   tractions->scale(pressureScale);
   tractions->zero();
@@ -1409,12 +1409,12 @@
     assert(spaceDim == tractionsSection->getFiberDimension(v_fault));
     assert(1 == areaSection->getFiberDimension(v_fault));
 
-    const double* forcesInitialVertex = 
+    const PylithScalar* forcesInitialVertex = 
       forcesInitialSection->restrictPoint(v_fault);
     assert(0 != forcesInitialVertex);
-    const double* areaVertex = areaSection->restrictPoint(v_fault);
+    const PylithScalar* areaVertex = areaSection->restrictPoint(v_fault);
     assert(0 != areaVertex);
-    const double* orientationVertex = 
+    const PylithScalar* orientationVertex = 
       orientationSection->restrictPoint(v_fault);
     assert(0 != orientationVertex);
 
@@ -1452,17 +1452,17 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Get section information
-  double_array velocityVertexN(spaceDim);
-  double_array velocityVertexP(spaceDim);
+  scalar_array velocityVertexN(spaceDim);
+  scalar_array velocityVertexP(spaceDim);
   const ALE::Obj<RealSection>& velocitySection =
       fields.get("velocity(t)").section();
   assert(!velocitySection.isNull());
 
-  double_array slipRateVertex(spaceDim);
+  scalar_array slipRateVertex(spaceDim);
   const ALE::Obj<RealSection>& slipRateSection =
       _fields->get("slip rate").section();
 
-  double_array orientationVertex(spaceDim*spaceDim);
+  scalar_array orientationVertex(spaceDim*spaceDim);
   const ALE::Obj<RealSection>& orientationSection =
       _fields->get("orientation").section();
   assert(!orientationSection.isNull());
@@ -1475,15 +1475,15 @@
     const int v_positive = _cohesiveVertices[iVertex].positive;
 
     // Get values
-    const double* velocityVertexN = velocitySection->restrictPoint(v_negative);
+    const PylithScalar* velocityVertexN = velocitySection->restrictPoint(v_negative);
     assert(0 != velocityVertexN);
     assert(spaceDim == velocitySection->getFiberDimension(v_negative));
 
-    const double* velocityVertexP = velocitySection->restrictPoint(v_positive);
+    const PylithScalar* velocityVertexP = velocitySection->restrictPoint(v_positive);
     assert(0 != velocityVertexP);
     assert(spaceDim == velocitySection->getFiberDimension(v_positive));
 
-    const double* orientationVertex = orientationSection->restrictPoint(v_fault);
+    const PylithScalar* orientationVertex = orientationSection->restrictPoint(v_fault);
     assert(0 != orientationVertex);
     assert(spaceDim*spaceDim == orientationSection->getFiberDimension(v_fault));
 
@@ -1576,9 +1576,9 @@
     PetscErrorCode err = 0;
     err = KSPCreate(_faultMesh->comm(), &_ksp); CHECK_PETSC_ERROR(err);
     err = KSPSetInitialGuessNonzero(_ksp, PETSC_FALSE); CHECK_PETSC_ERROR(err);
-    double rtol = 0.0;
-    double atol = 0.0;
-    double dtol = 0.0;
+    PylithScalar rtol = 0.0;
+    PylithScalar atol = 0.0;
+    PylithScalar dtol = 0.0;
     int maxIters = 0;
     err = KSPGetTolerances(_ksp, &rtol, &atol, &dtol, &maxIters); 
     CHECK_PETSC_ERROR(err);
@@ -1650,7 +1650,7 @@
   assert(!solutionFaultSection.isNull());
 
   // Visitor for Jacobian matrix associated with fault.
-  double_array jacobianSubCell(submatrixSize);
+  scalar_array jacobianSubCell(submatrixSize);
   assert(0 != _jacobian);
   const PetscMat jacobianFaultMatrix = _jacobian->matrix();
   assert(0 != jacobianFaultMatrix);
@@ -1726,7 +1726,7 @@
   const int spaceDim = _quadrature->spaceDim();
 
   // Compute residual -C^T dLagrange
-  double_array residualVertex(spaceDim);
+  scalar_array residualVertex(spaceDim);
   topology::Field<topology::SubMesh>& residual =
       _fields->get("sensitivity residual");
   const ALE::Obj<RealSection>& residualSection = residual.section();
@@ -1739,17 +1739,17 @@
       _fields->get("orientation").section();
   assert(!orientationSection.isNull());
 
-  const double sign = (negativeSide) ? -1.0 : 1.0;
+  const PylithScalar sign = (negativeSide) ? -1.0 : 1.0;
 
   const int numVertices = _cohesiveVertices.size();
   for (int iVertex=0; iVertex < numVertices; ++iVertex) {
     const int v_fault = _cohesiveVertices[iVertex].fault;
 
-    const double* dLagrangeVertex = dLagrangeSection->restrictPoint(v_fault);
+    const PylithScalar* dLagrangeVertex = dLagrangeSection->restrictPoint(v_fault);
     assert(0 != dLagrangeVertex);
     assert(spaceDim == dLagrangeSection->getFiberDimension(v_fault));
 
-    const double* orientationVertex = orientationSection->restrictPoint(v_fault);
+    const PylithScalar* orientationVertex = orientationSection->restrictPoint(v_fault);
     assert(0 != orientationVertex);
     assert(spaceDim*spaceDim == orientationSection->getFiberDimension(v_fault));
 
@@ -1812,13 +1812,13 @@
 
   const int spaceDim = _quadrature->spaceDim();
 
-  double_array dispVertex(spaceDim);
+  scalar_array dispVertex(spaceDim);
   const ALE::Obj<RealSection>& solutionSection =
       _fields->get("sensitivity solution").section();
   const ALE::Obj<RealSection>& dispRelSection =
     _fields->get("sensitivity dispRel").section();
 
-  const double sign = (negativeSide) ? -1.0 : 1.0;
+  const PylithScalar sign = (negativeSide) ? -1.0 : 1.0;
 
   const int numVertices = _cohesiveVertices.size();
   for (int iVertex=0; iVertex < numVertices; ++iVertex) {
@@ -1837,18 +1837,18 @@
 // Solve slip/Lagrange multiplier sensitivity problem for case of lumped Jacobian in 1-D.
 void
 pylith::faults::FaultCohesiveDyn::_sensitivitySolveLumped1D(
-                                     double_array* slip,
-				     const double_array& dLagrangeTpdt,
-				     const double_array& jacobianN,
-				     const double_array& jacobianP)
+                                     scalar_array* slip,
+				     const scalar_array& dLagrangeTpdt,
+				     const scalar_array& jacobianN,
+				     const scalar_array& jacobianP)
 { // _sensitivitySolveLumped1D
   assert(0 != slip);
 
   // Sensitivity of slip to changes in the Lagrange multipliers
-  const double Spp = 1.0 / jacobianN[0] + 1.0
+  const PylithScalar Spp = 1.0 / jacobianN[0] + 1.0
     / jacobianP[0];
 
-  const double dlp = dLagrangeTpdt[0];
+  const PylithScalar dlp = dLagrangeTpdt[0];
   (*slip)[0] -= Spp * dlp;
 
   PetscLogFlops(2);
@@ -1858,10 +1858,10 @@
 // Solve slip/Lagrange multiplier sensitivity problem for case of lumped Jacobian in 2-D.
 void
 pylith::faults::FaultCohesiveDyn::_sensitivitySolveLumped2D(
-                                     double_array* slip,
-				     const double_array& dLagrangeTpdt,
-				     const double_array& jacobianN,
-				     const double_array& jacobianP)
+                                     scalar_array* slip,
+				     const scalar_array& dLagrangeTpdt,
+				     const scalar_array& jacobianN,
+				     const scalar_array& jacobianP)
 { // _sensitivitySolveLumped2D
   assert(0 != slip);
 
@@ -1875,11 +1875,11 @@
   assert(jacobianN[0] == jacobianN[1]);
   assert(jacobianP[0] == jacobianP[1]);
   
-  const double Spp = 1.0 / jacobianN[0] + 1.0 / jacobianP[0];
-  const double Sqq = Spp;
+  const PylithScalar Spp = 1.0 / jacobianN[0] + 1.0 / jacobianP[0];
+  const PylithScalar Sqq = Spp;
 
-  const double dlp = dLagrangeTpdt[0];
-  const double dlq = dLagrangeTpdt[1];
+  const PylithScalar dlp = dLagrangeTpdt[0];
+  const PylithScalar dlq = dLagrangeTpdt[1];
   (*slip)[0] -= Spp * dlp;
   (*slip)[1] -= Sqq * dlq;
 
@@ -1890,10 +1890,10 @@
 // Solve slip/Lagrange multiplier sensitivity problem for case of lumped Jacobian in 3-D.
 void
 pylith::faults::FaultCohesiveDyn::_sensitivitySolveLumped3D(
-                                     double_array* slip,
-				     const double_array& dLagrangeTpdt,
-				     const double_array& jacobianN,
-				     const double_array& jacobianP)
+                                     scalar_array* slip,
+				     const scalar_array& dLagrangeTpdt,
+				     const scalar_array& jacobianN,
+				     const scalar_array& jacobianP)
 { // _sensitivitySolveLumped3D
   assert(0 != slip);
 
@@ -1910,13 +1910,13 @@
 	 jacobianP[0] == jacobianP[2]);
 
 
-  const double Spp = 1.0 / jacobianN[0] + 1.0 / jacobianP[0];
-  const double Sqq = Spp;
-  const double Srr = Spp;
+  const PylithScalar Spp = 1.0 / jacobianN[0] + 1.0 / jacobianP[0];
+  const PylithScalar Sqq = Spp;
+  const PylithScalar Srr = Spp;
 
-  const double dlp = dLagrangeTpdt[0];
-  const double dlq = dLagrangeTpdt[1];
-  const double dlr = dLagrangeTpdt[2];
+  const PylithScalar dlp = dLagrangeTpdt[0];
+  const PylithScalar dlq = dLagrangeTpdt[1];
+  const PylithScalar dlr = dLagrangeTpdt[2];
   (*slip)[0] -= Spp * dlp;
   (*slip)[1] -= Sqq * dlq;
   (*slip)[2] -= Srr * dlr;
@@ -1927,11 +1927,11 @@
 // ----------------------------------------------------------------------
 // Constrain solution space in 1-D.
 void
-pylith::faults::FaultCohesiveDyn::_constrainSolnSpace1D(double_array* dLagrangeTpdt,
-         const double_array& slip,
-         const double_array& sliprate,
-         const double_array& tractionTpdt,
-         const double area)
+pylith::faults::FaultCohesiveDyn::_constrainSolnSpace1D(scalar_array* dLagrangeTpdt,
+         const scalar_array& slip,
+         const scalar_array& sliprate,
+         const scalar_array& tractionTpdt,
+         const PylithScalar area)
 { // _constrainSolnSpace1D
   assert(0 != dLagrangeTpdt);
 
@@ -1940,7 +1940,7 @@
     } else {
       // if tension, then traction is zero.
 
-      const double dlp = -tractionTpdt[0] * area;
+      const PylithScalar dlp = -tractionTpdt[0] * area;
       (*dLagrangeTpdt)[0] = dlp;
     } // else
 
@@ -1950,23 +1950,23 @@
 // ----------------------------------------------------------------------
 // Constrain solution space in 2-D.
 void
-pylith::faults::FaultCohesiveDyn::_constrainSolnSpace2D(double_array* dLagrangeTpdt,
-         const double_array& slip,
-         const double_array& slipRate,
-         const double_array& tractionTpdt,
-         const double area)
+pylith::faults::FaultCohesiveDyn::_constrainSolnSpace2D(scalar_array* dLagrangeTpdt,
+         const scalar_array& slip,
+         const scalar_array& slipRate,
+         const scalar_array& tractionTpdt,
+         const PylithScalar area)
 { // _constrainSolnSpace2D
   assert(0 != dLagrangeTpdt);
 
-  const double slipMag = fabs(slip[0]);
-  const double slipRateMag = fabs(slipRate[0]);
+  const PylithScalar slipMag = fabs(slip[0]);
+  const PylithScalar slipRateMag = fabs(slipRate[0]);
 
-  const double tractionNormal = tractionTpdt[1];
-  const double tractionShearMag = fabs(tractionTpdt[0]);
+  const PylithScalar tractionNormal = tractionTpdt[1];
+  const PylithScalar tractionShearMag = fabs(tractionTpdt[0]);
 
   if (tractionNormal < 0 && 0.0 == slip[1]) {
     // if in compression and no opening
-    const double frictionStress = _friction->calcFriction(slipMag, slipRateMag,
+    const PylithScalar frictionStress = _friction->calcFriction(slipMag, slipRateMag,
 							  tractionNormal);
     if (tractionShearMag > frictionStress || slipRateMag > 0.0) {
       // traction is limited by friction, so have sliding OR
@@ -1975,7 +1975,7 @@
       if (tractionShearMag > 0.0) {
 	// Update traction increment based on value required to stick
 	// versus friction
-	const double dlp = -(tractionShearMag - frictionStress) * area *
+	const PylithScalar dlp = -(tractionShearMag - frictionStress) * area *
 	  tractionTpdt[0] / tractionShearMag;
 	(*dLagrangeTpdt)[0] = dlp;
 	(*dLagrangeTpdt)[1] = 0.0;
@@ -2000,27 +2000,27 @@
 // ----------------------------------------------------------------------
 // Constrain solution space in 3-D.
 void
-pylith::faults::FaultCohesiveDyn::_constrainSolnSpace3D(double_array* dLagrangeTpdt,
-         const double_array& slip,
-         const double_array& slipRate,
-         const double_array& tractionTpdt,
-         const double area)
+pylith::faults::FaultCohesiveDyn::_constrainSolnSpace3D(scalar_array* dLagrangeTpdt,
+         const scalar_array& slip,
+         const scalar_array& slipRate,
+         const scalar_array& tractionTpdt,
+         const PylithScalar area)
 { // _constrainSolnSpace3D
   assert(0 != dLagrangeTpdt);
 
-  const double slipShearMag = sqrt(slip[0] * slip[0] +
+  const PylithScalar slipShearMag = sqrt(slip[0] * slip[0] +
              slip[1] * slip[1]);
-  double slipRateMag = sqrt(slipRate[0]*slipRate[0] + 
+  PylithScalar slipRateMag = sqrt(slipRate[0]*slipRate[0] + 
             slipRate[1]*slipRate[1]);
   
-  const double tractionNormal = tractionTpdt[2];
-  const double tractionShearMag = 
+  const PylithScalar tractionNormal = tractionTpdt[2];
+  const PylithScalar tractionShearMag = 
     sqrt(tractionTpdt[0] * tractionTpdt[0] +
 	 tractionTpdt[1] * tractionTpdt[1]);
   
   if (tractionNormal < 0.0 && 0.0 == slip[2]) {
     // if in compression and no opening
-    const double frictionStress = 
+    const PylithScalar frictionStress = 
       _friction->calcFriction(slipShearMag, slipRateMag, tractionNormal);
     if (tractionShearMag > frictionStress || slipRateMag > 0.0) {
       // traction is limited by friction, so have sliding OR
@@ -2029,9 +2029,9 @@
       if (tractionShearMag > 0.0) {
 	// Update traction increment based on value required to stick
 	// versus friction
-	const double dlp = -(tractionShearMag - frictionStress) * area *
+	const PylithScalar dlp = -(tractionShearMag - frictionStress) * area *
 	  tractionTpdt[0] / tractionShearMag;
-	const double dlq = -(tractionShearMag - frictionStress) * area *
+	const PylithScalar dlq = -(tractionShearMag - frictionStress) * area *
 	  tractionTpdt[1] / tractionShearMag;
 	
 	(*dLagrangeTpdt)[0] = dlp;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveDyn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -90,7 +90,7 @@
    */
   virtual
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Update state variables as needed.
@@ -99,7 +99,7 @@
    * @param fields Solution fields
    * @param mesh Finite-element mesh
    */
-  void updateStateVars(const double t,
+  void updateStateVars(const PylithScalar t,
 		       topology::SolutionFields* const fields);
 
   /** Constrain solution space based on friction.
@@ -109,7 +109,7 @@
    * @param jacobian Sparse matrix for system Jacobian.
    */
   void constrainSolnSpace(topology::SolutionFields* const fields,
-			  const double t,
+			  const PylithScalar t,
 			  const topology::Jacobian& jacobian);
 
   /** Adjust solution from solver with lumped Jacobian to match Lagrange
@@ -205,10 +205,10 @@
    * @param jacobianN Jacobian for vertex on - side of the fault.
    * @param jacobianP Jacobian for vertex on + side of the fault.
    */
-  void _sensitivitySolveLumped1D(double_array* slip,
-                                 const double_array& dLagrangeTpdt,
-                                 const double_array& jacobianN,
-                                 const double_array& jacobianP);
+  void _sensitivitySolveLumped1D(scalar_array* slip,
+                                 const scalar_array& dLagrangeTpdt,
+                                 const scalar_array& jacobianN,
+                                 const scalar_array& jacobianP);
 
   /** Solve slip/Lagrange multiplier sensitivity problem for case of lumped Jacobian in 2-D.
    *
@@ -217,10 +217,10 @@
    * @param jacobianN Jacobian for vertex on - side of the fault.
    * @param jacobianP Jacobian for vertex on + side of the fault.
    */
-  void _sensitivitySolveLumped2D(double_array* slip,
-                                 const double_array& dLagrangeTpdt,
-                                 const double_array& jacobianN,
-                                 const double_array& jacobianP);
+  void _sensitivitySolveLumped2D(scalar_array* slip,
+                                 const scalar_array& dLagrangeTpdt,
+                                 const scalar_array& jacobianN,
+                                 const scalar_array& jacobianP);
 
   /** Solve slip/Lagrange multiplier sensitivity problem for case of lumped Jacobian in 3-D.
    *
@@ -229,10 +229,10 @@
    * @param jacobianN Jacobian for vertex on - side of the fault.
    * @param jacobianP Jacobian for vertex on + side of the fault.
    */
-  void _sensitivitySolveLumped3D(double_array* slip,
-                                 const double_array& dLagrangeTpdt,
-                                 const double_array& jacobianN,
-                                 const double_array& jacobianP);
+  void _sensitivitySolveLumped3D(scalar_array* slip,
+                                 const scalar_array& dLagrangeTpdt,
+                                 const scalar_array& jacobianN,
+                                 const scalar_array& jacobianP);
 
   /** Constrain solution space with lumped Jacobian in 1-D.
    *
@@ -242,11 +242,11 @@
    * @param tractionTpdt Fault traction assoc. w/Lagrange multiplier vertex.
    * @param area Fault area associated w/Lagrange multiplier vertex.
    */
-  void _constrainSolnSpace1D(double_array* dLagrangeTpdt,
-           const double_array& slip,
-           const double_array& slipRate,
-           const double_array& tractionTpdt,
-           const double area);
+  void _constrainSolnSpace1D(scalar_array* dLagrangeTpdt,
+           const scalar_array& slip,
+           const scalar_array& slipRate,
+           const scalar_array& tractionTpdt,
+           const PylithScalar area);
 
   /** Constrain solution space with lumped Jacobian in 2-D.
    *
@@ -256,11 +256,11 @@
    * @param tractionTpdt Fault traction assoc. w/Lagrange multiplier vertex.
    * @param area Fault area associated w/Lagrange multiplier vertex.
    */
-  void _constrainSolnSpace2D(double_array* dLagrangeTpdt,
-           const double_array& slip,
-           const double_array& slipRate,
-           const double_array& tractionTpdt,
-           const double area);
+  void _constrainSolnSpace2D(scalar_array* dLagrangeTpdt,
+           const scalar_array& slip,
+           const scalar_array& slipRate,
+           const scalar_array& tractionTpdt,
+           const PylithScalar area);
 
   /** Constrain solution space with lumped Jacobian in 3-D.
    *
@@ -270,11 +270,11 @@
    * @param tractionTpdt Fault traction assoc. w/Lagrange multiplier vertex.
    * @param area Fault area associated w/Lagrange multiplier vertex.
    */
-  void _constrainSolnSpace3D(double_array* dLagrangeTpdt,
-           const double_array& slip,
-           const double_array& slipRate,
-           const double_array& tractionTpdt,
-           const double area);
+  void _constrainSolnSpace3D(scalar_array* dLagrangeTpdt,
+           const scalar_array& slip,
+           const scalar_array& slipRate,
+           const scalar_array& tractionTpdt,
+           const PylithScalar area);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
@@ -291,7 +291,7 @@
   PetscKSP _ksp; ///< PETSc KSP linear solver for sensitivity problem.
 
   /// Minimum resolvable value accounting for roundoff errors
-  static const double _zeroTolerance;
+  static const PylithScalar _zeroTolerance;
 
 // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -119,7 +119,7 @@
 void
 pylith::faults::FaultCohesiveKin::integrateResidual(
 			     const topology::Field<topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     topology::SolutionFields* const fields)
 { // integrateResidual
   assert(0 != fields);
@@ -163,7 +163,7 @@
   const int slipStrLen = strlen("final_slip");
   const int timeStrLen = strlen("slip_time");
 
-  double scale = 0.0;
+  PylithScalar scale = 0.0;
   int fiberDim = 0;
   if (0 == strcasecmp("slip", name)) {
     const topology::Field<topology::SubMesh>& slip = _fields->get("slip");

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveKin.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -83,7 +83,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Get vertex field associated with integrator.

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
 typedef pylith::topology::SubMesh::SieveMesh SieveSubMesh;
 typedef pylith::topology::Field<pylith::topology::SubMesh>::RestrictVisitor RestrictVisitor;
 typedef pylith::topology::Field<pylith::topology::SubMesh>::UpdateAddVisitor UpdateAddVisitor;
-typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveSubMesh::order_type,PetscInt> IndicesVisitor;
+typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveSubMesh::order_type,PylithInt> IndicesVisitor;
 
 // ----------------------------------------------------------------------
 // Default constructor.
@@ -135,7 +135,7 @@
   dist.allocate();
   const ALE::Obj<RealSection>& distSection = dist.section();
   assert(!distSection.isNull());
-  const double rank = (double) distSection->commRank();
+  const PylithScalar rank = (PylithScalar) distSection->commRank();
 
   // Loop over cells in fault mesh, compute area
   for (SieveSubMesh::label_sequence::iterator c_iter = cellsBegin; c_iter
@@ -188,7 +188,7 @@
 void
 pylith::faults::FaultCohesiveLagrange::integrateResidual(
 			 const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields)
 { // integrateResidual
   assert(0 != fields);
@@ -216,20 +216,20 @@
   const int orientationSize = spaceDim * spaceDim;
 
   // Allocate vectors for vertex values
-  double_array slipVertex(spaceDim);
-  double_array orientationVertex(orientationSize);
-  double_array dispTVertexN(spaceDim);
-  double_array dispTVertexP(spaceDim);
-  double_array dispTVertexL(spaceDim);
-  double_array dispTIncrVertexN(spaceDim);
-  double_array dispTIncrVertexP(spaceDim);
-  double_array dispTIncrVertexL(spaceDim);
-  double_array dispTpdtVertexN(spaceDim);
-  double_array dispTpdtVertexP(spaceDim);
-  double_array dispTpdtVertexL(spaceDim);
-  double_array residualVertexN(spaceDim);
-  double_array residualVertexP(spaceDim);
-  double_array residualVertexL(spaceDim);
+  scalar_array slipVertex(spaceDim);
+  scalar_array orientationVertex(orientationSize);
+  scalar_array dispTVertexN(spaceDim);
+  scalar_array dispTVertexP(spaceDim);
+  scalar_array dispTVertexL(spaceDim);
+  scalar_array dispTIncrVertexN(spaceDim);
+  scalar_array dispTIncrVertexP(spaceDim);
+  scalar_array dispTIncrVertexL(spaceDim);
+  scalar_array dispTpdtVertexN(spaceDim);
+  scalar_array dispTpdtVertexP(spaceDim);
+  scalar_array dispTpdtVertexL(spaceDim);
+  scalar_array residualVertexN(spaceDim);
+  scalar_array residualVertexP(spaceDim);
+  scalar_array residualVertexL(spaceDim);
 
   // Get sections
   topology::Field<topology::SubMesh>& slip = _fields->get("slip");
@@ -363,7 +363,7 @@
 void
 pylith::faults::FaultCohesiveLagrange::integrateJacobian(
 				   topology::Jacobian* jacobian,
-				   const double t,
+				   const PylithScalar t,
 				   topology::SolutionFields* const fields)
 { // integrateJacobian
   assert(0 != jacobian);
@@ -388,8 +388,8 @@
   const int orientationSize = spaceDim * spaceDim;
 
   // Allocate vectors for vertex values
-  double_array orientationVertex(orientationSize);
-  double_array jacobianVertex(spaceDim*spaceDim);
+  scalar_array orientationVertex(orientationSize);
+  scalar_array jacobianVertex(spaceDim*spaceDim);
   int_array indicesL(spaceDim);
   int_array indicesN(spaceDim);
   int_array indicesP(spaceDim);
@@ -525,7 +525,7 @@
 void
 pylith::faults::FaultCohesiveLagrange::integrateJacobian(
 	                  topology::Field<topology::Mesh>* jacobian,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateJacobian
   assert(0 != jacobian);
@@ -547,7 +547,7 @@
   // multipliers as part of the solve.
 
   const int spaceDim = _quadrature->spaceDim();
-  double_array jacobianVertex(spaceDim);
+  scalar_array jacobianVertex(spaceDim);
   jacobianVertex = 1.0;
   const ALE::Obj<RealSection>& jacobianSection = jacobian->section();
   assert(!jacobianSection.isNull());
@@ -655,12 +655,12 @@
   const int orientationSize = spaceDim * spaceDim;
 
   // Allocate vectors for vertex values
-  double_array orientationVertex(orientationSize);
-  double_array jacobianVertexP(spaceDim*spaceDim);
-  double_array jacobianVertexN(spaceDim*spaceDim);
-  double_array jacobianInvVertexP(spaceDim);
-  double_array jacobianInvVertexN(spaceDim);
-  double_array precondVertexL(spaceDim);
+  scalar_array orientationVertex(orientationSize);
+  scalar_array jacobianVertexP(spaceDim*spaceDim);
+  scalar_array jacobianVertexN(spaceDim*spaceDim);
+  scalar_array jacobianInvVertexP(spaceDim);
+  scalar_array jacobianInvVertexN(spaceDim);
+  scalar_array precondVertexL(spaceDim);
   int_array indicesN(spaceDim);
   int_array indicesP(spaceDim);
   int_array indicesRel(spaceDim);
@@ -821,27 +821,27 @@
   PetscBLASInt workSize = 6*nrowsF;
 
   // Allocate vectors for vertex values
-  double_array preconditionerCell(matrixSizeF);
+  scalar_array preconditionerCell(matrixSizeF);
   int_array indicesN(nrowsF);
   int_array indicesP(nrowsF);
   int_array indicesLagrange(nrowsF);
-  double_array jacobianCellP(matrixSizeF);
-  double_array jacobianCellN(matrixSizeF);
-  double_array jacobianInvCellP(matrixSizeF);
-  double_array jacobianInvCellN(matrixSizeF);
-  double_array UN(matrixSizeF);
-  double_array UP(matrixSizeF);
-  double_array VNt(matrixSizeF);
-  double_array VPt(matrixSizeF);
-  double_array singularValuesN(nrowsF);
-  double_array singularValuesP(nrowsF);
-  double_array work(workSize);
+  scalar_array jacobianCellP(matrixSizeF);
+  scalar_array jacobianCellN(matrixSizeF);
+  scalar_array jacobianInvCellP(matrixSizeF);
+  scalar_array jacobianInvCellN(matrixSizeF);
+  scalar_array UN(matrixSizeF);
+  scalar_array UP(matrixSizeF);
+  scalar_array VNt(matrixSizeF);
+  scalar_array VPt(matrixSizeF);
+  scalar_array singularValuesN(nrowsF);
+  scalar_array singularValuesP(nrowsF);
+  scalar_array work(workSize);
 
   // Get sections
   const ALE::Obj<RealSection>& solutionSection = fields->solution().section();
   assert(!solutionSection.isNull());
 
-  double_array orientationCell(numBasis*orientationSize);
+  scalar_array orientationCell(numBasis*orientationSize);
   const ALE::Obj<RealSection>& orientationSection =
       _fields->get("orientation").section();
   assert(!orientationSection.isNull());
@@ -983,7 +983,7 @@
     // jacobianInvCellN and jacobianInvCellP if need separate place
     // for result.
     PetscBLASInt elemRows = nrowsF;
-    PetscScalar  one      = 1.0;
+    PylithScalar  one      = 1.0;
     PetscBLASInt berr;
 
 #if 0
@@ -999,9 +999,9 @@
     // Transpose matrices so we can call LAPACK
     for(int i = 0; i < nrowsF; ++i) {
       for(int j = 0; j < i; ++j) {
-        PetscInt    k  = i*nrowsF+j;
-        PetscInt    kp = j*nrowsF+i;
-        PetscScalar tmp;
+        PylithInt    k  = i*nrowsF+j;
+        PylithInt    kp = j*nrowsF+i;
+        PylithScalar tmp;
         tmp               = jacobianCellN[k];
         jacobianCellN[k]  = jacobianCellN[kp];
         jacobianCellN[kp] = tmp;
@@ -1051,9 +1051,9 @@
     // Transpose matrices from LAPACK
     for(int i = 0; i < nrowsF; ++i) {
       for(int j = 0; j < i; ++j) {
-        PetscInt    k  = i*nrowsF+j;
-        PetscInt    kp = j*nrowsF+i;
-        PetscScalar tmp;
+        PylithInt    k  = i*nrowsF+j;
+        PylithInt    kp = j*nrowsF+i;
+        PylithScalar tmp;
         tmp                  = jacobianInvCellN[k];
         jacobianInvCellN[k]  = jacobianInvCellN[kp];
         jacobianInvCellN[kp] = tmp;
@@ -1146,11 +1146,11 @@
 { // adjustSolnLumped
   /// Member prototype for _adjustSolnLumpedXD()
   typedef void (pylith::faults::FaultCohesiveLagrange::*adjustSolnLumped_fn_type)
-    (double_array*, double_array*, double_array*,
-     const double_array&, const double_array&, 
-     const double_array&, const double_array&, 
-     const double_array&, const double_array&, 
-     const double_array&, const double_array&);
+    (scalar_array*, scalar_array*, scalar_array*,
+     const scalar_array&, const scalar_array&, 
+     const scalar_array&, const scalar_array&, 
+     const scalar_array&, const scalar_array&, 
+     const scalar_array&, const scalar_array&);
 
   assert(0 != fields);
   assert(0 != _quadrature);
@@ -1180,34 +1180,34 @@
   const int orientationSize = spaceDim * spaceDim;
 
   // Get section information
-  double_array orientationVertex(orientationSize);
+  scalar_array orientationVertex(orientationSize);
   const ALE::Obj<RealSection>& orientationSection =
       _fields->get("orientation").section();
   assert(!orientationSection.isNull());
 
-  double_array slipVertex(spaceDim);
+  scalar_array slipVertex(spaceDim);
   const ALE::Obj<RealSection>& slipSection = _fields->get("slip").section();
   assert(!slipSection.isNull());
 
-  double_array jacobianVertexN(spaceDim);
-  double_array jacobianVertexP(spaceDim);
+  scalar_array jacobianVertexN(spaceDim);
+  scalar_array jacobianVertexP(spaceDim);
   const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
   assert(!jacobianSection.isNull());
 
-  double_array residualVertexN(spaceDim);
-  double_array residualVertexP(spaceDim);
+  scalar_array residualVertexN(spaceDim);
+  scalar_array residualVertexP(spaceDim);
   const ALE::Obj<RealSection>& residualSection =
       fields->get("residual").section();
   assert(!residualSection.isNull());
 
-  double_array dispTVertexN(spaceDim);
-  double_array dispTVertexP(spaceDim);
+  scalar_array dispTVertexN(spaceDim);
+  scalar_array dispTVertexP(spaceDim);
   const ALE::Obj<RealSection>& dispTSection = fields->get("disp(t)").section();
   assert(!dispTSection.isNull());
 
-  double_array dispTIncrVertexN(spaceDim);
-  double_array dispTIncrVertexP(spaceDim);
-  double_array lagrangeTIncrVertex(spaceDim);
+  scalar_array dispTIncrVertexN(spaceDim);
+  scalar_array dispTIncrVertexP(spaceDim);
+  scalar_array lagrangeTIncrVertex(spaceDim);
   const ALE::Obj<RealSection>& dispTIncrSection = fields->get(
     "dispIncr(t->t+dt)").section();
   assert(!dispTIncrSection.isNull());
@@ -1553,7 +1553,9 @@
   assert(0 != _faultMesh);
   assert(0 != _fields);
 
-  double_array upDirArray(upDir, 3);
+  scalar_array up(3);
+  for (int i=0; i < 3; ++i)
+    up[i] = upDir[i];
 
   // Get vertices in fault mesh.
   const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
@@ -1570,14 +1572,14 @@
   const int spaceDim = _quadrature->spaceDim();
   const int orientationSize = spaceDim * spaceDim;
   const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
-  const double_array& verticesRef = cellGeometry.vertices();
+  const scalar_array& verticesRef = cellGeometry.vertices();
   const int jacobianSize = (cohesiveDim > 0) ? spaceDim * cohesiveDim : 1;
-  const double_array& quadWts = _quadrature->quadWts();
-  double_array jacobian(jacobianSize);
-  double jacobianDet = 0;
-  double_array orientationVertex(orientationSize);
-  double_array coordinatesCell(numBasis * spaceDim);
-  double_array refCoordsVertex(cohesiveDim);
+  const scalar_array& quadWts = _quadrature->quadWts();
+  scalar_array jacobian(jacobianSize);
+  PylithScalar jacobianDet = 0;
+  scalar_array orientationVertex(orientationSize);
+  scalar_array coordinatesCell(numBasis * spaceDim);
+  scalar_array refCoordsVertex(cohesiveDim);
 
   // Allocate orientation field.
   _fields->add("orientation", "orientation");
@@ -1640,13 +1642,13 @@
     for (int v = 0; v < coneSize; ++v) {
       // Compute Jacobian and determinant of Jacobian at vertex
       memcpy(&refCoordsVertex[0], &verticesRef[v * cohesiveDim], cohesiveDim
-          * sizeof(double));
+          * sizeof(PylithScalar));
       cellGeometry.jacobian(&jacobian, &jacobianDet, coordinatesCell,
         refCoordsVertex);
 
       // Compute orientation
       cellGeometry.orientation(&orientationVertex, jacobian, jacobianDet,
-        upDirArray);
+        up);
 
       // Update orientation
       orientationSection->updateAddPoint(cone[v], &orientationVertex[0]);
@@ -1659,7 +1661,7 @@
   orientation.complete();
 
   // Loop over vertices, make orientation information unit magnitude
-  double_array vertexDir(orientationSize);
+  scalar_array vertexDir(orientationSize);
   int count = 0;
   for (SieveSubMesh::label_sequence::iterator v_iter = verticesBegin; v_iter
       != verticesEnd; ++v_iter, ++count) {
@@ -1667,7 +1669,7 @@
     orientationSection->restrictPoint(*v_iter, &orientationVertex[0],
       orientationVertex.size());
     for (int iDim = 0; iDim < spaceDim; ++iDim) {
-      double mag = 0;
+      PylithScalar mag = 0;
       for (int jDim = 0, index = iDim * spaceDim; jDim < spaceDim; ++jDim)
         mag += pow(orientationVertex[index + jDim], 2);
       mag = sqrt(mag);
@@ -1705,11 +1707,11 @@
       &orientationVertex[0], orientationVertex.size());
 
     assert(2 == spaceDim);
-    const double* shearDirVertex = &orientationVertex[0];
-    const double* normalDirVertex = &orientationVertex[2];
-    const double shearDirDot = 
+    const PylithScalar* shearDirVertex = &orientationVertex[0];
+    const PylithScalar* normalDirVertex = &orientationVertex[2];
+    const PylithScalar shearDirDot = 
       upDir[0] * shearDirVertex[0] + upDir[1] * shearDirVertex[1];
-    const double normalDirDot = 
+    const PylithScalar normalDirDot = 
       upDir[0] * normalDirVertex[0] + upDir[1] * normalDirVertex[1];
 
     const int ishear = 0;
@@ -1755,13 +1757,13 @@
       &orientationVertex[0], orientationVertex.size());
 
     assert(3 == spaceDim);
-    const double* dipDirVertex = &orientationVertex[3];
-    const double* normalDirVertex = &orientationVertex[6];
-    const double dipDirDot = 
+    const PylithScalar* dipDirVertex = &orientationVertex[3];
+    const PylithScalar* normalDirVertex = &orientationVertex[6];
+    const PylithScalar dipDirDot = 
       upDir[0]*dipDirVertex[0] + 
       upDir[1]*dipDirVertex[1] + 
       upDir[2]*dipDirVertex[2];
-    const double normalDirDot = 
+    const PylithScalar normalDirDot = 
       upDir[0]*normalDirVertex[0] +
       upDir[1]*normalDirVertex[1] +
       upDir[2]*normalDirVertex[2];
@@ -1807,10 +1809,10 @@
   const int numQuadPts = _quadrature->numQuadPts();
   const int spaceDim = _quadrature->spaceDim();
   const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
-  double jacobianDet = 0;
-  double_array areaCell(numBasis);
+  PylithScalar jacobianDet = 0;
+  scalar_array areaCell(numBasis);
 
   // Get vertices in fault mesh.
   const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
@@ -1833,7 +1835,7 @@
   assert(!areaSection.isNull());
   UpdateAddVisitor areaVisitor(*areaSection, &areaCell[0]);
 
-  double_array coordinatesCell(numBasis * spaceDim);
+  scalar_array coordinatesCell(numBasis * spaceDim);
   const ALE::Obj<RealSection>& coordinates = faultSieveMesh->getRealSection(
     "coordinates");
   assert(!coordinates.isNull());
@@ -1861,14 +1863,14 @@
 #endif
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute area
     for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
       for (int iBasis = 0; iBasis < numBasis; ++iBasis) {
-        const double dArea = wt * basis[iQuad * numBasis + iBasis];
+        const PylithScalar dArea = wt * basis[iQuad * numBasis + iBasis];
         areaCell[iBasis] += dArea;
       } // for
     } // for
@@ -1905,7 +1907,7 @@
 
   // Fiber dimension of tractions matches spatial dimension.
   const int spaceDim = _quadrature->spaceDim();
-  double_array tractionsVertex(spaceDim);
+  scalar_array tractionsVertex(spaceDim);
 
   // Get sections.
   const ALE::Obj<RealSection>& areaSection = _fields->get("area").section();
@@ -1927,7 +1929,7 @@
   assert(!tractionsSection.isNull());
   tractions->zero();
 
-  const double pressureScale = tractions->scale();
+  const PylithScalar pressureScale = tractions->scale();
 
   const int numVertices = _cohesiveVertices.size();
   for (int iVertex=0; iVertex < numVertices; ++iVertex) {
@@ -1938,9 +1940,9 @@
     assert(spaceDim == tractionsSection->getFiberDimension(v_fault));
     assert(1 == areaSection->getFiberDimension(v_fault));
 
-    const double* dispTVertex = dispTSection->restrictPoint(v_lagrange);
+    const PylithScalar* dispTVertex = dispTSection->restrictPoint(v_lagrange);
     assert(0 != dispTVertex);
-    const double* areaVertex = areaSection->restrictPoint(v_fault);
+    const PylithScalar* areaVertex = areaSection->restrictPoint(v_fault);
     assert(0 != areaVertex);
 
     for (int i = 0; i < spaceDim; ++i)
@@ -2097,17 +2099,17 @@
 // Adjust solution in lumped formulation to match slip for 1-D.
 void
 pylith::faults::FaultCohesiveLagrange::_adjustSolnLumped1D(
-					  double_array* lagrangeTIncr,
-					  double_array* dispTIncrN,
-					  double_array* dispTIncrP,
-					  const double_array& slip,
-					  const double_array& orientation,
-					  const double_array& dispTN,
-					  const double_array& dispTP,
-					  const double_array& residualN,
-					  const double_array& residualP,
-					  const double_array& jacobianN,
-					  const double_array& jacobianP)
+					  scalar_array* lagrangeTIncr,
+					  scalar_array* dispTIncrN,
+					  scalar_array* dispTIncrP,
+					  const scalar_array& slip,
+					  const scalar_array& orientation,
+					  const scalar_array& dispTN,
+					  const scalar_array& dispTP,
+					  const scalar_array& residualN,
+					  const scalar_array& residualP,
+					  const scalar_array& jacobianN,
+					  const scalar_array& jacobianP)
 { // _adjustSoln1D
   assert(0 != lagrangeTIncr);
   assert(0 != dispTIncrN);
@@ -2116,17 +2118,17 @@
   assert(jacobianN[0] > 0.0);
   assert(jacobianP[0] > 0.0);
   
-  const double Sinv = jacobianN[0] * jacobianP[0]
+  const PylithScalar Sinv = jacobianN[0] * jacobianP[0]
     / (jacobianN[0] + jacobianP[0]);
   
   // Aru = A_i^{-1} r_i - A_j^{-1} r_j + u_i - u_j
-  const double Aru = residualN[0] / jacobianN[0]
+  const PylithScalar Aru = residualN[0] / jacobianN[0]
     - residualP[0] / jacobianP[0] + dispTN[0]
     - dispTP[0];
   
   // dl_k = D^{-1}( - C_{ki} Aru - d_k)
-  const double Aruslip = -Aru - slip[0];
-  const double dlp = Sinv * Aruslip;
+  const PylithScalar Aruslip = -Aru - slip[0];
+  const PylithScalar dlp = Sinv * Aruslip;
   
   // Update displacements at negative vertex
   (*dispTIncrN)[0] = +1.0 / jacobianN[0] * dlp;
@@ -2144,17 +2146,17 @@
 // Adjust solution in lumped formulation to match slip for 2-D.
 void
 pylith::faults::FaultCohesiveLagrange::_adjustSolnLumped2D(
-					  double_array* lagrangeTIncr,
-					  double_array* dispTIncrN,
-					  double_array* dispTIncrP,
-					  const double_array& slip,
-					  const double_array& orientation,
-					  const double_array& dispTN,
-					  const double_array& dispTP,
-					  const double_array& residualN,
-					  const double_array& residualP,
-					  const double_array& jacobianN,
-					  const double_array& jacobianP)
+					  scalar_array* lagrangeTIncr,
+					  scalar_array* dispTIncrN,
+					  scalar_array* dispTIncrP,
+					  const scalar_array& slip,
+					  const scalar_array& orientation,
+					  const scalar_array& dispTN,
+					  const scalar_array& dispTP,
+					  const scalar_array& residualN,
+					  const scalar_array& residualP,
+					  const scalar_array& jacobianN,
+					  const scalar_array& jacobianP)
 { // _adjustSoln2D
   assert(0 != lagrangeTIncr);
   assert(0 != dispTIncrN);
@@ -2165,37 +2167,37 @@
   assert(jacobianP[0] > 0.0);
   assert(jacobianP[1] > 0.0);
   
-  const double Cpx = orientation[0];
-  const double Cpy = orientation[1];
-  const double Cqx = orientation[2];
-  const double Cqy = orientation[3];
+  const PylithScalar Cpx = orientation[0];
+  const PylithScalar Cpy = orientation[1];
+  const PylithScalar Cqx = orientation[2];
+  const PylithScalar Cqy = orientation[3];
   
   // Check to make sure Jacobian is same at all DOF for
   // vertices i and j (means S is diagonal with equal enties).
   assert(jacobianN[0] == jacobianN[1]);
   assert(jacobianP[0] == jacobianP[1]);
   
-  const double Sinv = jacobianN[0] * jacobianP[0]
+  const PylithScalar Sinv = jacobianN[0] * jacobianP[0]
     / (jacobianN[0] + jacobianP[0]);
   
   // Aru = A_i^{-1} r_i - A_j^{-1} r_j + u_i - u_j
-  const double Arux = residualN[0] / jacobianN[0]
+  const PylithScalar Arux = residualN[0] / jacobianN[0]
     - residualP[0] / jacobianP[0] + dispTN[0]
     - dispTP[0];
-  const double Aruy = residualN[1] / jacobianN[1]
+  const PylithScalar Aruy = residualN[1] / jacobianN[1]
     - residualP[1] / jacobianP[1] + dispTN[1]
     - dispTP[1];
   
   // dl_k = S^{-1}(-C_{ki} Aru - d_k)
-  const double Arup = Cpx * Arux + Cpy * Aruy;
-  const double Aruq = Cqx * Arux + Cqy * Aruy;
-  const double Arupslip = -Arup - slip[0];
-  const double Aruqslip = -Aruq - slip[1];
-  const double dlp = Sinv * Arupslip;
-  const double dlq = Sinv * Aruqslip;
+  const PylithScalar Arup = Cpx * Arux + Cpy * Aruy;
+  const PylithScalar Aruq = Cqx * Arux + Cqy * Aruy;
+  const PylithScalar Arupslip = -Arup - slip[0];
+  const PylithScalar Aruqslip = -Aruq - slip[1];
+  const PylithScalar dlp = Sinv * Arupslip;
+  const PylithScalar dlq = Sinv * Aruqslip;
   
-  const double dlx = Cpx * dlp + Cqx * dlq;
-  const double dly = Cpy * dlp + Cqy * dlq;
+  const PylithScalar dlx = Cpx * dlp + Cqx * dlq;
+  const PylithScalar dly = Cpy * dlp + Cqy * dlq;
   
   // Update displacements at negative vertex.
   (*dispTIncrN)[0] = dlx / jacobianN[0];
@@ -2216,17 +2218,17 @@
 // Adjust solution in lumped formulation to match slip for 3-D.
 void
 pylith::faults::FaultCohesiveLagrange::_adjustSolnLumped3D(
-					  double_array* lagrangeTIncr,
-					  double_array* dispTIncrN,
-					  double_array* dispTIncrP,
-					  const double_array& slip,
-					  const double_array& orientation,
-					  const double_array& dispTN,
-					  const double_array& dispTP,
-					  const double_array& residualN,
-					  const double_array& residualP,
-					  const double_array& jacobianN,
-					  const double_array& jacobianP)
+					  scalar_array* lagrangeTIncr,
+					  scalar_array* dispTIncrN,
+					  scalar_array* dispTIncrP,
+					  const scalar_array& slip,
+					  const scalar_array& orientation,
+					  const scalar_array& dispTN,
+					  const scalar_array& dispTP,
+					  const scalar_array& residualN,
+					  const scalar_array& residualP,
+					  const scalar_array& jacobianN,
+					  const scalar_array& jacobianP)
 { // _adjustSoln3D
   assert(0 != lagrangeTIncr);
   assert(0 != dispTIncrN);
@@ -2239,15 +2241,15 @@
   assert(jacobianP[1] > 0.0);
   assert(jacobianP[2] > 0.0);
 
-  const double Cpx = orientation[0];
-  const double Cpy = orientation[1];
-  const double Cpz = orientation[2];
-  const double Cqx = orientation[3];
-  const double Cqy = orientation[4];
-  const double Cqz = orientation[5];
-  const double Crx = orientation[6];
-  const double Cry = orientation[7];
-  const double Crz = orientation[8];
+  const PylithScalar Cpx = orientation[0];
+  const PylithScalar Cpy = orientation[1];
+  const PylithScalar Cpz = orientation[2];
+  const PylithScalar Cqx = orientation[3];
+  const PylithScalar Cqy = orientation[4];
+  const PylithScalar Cqz = orientation[5];
+  const PylithScalar Crx = orientation[6];
+  const PylithScalar Cry = orientation[7];
+  const PylithScalar Crz = orientation[8];
 
   // Check to make sure Jacobian is same at all DOF for
   // vertices i and j (means S is diagonal with equal enties).
@@ -2256,34 +2258,34 @@
   assert(jacobianP[0] == jacobianP[1] && 
 	 jacobianP[0] == jacobianP[2]);
 
-  const double Sinv = jacobianN[0] * jacobianP[0]
+  const PylithScalar Sinv = jacobianN[0] * jacobianP[0]
     / (jacobianN[0] + jacobianP[0]);
 
   // Aru = A_i^{-1} r_i - A_j^{-1} r_j + u_i - u_j
-  const double Arux = residualN[0] / jacobianN[0]
+  const PylithScalar Arux = residualN[0] / jacobianN[0]
     - residualP[0] / jacobianP[0] + dispTN[0]
     - dispTP[0];
-  const double Aruy = residualN[1] / jacobianN[1]
+  const PylithScalar Aruy = residualN[1] / jacobianN[1]
     - residualP[1] / jacobianP[1] + dispTN[1]
     - dispTP[1];
-  const double Aruz = residualN[2] / jacobianN[2]
+  const PylithScalar Aruz = residualN[2] / jacobianN[2]
     - residualP[2] / jacobianP[2] + dispTN[2]
     - dispTP[2];
 
   // dl_k = D^{-1}( -C_{ki} Aru - d_k)
-  const double Arup = Cpx * Arux + Cpy * Aruy + Cpz * Aruz;
-  const double Aruq = Cqx * Arux + Cqy * Aruy + Cqz * Aruz;
-  const double Arur = Crx * Arux + Cry * Aruy + Crz * Aruz;
-  const double Arupslip = -Arup - slip[0];
-  const double Aruqslip = -Aruq - slip[1];
-  const double Arurslip = -Arur - slip[2];
-  const double dlp = Sinv * Arupslip;
-  const double dlq = Sinv * Aruqslip;
-  const double dlr = Sinv * Arurslip;
+  const PylithScalar Arup = Cpx * Arux + Cpy * Aruy + Cpz * Aruz;
+  const PylithScalar Aruq = Cqx * Arux + Cqy * Aruy + Cqz * Aruz;
+  const PylithScalar Arur = Crx * Arux + Cry * Aruy + Crz * Aruz;
+  const PylithScalar Arupslip = -Arup - slip[0];
+  const PylithScalar Aruqslip = -Aruq - slip[1];
+  const PylithScalar Arurslip = -Arur - slip[2];
+  const PylithScalar dlp = Sinv * Arupslip;
+  const PylithScalar dlq = Sinv * Aruqslip;
+  const PylithScalar dlr = Sinv * Arurslip;
 
-  const double dlx = Cpx * dlp + Cqx * dlq + Crx * dlr;
-  const double dly = Cpy * dlp + Cqy * dlq + Cry * dlr;
-  const double dlz = Cpz * dlp + Cqz * dlq + Crz * dlr;
+  const PylithScalar dlx = Cpx * dlp + Cqx * dlq + Crx * dlr;
+  const PylithScalar dly = Cpy * dlp + Cqy * dlq + Cry * dlr;
+  const PylithScalar dlz = Cpz * dlp + Cqz * dlq + Crz * dlr;
 
   // Update displacements at negative vertex.
   (*dispTIncrN)[0] = dlx / jacobianN[0];

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -127,7 +127,7 @@
    */
   virtual
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-				  const double t,
+				  const PylithScalar t,
 				  topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -139,7 +139,7 @@
    */
   virtual
   void integrateJacobian(topology::Jacobian* jacobian,
-				  const double t,
+				  const PylithScalar t,
 				  topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -151,7 +151,7 @@
    */
   virtual
   void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
-				  const double t,
+				  const PylithScalar t,
 				  topology::SolutionFields* const fields);
 
   /** Compute custom fault precoditioner using Schur complement.
@@ -270,17 +270,17 @@
    * @param jacobianN Jacobian associated with vertex on - side of fault.
    * @param jacobianP Jacobian associated with vertex on + side of fault.
    */
-  void _adjustSolnLumped1D(double_array* lagrangeIncr,
-			   double_array* dispTIncrN,
-			   double_array* dispTIncrP,
-			   const double_array& slip,
-			   const double_array& orientation,
-			   const double_array& dispTN,
-			   const double_array& dispTP,
-			   const double_array& residualN,
-			   const double_array& residualP,
-			   const double_array& jacobianN,
-			   const double_array& jacobianP);
+  void _adjustSolnLumped1D(scalar_array* lagrangeIncr,
+			   scalar_array* dispTIncrN,
+			   scalar_array* dispTIncrP,
+			   const scalar_array& slip,
+			   const scalar_array& orientation,
+			   const scalar_array& dispTN,
+			   const scalar_array& dispTP,
+			   const scalar_array& residualN,
+			   const scalar_array& residualP,
+			   const scalar_array& jacobianN,
+			   const scalar_array& jacobianP);
 
   /** Adjust solution in lumped formulation to match slip for 2-D.
    *
@@ -296,17 +296,17 @@
    * @param jacobianN Jacobian associated with vertex on - side of fault.
    * @param jacobianP Jacobian associated with vertex on + side of fault.
    */
-  void _adjustSolnLumped2D(double_array* lagrangeIncr,
-			   double_array* dispTIncrN,
-			   double_array* dispTIncrP,
-			   const double_array& slip,
-			   const double_array& orientation,
-			   const double_array& dispTN,
-			   const double_array& dispTP,
-			   const double_array& residualN,
-			   const double_array& residualP,
-			   const double_array& jacobianN,
-			   const double_array& jacobianP);
+  void _adjustSolnLumped2D(scalar_array* lagrangeIncr,
+			   scalar_array* dispTIncrN,
+			   scalar_array* dispTIncrP,
+			   const scalar_array& slip,
+			   const scalar_array& orientation,
+			   const scalar_array& dispTN,
+			   const scalar_array& dispTP,
+			   const scalar_array& residualN,
+			   const scalar_array& residualP,
+			   const scalar_array& jacobianN,
+			   const scalar_array& jacobianP);
 
   /** Adjust solution in lumped formulation to match slip for 3-D.
    *
@@ -322,17 +322,17 @@
    * @param jacobianN Jacobian associated with vertex on - side of fault.
    * @param jacobianP Jacobian associated with vertex on + side of fault.
    */
-  void _adjustSolnLumped3D(double_array* lagrangeIncr,
-			   double_array* dispTIncrN,
-			   double_array* dispTIncrP,
-			   const double_array& slip,
-			   const double_array& orientation,
-			   const double_array& dispTN,
-			   const double_array& dispTP,
-			   const double_array& residualN,
-			   const double_array& residualP,
-			   const double_array& jacobianN,
-			   const double_array& jacobianP);
+  void _adjustSolnLumped3D(scalar_array* lagrangeIncr,
+			   scalar_array* dispTIncrN,
+			   scalar_array* dispTIncrP,
+			   const scalar_array& slip,
+			   const scalar_array& orientation,
+			   const scalar_array& dispTN,
+			   const scalar_array& dispTP,
+			   const scalar_array& residualN,
+			   const scalar_array& residualP,
+			   const scalar_array& jacobianN,
+			   const scalar_array& jacobianP);
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 typedef pylith::topology::Field<pylith::topology::SubMesh>::RestrictVisitor RestrictVisitor;
 typedef pylith::topology::Field<pylith::topology::SubMesh>::UpdateAddVisitor UpdateAddVisitor;
-typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveSubMesh::order_type,PetscInt> IndicesVisitor;
+typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveSubMesh::order_type,PylithInt> IndicesVisitor;
 
 // ----------------------------------------------------------------------
 // Default constructor.
@@ -71,7 +71,7 @@
 // Initialize fault. Determine orientation and setup boundary
 void
 pylith::faults::FaultCohesiveTract::initialize(const topology::Mesh& mesh,
-					     const double upDir[3])
+					       const double upDir[3])
 { // initialize
   assert(0 != upDir);
   assert(0 != _quadrature);
@@ -103,7 +103,7 @@
 void
 pylith::faults::FaultCohesiveTract::integrateResidual(
 			   const topology::Field<topology::Mesh>& residual,
-			   const double t,
+			   const PylithScalar t,
 			   topology::SolutionFields* const fields)
 { // integrateResidual
   throw std::logic_error("FaultCohesiveTract::integrateResidual() not implemented.");
@@ -114,7 +114,7 @@
 void
 pylith::faults::FaultCohesiveTract::integrateJacobian(
 				   topology::Jacobian* jacobian,
-				   const double t,
+				   const PylithScalar t,
 				   topology::SolutionFields* const fields)
 { // integrateJacobian
   throw std::logic_error("FaultCohesiveTract::integrateJacobian() not implemented.");
@@ -201,7 +201,9 @@
   assert(0 != _fields);
   assert(0 != _quadrature);
 
-  double_array up(upDir, 3);
+  scalar_array up(3);
+  for (int i=0; i < 3; ++i)
+    up[i] = upDir[i];
 
   // Get 'fault' cells.
   const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
@@ -218,20 +220,20 @@
   const int numBasis = _quadrature->numBasis();
   const int numQuadPts = _quadrature->numQuadPts();
   const int spaceDim = cellGeometry.spaceDim();
-  double_array quadPtRef(cellDim);
-  const double_array& quadPtsRef = _quadrature->quadPtsRef();
+  scalar_array quadPtRef(cellDim);
+  const scalar_array& quadPtsRef = _quadrature->quadPtsRef();
   
   // Containers for orientation information
   const int orientationSize = spaceDim * spaceDim;
   const int fiberDim = numQuadPts * orientationSize;
   const int jacobianSize = spaceDim * cellDim;
-  double_array jacobian(jacobianSize);
-  double jacobianDet = 0;
-  double_array orientationQuadPt(orientationSize);
-  double_array orientationCell(fiberDim);
+  scalar_array jacobian(jacobianSize);
+  PylithScalar jacobianDet = 0;
+  scalar_array orientationQuadPt(orientationSize);
+  scalar_array orientationCell(fiberDim);
 
   // Get sections.
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     faultSieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -267,7 +269,7 @@
 
       // Compute Jacobian and determinant at quadrature point, then get
       // orientation.
-      memcpy(&quadPtRef[0], &quadPtsRef[iRef], cellDim*sizeof(double));
+      memcpy(&quadPtRef[0], &quadPtsRef[iRef], cellDim*sizeof(PylithScalar));
       cellGeometry.jacobian(&jacobian, &jacobianDet,
 			    coordinatesCell, quadPtRef);
       cellGeometry.orientation(&orientationQuadPt, jacobian, jacobianDet, up);
@@ -275,7 +277,7 @@
       orientationQuadPt /= jacobianDet;
 
       memcpy(&orientationCell[iQuad*orientationSize], 
-	     &orientationQuadPt[0], orientationSize*sizeof(double));
+	     &orientationQuadPt[0], orientationSize*sizeof(PylithScalar));
     } // for
 
     orientationSection->updatePoint(*c_iter, &orientationCell[0]);
@@ -292,8 +294,8 @@
   assert(0 != _normalizer);
   assert(0 != _quadrature);
 
-  const double pressureScale = _normalizer->pressureScale();
-  const double lengthScale = _normalizer->lengthScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
 
   const int spaceDim = _quadrature->spaceDim();
   const int numQuadPts = _quadrature->numQuadPts();
@@ -351,11 +353,11 @@
   
     // Containers for database query results and quadrature coordinates in
     // reference geometry.
-    double_array tractionCell(numQuadPts*spaceDim);
-    double_array quadPtsGlobal(numQuadPts*spaceDim);
+    scalar_array tractionCell(numQuadPts*spaceDim);
+    scalar_array quadPtsGlobal(numQuadPts*spaceDim);
     
     // Get sections.
-    double_array coordinatesCell(numBasis*spaceDim);
+    scalar_array coordinatesCell(numBasis*spaceDim);
     const ALE::Obj<RealSection>& coordinates =
       faultSieveMesh->getRealSection("coordinates");
     assert(!coordinates.isNull());
@@ -375,7 +377,7 @@
       faultSieveMesh->restrictClosure(*c_iter, coordsVisitor);
       _quadrature->computeGeometry(coordinatesCell, *c_iter);
       
-      const double_array& quadPtsNondim = _quadrature->quadPts();
+      const scalar_array& quadPtsNondim = _quadrature->quadPts();
       quadPtsGlobal = quadPtsNondim;
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
 				  lengthScale);

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveTract.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -74,7 +74,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -85,7 +85,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
   
   /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -73,7 +73,7 @@
 pylith::faults::LiuCosSlipFn::initialize(
 			    const topology::SubMesh& faultMesh,
 			    const spatialdata::units::Nondimensional& normalizer,
-			    const double originTime)
+			    const PylithScalar originTime)
 { // initialize
   assert(0 != _dbFinalSlip);
   assert(0 != _dbSlipTime);
@@ -83,8 +83,8 @@
   assert(0 != cs);
   const int spaceDim = cs->spaceDim();
 
-  const double lengthScale = normalizer.lengthScale();
-  const double timeScale = normalizer.timeScale();
+  const PylithScalar lengthScale = normalizer.lengthScale();
+  const PylithScalar timeScale = normalizer.timeScale();
 
   // Get vertices in fault mesh
   const ALE::Obj<SieveMesh>& sieveMesh = faultMesh.sieveMesh();
@@ -168,7 +168,7 @@
   assert(!coordinates.isNull());
 
   _slipVertex.resize(spaceDim);
-  double_array vCoordsGlobal(spaceDim);
+  scalar_array vCoordsGlobal(spaceDim);
   for (label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter) {
@@ -231,7 +231,7 @@
 // Get slip on fault surface at time t.
 void
 pylith::faults::LiuCosSlipFn::slip(topology::Field<topology::SubMesh>* slip,
-				  const double t)
+				  const PylithScalar t)
 { // slip
   assert(0 != slip);
   assert(0 != _parameters);
@@ -269,14 +269,14 @@
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
     riseTimeSection->restrictPoint(*v_iter, &_riseTimeVertex, 1);
 
-    double finalSlipMag = 0.0;
+    PylithScalar finalSlipMag = 0.0;
     for (int i=0; i < spaceDim; ++i)
       finalSlipMag += _slipVertex[i]*_slipVertex[i];
     finalSlipMag = sqrt(finalSlipMag);
 
-    const double slip = _slipFn(t-_slipTimeVertex, finalSlipMag,
+    const PylithScalar slip = _slipFn(t-_slipTimeVertex, finalSlipMag,
 				_riseTimeVertex);
-    const double scale = finalSlipMag > 0.0 ? slip / finalSlipMag : 0.0;
+    const PylithScalar scale = finalSlipMag > 0.0 ? slip / finalSlipMag : 0.0;
     _slipVertex *= scale;
     
     // Update field
@@ -291,8 +291,8 @@
 void
 pylith::faults::LiuCosSlipFn::slipIncr(
 				      topology::Field<topology::SubMesh>* slip,
-				      const double t0,
-				      const double t1)
+				      const PylithScalar t0,
+				      const PylithScalar t1)
 { // slipIncr
   assert(0 != slip);
   assert(0 != _parameters);
@@ -330,16 +330,16 @@
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
     riseTimeSection->restrictPoint(*v_iter, &_riseTimeVertex, 1);
 
-    double finalSlipMag = 0.0;
+    PylithScalar finalSlipMag = 0.0;
     for (int i=0; i < spaceDim; ++i)
       finalSlipMag += _slipVertex[i]*_slipVertex[i];
     finalSlipMag = sqrt(finalSlipMag);
 
-    const double slip0 = _slipFn(t0-_slipTimeVertex, finalSlipMag,
+    const PylithScalar slip0 = _slipFn(t0-_slipTimeVertex, finalSlipMag,
 				 _riseTimeVertex);
-    const double slip1 = _slipFn(t1-_slipTimeVertex, finalSlipMag,
+    const PylithScalar slip1 = _slipFn(t1-_slipTimeVertex, finalSlipMag,
 				 _riseTimeVertex);
-    const double scale = finalSlipMag > 0.0 ? 
+    const PylithScalar scale = finalSlipMag > 0.0 ? 
       (slip1 - slip0) / finalSlipMag : 0.0;
     _slipVertex *= scale;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -29,7 +29,7 @@
 
 #include "pylith/topology/topologyfwd.hh" // USES Fields<Field<SubMesh> >
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // LiuCosSlipFn ---------------------------------------------------------
 /**
@@ -85,7 +85,7 @@
    */
   void initialize(const topology::SubMesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
-		  const double originTime =0.0);
+		  const PylithScalar originTime =0.0);
 
   /** Get slip on fault surface at time t.
    *
@@ -95,7 +95,7 @@
    * @returns Slip vector as left-lateral/reverse/normal.
    */
   void slip(topology::Field<topology::SubMesh>* const slipField,
-	    const double t);
+	    const PylithScalar t);
   
   /** Get slip increment on fault surface between time t0 and t1.
    *
@@ -106,8 +106,8 @@
    * @returns Increment in slip vector as left-lateral/reverse/normal.
    */
   void slipIncr(topology::Field<topology::SubMesh>* slipField,
-		const double t0,
-		const double t1);
+		const PylithScalar t0,
+		const PylithScalar t1);
 
   /** Get final slip.
    *
@@ -139,16 +139,16 @@
    * @returns Slip at point at time t
    */
   static
-  double _slipFn(const double t,
-		 const double finalSlip,
-		 const double riseTime);
+  PylithScalar _slipFn(const PylithScalar t,
+		 const PylithScalar finalSlip,
+		 const PylithScalar riseTime);
 
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _slipTimeVertex; ///< Slip time at a vertex.
-  double _riseTimeVertex; ///< Rise time at a vertex.
-  double_array _slipVertex; ///< Slip at a vertex.
+  PylithScalar _slipTimeVertex; ///< Slip time at a vertex.
+  PylithScalar _riseTimeVertex; ///< Rise time at a vertex.
+  scalar_array _slipVertex; ///< Slip at a vertex.
 
   /// Spatial database for final slip.
   spatialdata::spatialdb::SpatialDB* _dbFinalSlip;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/LiuCosSlipFn.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,16 +45,16 @@
 
 // Compute slip using slip time function.
 inline
-double
-pylith::faults::LiuCosSlipFn::_slipFn(const double t,
-				      const double finalSlip,
-				      const double riseTime) {
-  double slip = 0.0;
+PylithScalar
+pylith::faults::LiuCosSlipFn::_slipFn(const PylithScalar t,
+				      const PylithScalar finalSlip,
+				      const PylithScalar riseTime) {
+  PylithScalar slip = 0.0;
   if (t > 0.0) {
-    const double tau = riseTime * 1.525;
-    const double tau1 = 0.13 * tau;
-    const double tau2 = tau - tau1;
-    const double Cn = 
+    const PylithScalar tau = riseTime * 1.525;
+    const PylithScalar tau1 = 0.13 * tau;
+    const PylithScalar tau2 = tau - tau1;
+    const PylithScalar Cn = 
       M_PI /  (1.4 * M_PI * tau1 + 1.2 * tau1 + 0.3 * M_PI * tau2);
     
     if (t <= tau1) {

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/SlipTimeFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -66,7 +66,7 @@
   virtual
   void initialize(const topology::SubMesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
-		  const double originTime =0.0) = 0;
+		  const PylithScalar originTime =0.0) = 0;
 
   /** Get slip on fault surface at time t.
    *
@@ -77,7 +77,7 @@
    */
   virtual
   void slip(topology::Field<topology::SubMesh>* const slipField,
-	    const double t) = 0;
+	    const PylithScalar t) = 0;
   
   /** Get slip increment on fault surface between time t0 and t1.
    *
@@ -89,8 +89,8 @@
    */
   virtual
   void slipIncr(topology::Field<topology::SubMesh>* slipField,
-		const double t0,
-		const double t1) = 0;
+		const PylithScalar t0,
+		const PylithScalar t1) = 0;
 
   /** Get final slip.
    *

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -70,7 +70,7 @@
 pylith::faults::StepSlipFn::initialize(
 			    const topology::SubMesh& faultMesh,
 			    const spatialdata::units::Nondimensional& normalizer,
-			    const double originTime)
+			    const PylithScalar originTime)
 { // initialize
   assert(0 != _dbFinalSlip);
   assert(0 != _dbSlipTime);
@@ -79,8 +79,8 @@
   assert(0 != cs);
   const int spaceDim = cs->spaceDim();
 
-  const double lengthScale = normalizer.lengthScale();
-  const double timeScale = normalizer.timeScale();
+  const PylithScalar lengthScale = normalizer.lengthScale();
+  const PylithScalar timeScale = normalizer.timeScale();
 
   // Memory logging
   ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
@@ -153,7 +153,7 @@
   assert(!coordinates.isNull());
 
   _slipVertex.resize(spaceDim);
-  double_array vCoordsGlobal(spaceDim);  
+  scalar_array vCoordsGlobal(spaceDim);  
   for (label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter) {
@@ -202,7 +202,7 @@
 // Get slip on fault surface at time t.
 void
 pylith::faults::StepSlipFn::slip(topology::Field<topology::SubMesh>* slip,
-				 const double t)
+				 const PylithScalar t)
 { // slip
   assert(0 != slip);
   assert(0 != _parameters);
@@ -233,7 +233,7 @@
     finalSlipSection->restrictPoint(*v_iter, &_slipVertex[0], _slipVertex.size());
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
 
-    const double relTime = t - _slipTimeVertex;
+    const PylithScalar relTime = t - _slipTimeVertex;
     if (relTime < 0.0)
       _slipVertex = 0.0;
     
@@ -248,8 +248,8 @@
 // Get increment of slip on fault surface between time t0 and t1.
 void
 pylith::faults::StepSlipFn::slipIncr(topology::Field<topology::SubMesh>* slip,
-				     const double t0,
-				     const double t1)
+				     const PylithScalar t0,
+				     const PylithScalar t1)
 { // slipIncr
   assert(0 != slip);
   assert(0 != _parameters);
@@ -280,8 +280,8 @@
     finalSlipSection->restrictPoint(*v_iter, &_slipVertex[0], _slipVertex.size());
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
 
-    const double relTime0 = t0 - _slipTimeVertex;
-    const double relTime1 = t1 - _slipTimeVertex;
+    const PylithScalar relTime0 = t0 - _slipTimeVertex;
+    const PylithScalar relTime1 = t1 - _slipTimeVertex;
     if (relTime1 < 0.0 || relTime0 >= 0.0)
       _slipVertex = 0.0;
     

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/StepSlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,7 +27,7 @@
 // Include directives ---------------------------------------------------
 #include "SlipTimeFn.hh"
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // StepSlipFn -----------------------------------------------------------
 /**
@@ -75,7 +75,7 @@
    */
   void initialize(const topology::SubMesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
-		  const double originTime =0.0);
+		  const PylithScalar originTime =0.0);
 
   /** Get slip on fault surface at time t.
    *
@@ -85,7 +85,7 @@
    * @returns Slip vector as left-lateral/reverse/normal.
    */
   void slip(topology::Field<topology::SubMesh>* const slipField,
-	    const double t);
+	    const PylithScalar t);
   
   /** Get slip increment on fault surface between time t0 and t1.
    *
@@ -96,8 +96,8 @@
    * @returns Increment in slip vector as left-lateral/reverse/normal.
    */
   void slipIncr(topology::Field<topology::SubMesh>* slipField,
-		const double t0,
-		const double t1);
+		const PylithScalar t0,
+		const PylithScalar t1);
 
   /** Get final slip.
    *
@@ -120,8 +120,8 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _slipTimeVertex; ///< Slip time at a vertex.
-  double_array _slipVertex; ///< Final slip at a vertex.
+  PylithScalar _slipTimeVertex; ///< Slip time at a vertex.
+  scalar_array _slipVertex; ///< Final slip at a vertex.
 
   /// Spatial database for final slip
   spatialdata::spatialdb::SpatialDB* _dbFinalSlip;

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -76,7 +76,7 @@
 pylith::faults::TimeHistorySlipFn::initialize(
 			    const topology::SubMesh& faultMesh,
 			    const spatialdata::units::Nondimensional& normalizer,
-			    const double originTime)
+			    const PylithScalar originTime)
 { // initialize
   assert(0 != _dbAmplitude);
   assert(0 != _dbSlipTime);
@@ -85,8 +85,8 @@
   assert(0 != cs);
   const int spaceDim = cs->spaceDim();
 
-  const double lengthScale = normalizer.lengthScale();
-  const double timeScale = normalizer.timeScale();
+  const PylithScalar lengthScale = normalizer.lengthScale();
+  const PylithScalar timeScale = normalizer.timeScale();
 
   // Memory logging
   ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
@@ -160,7 +160,7 @@
   assert(!coordinates.isNull());
 
   _slipVertex.resize(spaceDim);
-  double_array vCoordsGlobal(spaceDim);  
+  scalar_array vCoordsGlobal(spaceDim);  
   for (label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter) {
@@ -213,7 +213,7 @@
 // Get slip on fault surface at time t.
 void
 pylith::faults::TimeHistorySlipFn::slip(topology::Field<topology::SubMesh>* slip,
-				 const double t)
+				 const PylithScalar t)
 { // slip
   assert(0 != slip);
   assert(0 != _parameters);
@@ -239,7 +239,7 @@
   const ALE::Obj<RealSection>& slipSection = slip->section();
   assert(!slipSection.isNull());
 
-  double amplitude = 0.0;
+  PylithScalar amplitude = 0.0;
   for (label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter) {
@@ -247,7 +247,7 @@
 					&_slipVertex[0], _slipVertex.size());
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
 
-    double relTime = t - _slipTimeVertex;
+    PylithScalar relTime = t - _slipTimeVertex;
     if (relTime < 0.0)
       _slipVertex = 0.0;
     else {
@@ -274,8 +274,8 @@
 // Get increment of slip on fault surface between time t0 and t1.
 void
 pylith::faults::TimeHistorySlipFn::slipIncr(topology::Field<topology::SubMesh>* slip,
-				     const double t0,
-				     const double t1)
+				     const PylithScalar t0,
+				     const PylithScalar t1)
 { // slipIncr
   assert(0 != slip);
   assert(0 != _parameters);
@@ -301,16 +301,16 @@
   const ALE::Obj<RealSection>& slipSection = slip->section();
   assert(!slipSection.isNull());
 
-  double amplitude0 = 0.0;
-  double amplitude1 = 0.0;
+  PylithScalar amplitude0 = 0.0;
+  PylithScalar amplitude1 = 0.0;
   for (label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter) {
     slipAmplitudeSection->restrictPoint(*v_iter, &_slipVertex[0], _slipVertex.size());
     slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
 
-    double relTime0 = t0 - _slipTimeVertex;
-    double relTime1 = t1 - _slipTimeVertex;
+    PylithScalar relTime0 = t0 - _slipTimeVertex;
+    PylithScalar relTime1 = t1 - _slipTimeVertex;
     if (relTime1 < 0.0)
       _slipVertex = 0.0;
     else {

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/TimeHistorySlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 // Include directives ---------------------------------------------------
 #include "SlipTimeFn.hh"
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // TimeHistorySlipFn -----------------------------------------------------------
 /**
@@ -82,7 +82,7 @@
    */
   void initialize(const topology::SubMesh& faultMesh,
 		  const spatialdata::units::Nondimensional& normalizer,
-		  const double originTime =0.0);
+		  const PylithScalar originTime =0.0);
 
   /** Get slip on fault surface at time t.
    *
@@ -92,7 +92,7 @@
    * @returns Slip vector as left-lateral/reverse/normal.
    */
   void slip(topology::Field<topology::SubMesh>* const slipField,
-	    const double t);
+	    const PylithScalar t);
   
   /** Get slip increment on fault surface between time t0 and t1.
    *
@@ -103,8 +103,8 @@
    * @returns Increment in slip vector as left-lateral/reverse/normal.
    */
   void slipIncr(topology::Field<topology::SubMesh>* slipField,
-		const double t0,
-		const double t1);
+		const PylithScalar t0,
+		const PylithScalar t1);
 
   /** Get final slip.
    *
@@ -127,9 +127,9 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _slipTimeVertex; ///< Slip time at a vertex.
-  double _timeScale; ///< Time scale.
-  double_array _slipVertex; ///< Final slip at a vertex.
+  PylithScalar _slipTimeVertex; ///< Slip time at a vertex.
+  PylithScalar _timeScale; ///< Time scale.
+  scalar_array _slipVertex; ///< Final slip at a vertex.
 
   /// Spatial database for amplitude of slip time history.
   spatialdata::spatialdb::SpatialDB* _dbAmplitude;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -152,7 +152,7 @@
 // ----------------------------------------------------------------------
 // Set coordinates of vertices in reference cell.
 void
-pylith::feassemble::CellGeometry::_setVertices(const double* vertices,
+pylith::feassemble::CellGeometry::_setVertices(const PylithScalar* vertices,
 					       const int numVertices,
 					       const int dim)
 { // _setVertices
@@ -163,7 +163,7 @@
     assert(1 == numVertices);
     assert(1 == dim);
   } // if/else
-  const int nbytes = numVertices*dim*sizeof(double);
+  const int nbytes = numVertices*dim*sizeof(PylithScalar);
   _vertices.resize(numVertices*dim);
   memcpy(&_vertices[0], vertices, nbytes);
 } // _setVertices
@@ -171,10 +171,10 @@
 // ----------------------------------------------------------------------
 // Compute orientation of 0-D cell.
 void
-pylith::feassemble::CellGeometry::_orient0D(double_array* orientation,
-					    const double_array& jacobian,
-					    const double jacobianDet,
-					    const double_array& upDir)
+pylith::feassemble::CellGeometry::_orient0D(scalar_array* orientation,
+					    const scalar_array& jacobian,
+					    const PylithScalar jacobianDet,
+					    const scalar_array& upDir)
 { // _orient0D
   assert(0 != orientation);
   assert(1 == orientation->size());
@@ -184,10 +184,10 @@
 // ----------------------------------------------------------------------
 // Compute orientation of 1-D cell.
 void
-pylith::feassemble::CellGeometry::_orient1D(double_array* orientation,
-					    const double_array& jacobian,
-					    const double jacobianDet,
-					    const double_array& upDir)
+pylith::feassemble::CellGeometry::_orient1D(scalar_array* orientation,
+					    const scalar_array& jacobian,
+					    const PylithScalar jacobianDet,
+					    const scalar_array& upDir)
 { // _orient1D
   const int orientSize = 4;
   assert(0 != orientation);
@@ -198,8 +198,8 @@
   // cellDim is 1
   const int spaceDim = 2;
 
-  const double j1 = jacobian[0];
-  const double j2 = jacobian[1];
+  const PylithScalar j1 = jacobian[0];
+  const PylithScalar j2 = jacobian[1];
   (*orientation)[0] =  j1;
   (*orientation)[1] =  j2;
   (*orientation)[2] =  j2;
@@ -210,10 +210,10 @@
 // ----------------------------------------------------------------------
 // Compute orientation of 2-D cell.
 void
-pylith::feassemble::CellGeometry::_orient2D(double_array* orientation,
-					    const double_array& jacobian,
-					    const double jacobianDet,
-					    const double_array& upDir)
+pylith::feassemble::CellGeometry::_orient2D(scalar_array* orientation,
+					    const scalar_array& jacobian,
+					    const PylithScalar jacobianDet,
+					    const scalar_array& upDir)
 { // _orient2D
   const int orientSize = 9;
   assert(0 != orientation);
@@ -225,28 +225,28 @@
   const int cellDim = 2;
   const int spaceDim = 3;
 
-  const double j00 = jacobian[0];
-  const double j01 = jacobian[1];
-  const double j10 = jacobian[2];
-  const double j11 = jacobian[3];
-  const double j20 = jacobian[4];
-  const double j21 = jacobian[5];
+  const PylithScalar j00 = jacobian[0];
+  const PylithScalar j01 = jacobian[1];
+  const PylithScalar j10 = jacobian[2];
+  const PylithScalar j11 = jacobian[3];
+  const PylithScalar j20 = jacobian[4];
+  const PylithScalar j21 = jacobian[5];
 
   // Compute normal using Jacobian
-  double r0 =  j10*j21 - j20*j11;
-  double r1 = -j00*j21 + j20*j01;
-  double r2 =  j00*j11 - j10*j01;
+  PylithScalar r0 =  j10*j21 - j20*j11;
+  PylithScalar r1 = -j00*j21 + j20*j01;
+  PylithScalar r2 =  j00*j11 - j10*j01;
   // Make unit vector
-  double mag = sqrt(r0*r0 + r1*r1 + r2*r2);
+  PylithScalar mag = sqrt(r0*r0 + r1*r1 + r2*r2);
   assert(mag > 0.0);
   r0 /= mag;
   r1 /= mag;
   r2 /= mag;
   
   // Compute along-strike direction; cross product of "up" and normal
-  double p0 =  upDir[1]*r2 - upDir[2]*r1;
-  double p1 = -upDir[0]*r2 + upDir[2]*r0;
-  double p2 =  upDir[0]*r1 - upDir[1]*r0;
+  PylithScalar p0 =  upDir[1]*r2 - upDir[2]*r1;
+  PylithScalar p1 = -upDir[0]*r2 + upDir[2]*r0;
+  PylithScalar p2 =  upDir[0]*r1 - upDir[1]*r0;
   // Make unit vector
   mag = sqrt(p0*p0 + p1*p1 + p2*p2);
   assert(mag > 0.0);
@@ -255,13 +255,13 @@
   p2 /= mag;
   
   // Compute up-dip direction; cross product of normal and along-strike
-  const double q0 =  r1*p2 - r2*p1;
-  const double q1 = -r0*p2 + r2*p0;
-  const double q2 =  r0*p1 - r1*p0;
+  const PylithScalar q0 =  r1*p2 - r2*p1;
+  const PylithScalar q1 = -r0*p2 + r2*p0;
+  const PylithScalar q2 =  r0*p1 - r1*p0;
   mag = sqrt(q0*q0 + q1*q1 + q2*q2);
   assert(mag > 0.0);
   
-  const double wt = jacobianDet;
+  const PylithScalar wt = jacobianDet;
   (*orientation)[0] =  p0*wt;
   (*orientation)[1] =  p1*wt;
   (*orientation)[2] =  p2*wt;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 // Include directives ---------------------------------------------------
 #include "feassemblefwd.hh" // forwward declarations
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // CellGeometry ---------------------------------------------------------
 /// Abstract base class for cell geometry calculations.
@@ -96,7 +96,7 @@
    *
    * @returns Array of coordinates of vertices in reference cell
    */
-  const double_array& vertices(void) const;
+  const scalar_array& vertices(void) const;
 
   /** Get cell geometry for lower dimension cell.
    *
@@ -115,9 +115,9 @@
    * @param npts Number of points to transform.
    */
   virtual
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts) const = 0;
 
@@ -129,10 +129,10 @@
    * @param location Location in reference cell at which to compute Jacobian.
    */
   virtual
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const = 0;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const = 0;
 
   /** Compute Jacobian at location in cell.
    *
@@ -144,10 +144,10 @@
    * @param npts Number of points to transform.
    */
   virtual
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts) const = 0;
 
@@ -165,10 +165,10 @@
    * @param upDir Direction perpendicular to horizontal direction that is 
    *   not collinear with cell normal (usually "up" direction).
    */
-  void orientation(double_array* orientation,
-		   const double_array& jacobian,
-		   const double jacobianDet,
-		   const double_array& upDir) const;
+  void orientation(scalar_array* orientation,
+		   const scalar_array& jacobian,
+		   const PylithScalar jacobianDet,
+		   const scalar_array& upDir) const;
 
 // PROTECTED ////////////////////////////////////////////////////////////
 protected :
@@ -185,7 +185,7 @@
    * @param numVertices Number of vertices.
    * @param dim Dimension of cell
    */
-  void _setVertices(const double* vertices,
+  void _setVertices(const PylithScalar* vertices,
 		    const int numVertices,
 		    const int dim);
 
@@ -199,10 +199,10 @@
 private :
 
   /// Function type for orientation methods.
-  typedef void (*orient_fn_type)(double_array*, 
-				 const double_array&,
-				 const double,
-				 const double_array&);  
+  typedef void (*orient_fn_type)(scalar_array*, 
+				 const scalar_array&,
+				 const PylithScalar,
+				 const scalar_array&);  
 
 // PRIVATE METHODS //////////////////////////////////////////////////////
 private :
@@ -226,10 +226,10 @@
    *   be up-dip direction).
    */
   static
-  void _orient0D(double_array* orientation,
-		 const double_array& jacobian,
-		 const double jacobianDet,
-		 const double_array& upDir);
+  void _orient0D(scalar_array* orientation,
+		 const scalar_array& jacobian,
+		 const PylithScalar jacobianDet,
+		 const scalar_array& upDir);
 		
   /** Compute orientation of 1-D cell. Orientation is either at
    * vertices or quadrature points, depending on whether the arguments
@@ -248,10 +248,10 @@
    *   be up-dip direction).
    */
   static 
-  void _orient1D(double_array* orientation,
-		 const double_array& jacobian,
-		 const double jacobianDet,
-		 const double_array& upDir);
+  void _orient1D(scalar_array* orientation,
+		 const scalar_array& jacobian,
+		 const PylithScalar jacobianDet,
+		 const scalar_array& upDir);
 		
   /** Compute orientation of 2-D cell. Orientation is either at
    * vertices or quadrature points, depending on whether the arguments
@@ -270,10 +270,10 @@
    *   be up-dip direction).
    */
   static
-  void _orient2D(double_array* orientation,
-		 const double_array& jacobian,
-		 const double jacobianDet,
-		 const double_array& upDir);
+  void _orient2D(scalar_array* orientation,
+		 const scalar_array& jacobian,
+		 const PylithScalar jacobianDet,
+		 const scalar_array& upDir);
 		
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
@@ -288,7 +288,7 @@
    * size = numBasis * cellDim
    * index = iBasis*cellDim + iDim
    */
-  double_array _vertices;
+  scalar_array _vertices;
 
   orient_fn_type _orientFn; ///< Function for computing orientation of cell
   int _spaceDim; ///< Dimension of coordinate space.

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/CellGeometry.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,7 +31,7 @@
 
 // Get coordinates of vertices in reference cell (dual basis).
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::CellGeometry::vertices(void) const {
   return _vertices;
 }
@@ -39,10 +39,10 @@
 // Compute orientation of cell at location.
 inline
 void
-pylith::feassemble::CellGeometry::orientation(double_array* orientation,
-					      const double_array& jacobian,
-					      const double jacobianDet,
-					      const double_array& upDir) const {
+pylith::feassemble::CellGeometry::orientation(scalar_array* orientation,
+					      const scalar_array& jacobian,
+					      const PylithScalar jacobianDet,
+					      const scalar_array& upDir) const {
   if (0 != _orientFn)
     _orientFn(orientation, jacobian, jacobianDet, upDir);
 } // orientation

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Constraint.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -94,7 +94,7 @@
    * @param field Solution field
    */
   virtual
-  void setField(const double t,
+  void setField(const PylithScalar t,
 		const topology::Field<topology::Mesh>& field) = 0;
 
   /** Set increment in values from t0 to t1 in field.
@@ -104,8 +104,8 @@
    * @param field Solution field
    */
   virtual
-  void setFieldIncr(const double t0,
-		    const double t1,
+  void setFieldIncr(const PylithScalar t0,
+		    const PylithScalar t1,
 		    const topology::Field<topology::Mesh>& field) = 0;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
 #include "pylith/utils/lapack.h" // USES LAPACKdgesvd
 
@@ -70,7 +70,7 @@
 // ----------------------------------------------------------------------
 // Set time step for advancing from time t to time t+dt.
 void
-pylith::feassemble::ElasticityExplicit::timeStep(const double dt)
+pylith::feassemble::ElasticityExplicit::timeStep(const PylithScalar dt)
 { // timeStep
   if (_dt != -1.0)
     _dtm1 = _dt;
@@ -85,7 +85,7 @@
 // ----------------------------------------------------------------------
 // Set normalized viscosity for numerical damping.
 void
-pylith::feassemble::ElasticityExplicit::normViscosity(const double viscosity)
+pylith::feassemble::ElasticityExplicit::normViscosity(const PylithScalar viscosity)
 { // normViscosity
   if (viscosity < 0.0) {
     std::ostringstream msg;
@@ -114,12 +114,12 @@
 void
 pylith::feassemble::ElasticityExplicit::integrateResidual(
 			  const topology::Field<topology::Mesh>& residual,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidual
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityExplicit::*elasticityResidual_fn_type)
-    (const double_array&);
+    (const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -138,7 +138,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -185,10 +185,10 @@
   } // switch
 
   // Allocate vectors for cell values.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -201,20 +201,20 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array accCell(numBasis*spaceDim);
+  scalar_array accCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& accSection = 
     fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
   RestrictVisitor accVisitor(*accSection, accCell.size(), &accCell[0]);
   
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
   
-  double_array dispCell(numBasis*spaceDim);
-  double_array dispAdjCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array dispAdjCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = fields->get("disp(t)").section();
   assert(!dispSection.isNull());
   RestrictVisitor dispVisitor(*dispSection, dispCell.size(), &dispCell[0]);
@@ -222,7 +222,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -230,15 +230,15 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale = 
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale = 
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
 				    _normalizer->densityScale());
 
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(_normViscosity > 0.0);
   assert(dt > 0);
-  const double viscosity = dt*_normViscosity;
+  const PylithScalar viscosity = dt*_normViscosity;
 
   _logger->eventEnd(setupEvent);
 #if !defined(DETAILED_EVENT_LOGGING)
@@ -292,10 +292,10 @@
 #endif
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
-    const double_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
 
     // Compute body force vector if gravity is being used.
     if (0 != _gravityField) {
@@ -303,23 +303,24 @@
       assert(0 != cs);
 
       // Get density at quadrature points for this cell
-      const double_array& density = _material->calcDensity();
+      const scalar_array& density = _material->calcDensity();
 
       quadPtsGlobal = quadPtsNondim;
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
           lengthScale);
 
       // Compute action for element body forces
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
       for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-        const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+        const int err = db->query(&gravVec[0], gravVec.size(),
             &quadPtsGlobal[0], spaceDim, cs);
         if (err)
           throw std::runtime_error("Unable to get gravity vector for point.");
         _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
             gravityScale);
-        const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+        const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
         for (int iBasis = 0, iQ = iQuad * numBasis; iBasis < numBasis; ++iBasis) {
-          const double valI = wt * basis[iQ + iBasis];
+          const PylithScalar valI = wt * basis[iQ + iBasis];
           for (int iDim = 0; iDim < spaceDim; ++iDim) {
             _cellVector[iBasis * spaceDim + iDim] += valI * gravVec[iDim];
           } // for
@@ -329,13 +330,13 @@
     } // if
 
     // Compute action for inertial terms
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
       for (int iBasis = 0; iBasis < numBasis; ++iBasis) {
-        const double valI = wt * basis[iQuad*numBasis+iBasis];
+        const PylithScalar valI = wt * basis[iQuad*numBasis+iBasis];
         for (int jBasis = 0; jBasis < numBasis; ++jBasis) {
-          const double valIJ = valI * basis[iQuad*numBasis+jBasis];
+          const PylithScalar valIJ = valI * basis[iQuad*numBasis+jBasis];
           for (int iDim = 0; iDim < spaceDim; ++iDim)
             _cellVector[iBasis*spaceDim+iDim] -= valIJ * 
 	      accCell[jBasis*spaceDim+iDim];
@@ -356,7 +357,7 @@
     calcTotalStrainFn(&strainCell, basisDeriv, dispAdjCell, 
 		      numBasis, numQuadPts);
 
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(stressEvent);
@@ -389,12 +390,12 @@
 void
 pylith::feassemble::ElasticityExplicit::integrateResidualLumped(
         const topology::Field<topology::Mesh>& residual,
-        const double t,
+        const PylithScalar t,
         topology::SolutionFields* const fields)
 { // integrateResidualLumped
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityExplicit::*elasticityResidual_fn_type)
-    (const double_array&);
+    (const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -413,7 +414,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -455,10 +456,10 @@
   } // if/else
 
   // Allocate vectors for cell values.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -471,20 +472,20 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array accCell(numBasis*spaceDim);
+  scalar_array accCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& accSection = 
     fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
   RestrictVisitor accVisitor(*accSection, accCell.size(), &accCell[0]);
   
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
   
-  double_array dispCell(numBasis*spaceDim);
-  double_array dispAdjCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array dispAdjCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = 
     fields->get("disp(t)").section();
   assert(!dispSection.isNull());
@@ -493,7 +494,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
   
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -501,18 +502,18 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale =
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale =
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
             _normalizer->densityScale());
 
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(_normViscosity > 0.0);
   assert(dt > 0);
-  const double viscosity = dt*_normViscosity;
+  const PylithScalar viscosity = dt*_normViscosity;
 
   // Get parameters used in integration.
-  double_array valuesIJ(numBasis);
+  scalar_array valuesIJ(numBasis);
 
   _logger->eventEnd(setupEvent);
 #if !defined(DETAILED_EVENT_LOGGING)
@@ -566,10 +567,10 @@
 #endif
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
-    const double_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
 
     // Compute body force vector if gravity is being used.
     if (0 != _gravityField) {
@@ -577,23 +578,24 @@
       assert(0 != cs);
 
       // Get density at quadrature points for this cell
-      const double_array& density = _material->calcDensity();
+      const scalar_array& density = _material->calcDensity();
 
       quadPtsGlobal = quadPtsNondim;
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
           lengthScale);
 
       // Compute action for element body forces
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
       for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-        const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+        const int err = db->query(&gravVec[0], gravVec.size(),
             &quadPtsGlobal[0], spaceDim, cs);
         if (err)
           throw std::runtime_error("Unable to get gravity vector for point.");
         _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
             gravityScale);
-        const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+        const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
         for (int iBasis = 0, iQ = iQuad * numBasis; iBasis < numBasis; ++iBasis) {
-          const double valI = wt * basis[iQ + iBasis];
+          const PylithScalar valI = wt * basis[iQ + iBasis];
           for (int iDim = 0; iDim < spaceDim; ++iDim) {
             _cellVector[iBasis*spaceDim+iDim] += valI * gravVec[iDim];
           } // for
@@ -603,12 +605,12 @@
     } // if
 
     // Compute action for inertial terms
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     valuesIJ = 0.0;
     for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
       const int iQ = iQuad * numBasis;
-      double valJ = 0.0;
+      PylithScalar valJ = 0.0;
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
 	valJ += basis[iQ + jBasis];
       valJ *= wt;
@@ -633,7 +635,7 @@
     // Compute B(transpose) * sigma, first computing strains
     calcTotalStrainFn(&strainCell, basisDeriv, dispAdjCell,
           numBasis, numQuadPts);
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(stressEvent);
@@ -667,7 +669,7 @@
 void
 pylith::feassemble::ElasticityExplicit::integrateJacobian(
 					topology::Jacobian* jacobian,
-					const double t,
+					const PylithScalar t,
 					topology::SolutionFields* fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -686,7 +688,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -716,8 +718,8 @@
   assert(0 != jacobianMat);
 
   // Get parameters used in integration.
-  const double dt = _dt;
-  const double dt2 = dt*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
   assert(dt > 0);
 
   const ALE::Obj<SieveMesh::order_type>& globalOrder = 
@@ -728,7 +730,7 @@
 				 (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
 					   sieveMesh->depth())*spaceDim);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -773,20 +775,20 @@
     _resetCellMatrix();
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Get material physical properties at quadrature points for this cell
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
 
     // Compute Jacobian for inertial terms
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = 
+      const PylithScalar wt = 
           quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad] / dt2;
       for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
-        const double valI = wt*basis[iQ+iBasis];
+        const PylithScalar valI = wt*basis[iQ+iBasis];
         for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-          const double valIJ = valI * basis[iQ+jBasis];
+          const PylithScalar valIJ = valI * basis[iQ+jBasis];
           for (int iDim=0; iDim < spaceDim; ++iDim) {
             const int iBlock = (iBasis*spaceDim + iDim) * (numBasis*spaceDim);
             const int jBlock = (jBasis*spaceDim + iDim);
@@ -827,7 +829,7 @@
 void
 pylith::feassemble::ElasticityExplicit::integrateJacobian(
 			    topology::Field<topology::Mesh>* jacobian,
-			    const double t,
+			    const PylithScalar t,
 			    topology::SolutionFields* fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -846,7 +848,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -868,17 +870,17 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get parameters used in integration.
-  const double dt = _dt;
-  const double dt2 = dt*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
   assert(dt > 0);
-  double_array valuesIJ(numBasis);
+  scalar_array valuesIJ(numBasis);
 
   // Get sections
   const ALE::Obj<RealSection>& jacobianSection = jacobian->section();
   assert(!jacobianSection.isNull());
   UpdateAddVisitor jacobianVisitor(*jacobianSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -922,19 +924,19 @@
     _resetCellVector();
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Get material physical properties at quadrature points for this cell
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
 
     // Compute Jacobian for inertial terms
     valuesIJ = 0.0;
     for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad]
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad]
 	/ dt2;
       const int iQ = iQuad * numBasis;
-      double valJ = 0.0;
+      PylithScalar valJ = 0.0;
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
         valJ += basis[iQ + jBasis];
       valJ *= wt;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicit.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -88,13 +88,13 @@
    *
    * @param dt Time step
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set normalized viscosity for numerical damping.
    *
    * @param viscosity Normalized viscosity (viscosity / elastic modulus).
    */
-  void normViscosity(const double viscosity);
+  void normViscosity(const PylithScalar viscosity);
 
   /** Set flag for setting constraints for total field solution or
    *  incremental field solution.
@@ -110,7 +110,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to residual term (r) for operator.
@@ -120,7 +120,7 @@
    * @param fields Solution fields
    */
   void integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
-       const double t,
+       const PylithScalar t,
        topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -131,7 +131,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -142,7 +142,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
@@ -157,8 +157,8 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _dtm1; ///< Time step for t-dt1 -> t
-  double _normViscosity; ///< Normalized viscosity for numerical damping.
+  PylithScalar _dtm1; ///< Time step for t-dt1 -> t
+  PylithScalar _normViscosity; ///< Normalized viscosity for numerical damping.
 
 }; // ElasticityExplicit
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
 #include "pylith/utils/lapack.h" // USES LAPACKdgesvd
 
@@ -68,7 +68,7 @@
 // ----------------------------------------------------------------------
 // Set time step for advancing from time t to time t+dt.
 void
-pylith::feassemble::ElasticityExplicitLgDeform::timeStep(const double dt)
+pylith::feassemble::ElasticityExplicitLgDeform::timeStep(const PylithScalar dt)
 { // timeStep
   if (_dt != -1.0)
     _dtm1 = _dt;
@@ -83,7 +83,7 @@
 // ----------------------------------------------------------------------
 // Set normalized viscosity for numerical damping.
 void
-pylith::feassemble::ElasticityExplicitLgDeform::normViscosity(const double viscosity)
+pylith::feassemble::ElasticityExplicitLgDeform::normViscosity(const PylithScalar viscosity)
 { // normViscosity
   if (viscosity < 0.0) {
     std::ostringstream msg;
@@ -111,12 +111,12 @@
 void
 pylith::feassemble::ElasticityExplicitLgDeform::integrateResidual(
 			  const topology::Field<topology::Mesh>& residual,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidual
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityExplicitLgDeform::*elasticityResidual_fn_type)
-    (const double_array&, const double_array&);
+    (const scalar_array&, const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -135,7 +135,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -175,10 +175,10 @@
     assert(0);
 
   // Allocate vectors for cell values.
-  double_array deformCell(numQuadPts*spaceDim*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array deformCell(numQuadPts*spaceDim*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -191,23 +191,23 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array accCell(numBasis*spaceDim);
+  scalar_array accCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& accSection = 
     fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
   RestrictVisitor accVisitor(*accSection, accCell.size(), &accCell[0]);
 
 #if 0 // Numerical damping not yet implemented
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
 
-  double_array dispAdjCell(numBasis*spaceDim);
+  scalar_array dispAdjCell(numBasis*spaceDim);
 #endif
 
-  double_array dispCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = fields->get("disp(t)").section();
   assert(!dispSection.isNull());
   RestrictVisitor dispVisitor(*dispSection, dispCell.size(), &dispCell[0]);
@@ -215,7 +215,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -223,15 +223,15 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale = 
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale = 
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
 				    _normalizer->densityScale());
 
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(_normViscosity > 0.0);
   assert(dt > 0);
-  const double viscosity = dt*_normViscosity;
+  const PylithScalar viscosity = dt*_normViscosity;
 
   _logger->eventEnd(setupEvent);
   _logger->eventBegin(computeEvent);
@@ -268,10 +268,10 @@
     sieveMesh->restrictClosure(*c_iter, dispVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
-    const double_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
 
     // Compute body force vector if gravity is being used.
     if (0 != _gravityField) {
@@ -279,24 +279,25 @@
       assert(0 != cs);
       
       // Get density at quadrature points for this cell
-      const double_array& density = _material->calcDensity();
+      const scalar_array& density = _material->calcDensity();
 
       quadPtsGlobal = quadPtsNondim;
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
 				  lengthScale);
 
       // Compute action for element body forces
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-	const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+	const int err = db->query(&gravVec[0], gravVec.size(),
 					     &quadPtsGlobal[0], spaceDim, cs);
 	if (err)
 	  throw std::runtime_error("Unable to get gravity vector for point.");
 	_normalizer->nondimensionalize(&gravVec[0], gravVec.size(), 
 				       gravityScale);
-	const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+	const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
 	for (int iBasis=0, iQ=iQuad*numBasis;
 	     iBasis < numBasis; ++iBasis) {
-	  const double valI = wt*basis[iQ+iBasis];
+	  const PylithScalar valI = wt*basis[iQ+iBasis];
 	  for (int iDim=0; iDim < spaceDim; ++iDim) {
 	    _cellVector[iBasis*spaceDim+iDim] += valI*gravVec[iDim];
 	  } // for
@@ -306,14 +307,14 @@
     } // if
 
     // Compute action for inertial terms
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = 
+      const PylithScalar wt = 
 	quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
       for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-        const double valI = wt*basis[iQuad*numBasis+iBasis];
+        const PylithScalar valI = wt*basis[iQuad*numBasis+iBasis];
         for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-          const double valIJ = valI * basis[iQuad*numBasis+jBasis];
+          const PylithScalar valIJ = valI * basis[iQuad*numBasis+jBasis];
           for (int iDim=0; iDim < spaceDim; ++iDim)
             _cellVector[iBasis*spaceDim+iDim] -= 
 	      valIJ * accCell[jBasis*spaceDim+iDim];
@@ -334,7 +335,7 @@
     _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispCell,
 		     numBasis, numQuadPts, spaceDim);
     calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
     CALL_MEMBER_FN(*this, elasticityResidualFn)(stressCell, dispCell);
 
@@ -351,12 +352,12 @@
 void
 pylith::feassemble::ElasticityExplicitLgDeform::integrateResidualLumped(
 			  const topology::Field<topology::Mesh>& residual,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidualLumped
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityExplicitLgDeform::*elasticityResidual_fn_type)
-    (const double_array&, const double_array&);
+    (const scalar_array&, const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -375,7 +376,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -415,10 +416,10 @@
     assert(0);
 
   // Allocate vectors for cell values.
-  double_array deformCell(numQuadPts*spaceDim*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array deformCell(numQuadPts*spaceDim*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -431,23 +432,23 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array accCell(numBasis*spaceDim);
+  scalar_array accCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& accSection = 
     fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
   RestrictVisitor accVisitor(*accSection, accCell.size(), &accCell[0]);
 
 #if 0 // Numerical damping not yet implemented
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
 
-  double_array dispAdjCell(numBasis*spaceDim);
+  scalar_array dispAdjCell(numBasis*spaceDim);
 #endif
 
-  double_array dispCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = fields->get("disp(t)").section();
   assert(!dispSection.isNull());
   RestrictVisitor dispVisitor(*dispSection, dispCell.size(), &dispCell[0]);
@@ -455,7 +456,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -463,13 +464,13 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale = 
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale = 
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
 				    _normalizer->densityScale());
 
   // Get parameters used in integration.
-  double_array valuesIJ(numBasis);
+  scalar_array valuesIJ(numBasis);
 
   _logger->eventEnd(setupEvent);
   _logger->eventBegin(computeEvent);
@@ -506,10 +507,10 @@
     sieveMesh->restrictClosure(*c_iter, dispVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
-    const double_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
 
     // Compute body force vector if gravity is being used.
     if (0 != _gravityField) {
@@ -517,24 +518,25 @@
       assert(0 != cs);
       
       // Get density at quadrature points for this cell
-      const double_array& density = _material->calcDensity();
+      const scalar_array& density = _material->calcDensity();
 
       quadPtsGlobal = quadPtsNondim;
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
 				  lengthScale);
 
       // Compute action for element body forces
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-	const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+	const int err = db->query(&gravVec[0], gravVec.size(),
 					     &quadPtsGlobal[0], spaceDim, cs);
 	if (err)
 	  throw std::runtime_error("Unable to get gravity vector for point.");
 	_normalizer->nondimensionalize(&gravVec[0], gravVec.size(), 
 				       gravityScale);
-	const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+	const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
 	for (int iBasis=0, iQ=iQuad*numBasis;
 	     iBasis < numBasis; ++iBasis) {
-	  const double valI = wt*basis[iQ+iBasis];
+	  const PylithScalar valI = wt*basis[iQ+iBasis];
 	  for (int iDim=0; iDim < spaceDim; ++iDim) {
 	    _cellVector[iBasis*spaceDim+iDim] += valI*gravVec[iDim];
 	  } // for
@@ -544,12 +546,12 @@
     } // if
 
     // Compute action for inertial terms
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     valuesIJ = 0.0;
     for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+      const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
       const int iQ = iQuad * numBasis;
-      double valJ = 0.0;
+      PylithScalar valJ = 0.0;
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
 	valJ += basis[iQ + jBasis];
       valJ *= wt;
@@ -573,7 +575,7 @@
     _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispCell,
 		     numBasis, numQuadPts, spaceDim);
     calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
     CALL_MEMBER_FN(*this, elasticityResidualFn)(stressCell, dispCell);
     
@@ -590,7 +592,7 @@
 void
 pylith::feassemble::ElasticityExplicitLgDeform::integrateJacobian(
 					topology::Jacobian* jacobian,
-					const double t,
+					const PylithScalar t,
 					topology::SolutionFields* fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -609,7 +611,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -639,8 +641,8 @@
   assert(0 != jacobianMat);
 
   // Get parameters used in integration.
-  const double dt = _dt;
-  const double dt2 = dt*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
   assert(dt > 0);
 
   const ALE::Obj<SieveMesh::order_type>& globalOrder = 
@@ -651,7 +653,7 @@
 				 (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
 					   sieveMesh->depth())*spaceDim);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -681,20 +683,20 @@
     _resetCellMatrix();
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Get material physical properties at quadrature points for this cell
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
 
     // Compute Jacobian for inertial terms
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = 
+      const PylithScalar wt = 
 	quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad] / dt2;
       for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
-        const double valI = wt*basis[iQ+iBasis];
+        const PylithScalar valI = wt*basis[iQ+iBasis];
         for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-          const double valIJ = valI * basis[iQ+jBasis];
+          const PylithScalar valIJ = valI * basis[iQ+jBasis];
           for (int iDim=0; iDim < spaceDim; ++iDim) {
             const int iBlock = (iBasis*spaceDim + iDim) * (numBasis*spaceDim);
             const int jBlock = (jBasis*spaceDim + iDim);
@@ -724,7 +726,7 @@
 void
 pylith::feassemble::ElasticityExplicitLgDeform::integrateJacobian(
 			    topology::Field<topology::Mesh>* jacobian,
-			    const double t,
+			    const PylithScalar t,
 			    topology::SolutionFields* fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -743,7 +745,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -765,8 +767,8 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get parameters used in integration.
-  const double dt = _dt;
-  const double dt2 = dt*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
   assert(dt > 0);
 
   // Get sections
@@ -774,7 +776,7 @@
   assert(!jacobianSection.isNull());
   UpdateAddVisitor jacobianVisitor(*jacobianSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -804,20 +806,20 @@
     _resetCellMatrix();
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Get material physical properties at quadrature points for this cell
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
 
     // Compute Jacobian for inertial terms
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double wt = 
+      const PylithScalar wt = 
 	quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad] / dt2;
       for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
-        const double valI = wt*basis[iQ+iBasis];
+        const PylithScalar valI = wt*basis[iQ+iBasis];
         for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-          const double valIJ = valI * basis[iQ+jBasis];
+          const PylithScalar valIJ = valI * basis[iQ+jBasis];
           for (int iDim=0; iDim < spaceDim; ++iDim) {
             const int iBlock = (iBasis*spaceDim + iDim) * (numBasis*spaceDim);
             const int jBlock = (jBasis*spaceDim + iDim);

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitLgDeform.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -90,13 +90,13 @@
    *
    * @param dt Time step
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set normalized viscosity for numerical damping.
    *
    * @param viscosity Normalized viscosity (viscosity / elastic modulus).
    */
-  void normViscosity(const double viscosity);
+  void normViscosity(const PylithScalar viscosity);
 
   /** Set flag for setting constraints for total field solution or
    *  incremental field solution.
@@ -112,7 +112,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to residual term (r) for operator.
@@ -122,7 +122,7 @@
    * @param fields Solution fields
    */
   void integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
-       const double t,
+       const PylithScalar t,
        topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -133,7 +133,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -144,7 +144,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
@@ -159,8 +159,8 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _dtm1; ///< Time step for t-dt1 -> t
-  double _normViscosity; ///< Normalized viscosity for numerical damping.
+  PylithScalar _dtm1; ///< Time step for t-dt1 -> t
+  PylithScalar _normViscosity; ///< Normalized viscosity for numerical damping.
 
 }; // ElasticityExplicitLgDeform
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,7 +27,7 @@
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
 #include "pylith/utils/lapack.h" // USES LAPACKdgesvd
 
@@ -75,7 +75,7 @@
 // ----------------------------------------------------------------------
 // Set time step for advancing from time t to time t+dt.
 void
-pylith::feassemble::ElasticityExplicitTet4::timeStep(const double dt)
+pylith::feassemble::ElasticityExplicitTet4::timeStep(const PylithScalar dt)
 { // timeStep
   if (_dt != -1.0)
     _dtm1 = _dt;
@@ -90,7 +90,7 @@
 // ----------------------------------------------------------------------
 // Set normalized viscosity for numerical damping.
 void
-pylith::feassemble::ElasticityExplicitTet4::normViscosity(const double viscosity)
+pylith::feassemble::ElasticityExplicitTet4::normViscosity(const PylithScalar viscosity)
 { // normViscosity
   if (viscosity < 0.0) {
     std::ostringstream msg;
@@ -119,7 +119,7 @@
 void
 pylith::feassemble::ElasticityExplicitTet4::integrateResidual(
 			  const topology::Field<topology::Mesh>& residual,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidual
   assert(0 != _quadrature);
@@ -139,7 +139,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   assert(_quadrature->numQuadPts() == _numQuadPts);
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == _numQuadPts);
   assert(_quadrature->numBasis() == _numBasis);
   assert(_quadrature->spaceDim() == _spaceDim);
@@ -163,10 +163,10 @@
 			   "domain not implemented yet.");
 
   // Allocate vectors for cell values.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -179,20 +179,20 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array accCell(numBasis*spaceDim);
+  scalar_array accCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& accSection = 
     fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
   RestrictVisitor accVisitor(*accSection, accCell.size(), &accCell[0]);
 
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
 
-  double_array dispCell(numBasis*spaceDim);
-  double_array dispAdjCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array dispAdjCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = 
     fields->get("disp(t)").section();
   assert(!dispSection.isNull());
@@ -201,7 +201,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
   
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -209,15 +209,15 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale = 
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale = 
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
 				    _normalizer->densityScale());
 
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(_normViscosity > 0.0);
   assert(dt > 0);
-  const double viscosity = dt*_normViscosity;
+  const PylithScalar viscosity = dt*_normViscosity;
 
   _logger->eventEnd(setupEvent);
 #if !defined(DETAILED_EVENT_LOGGING)
@@ -235,7 +235,7 @@
     // Compute geometry information for current cell
     coordsVisitor.clear();
     sieveMesh->restrictClosure(*c_iter, coordsVisitor);
-    const double volume = _volume(coordinatesCell);
+    const PylithScalar volume = _volume(coordinatesCell);
     assert(volume > 0.0);
 
 #if defined(DETAILED_EVENT_LOGGING)
@@ -269,7 +269,7 @@
     _logger->eventBegin(computeEvent);
 #endif
 
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     assert(density.size() == 1);
 
     // Compute body force vector if gravity is being used.
@@ -286,13 +286,14 @@
           lengthScale);
 
       // Compute action for element body forces
-      const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
+      const int err = db->query(&gravVec[0], gravVec.size(),
         &quadPtsGlobal[0], spaceDim, cs);
       if (err)
         throw std::runtime_error("Unable to get gravity vector for point.");
       _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
           gravityScale);
-      const double wtVertex = density[0] * volume / 4.0;
+      const PylithScalar wtVertex = density[0] * volume / 4.0;
       for (int iBasis=0; iBasis < numBasis; ++iBasis)
         for (int iDim=0; iDim < spaceDim; ++iDim)
             _cellVector[iBasis * spaceDim + iDim] += wtVertex * gravVec[iDim];
@@ -300,7 +301,7 @@
     } // if
 
     // Compute action for inertial terms
-    const double wtVertex = density[0] * volume / 16.0;
+    const PylithScalar wtVertex = density[0] * volume / 16.0;
     for (int iBasis = 0; iBasis < numBasis; ++iBasis)
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
         for (int iDim = 0; iDim < spaceDim; ++iDim)
@@ -318,38 +319,38 @@
     dispAdjCell = dispCell + viscosity * velCell;
 
     // Compute B(transpose) * sigma, first computing strains
-    const double x0 = coordinatesCell[0];
-    const double y0 = coordinatesCell[1];
-    const double z0 = coordinatesCell[2];
+    const PylithScalar x0 = coordinatesCell[0];
+    const PylithScalar y0 = coordinatesCell[1];
+    const PylithScalar z0 = coordinatesCell[2];
 
-    const double x1 = coordinatesCell[3];
-    const double y1 = coordinatesCell[4];
-    const double z1 = coordinatesCell[5];
+    const PylithScalar x1 = coordinatesCell[3];
+    const PylithScalar y1 = coordinatesCell[4];
+    const PylithScalar z1 = coordinatesCell[5];
 
-    const double x2 = coordinatesCell[6];
-    const double y2 = coordinatesCell[7];
-    const double z2 = coordinatesCell[8];
+    const PylithScalar x2 = coordinatesCell[6];
+    const PylithScalar y2 = coordinatesCell[7];
+    const PylithScalar z2 = coordinatesCell[8];
 
-    const double x3 = coordinatesCell[9];
-    const double y3 = coordinatesCell[10];
-    const double z3 = coordinatesCell[11];
+    const PylithScalar x3 = coordinatesCell[9];
+    const PylithScalar y3 = coordinatesCell[10];
+    const PylithScalar z3 = coordinatesCell[11];
 
-    const double scaleB = 6.0 * volume;
-    const double b1 = (y1*(z3-z2)-y2*z3+y3*z2-(y3-y2)*z1) / scaleB;
-    const double c1 = (-x1*(z3-z2)+x2*z3-x3*z2-(x2-x3)*z1) / scaleB;
-    const double d1 = (-x2*y3-x1*(y2-y3)+x3*y2+(x2-x3)*y1) / scaleB;
+    const PylithScalar scaleB = 6.0 * volume;
+    const PylithScalar b1 = (y1*(z3-z2)-y2*z3+y3*z2-(y3-y2)*z1) / scaleB;
+    const PylithScalar c1 = (-x1*(z3-z2)+x2*z3-x3*z2-(x2-x3)*z1) / scaleB;
+    const PylithScalar d1 = (-x2*y3-x1*(y2-y3)+x3*y2+(x2-x3)*y1) / scaleB;
 
-    const double b2 = (-y0*z3-y2*(z0-z3)+(y0-y3)*z2+y3*z0) / scaleB;
-    const double c2 = (x0*z3+x2*(z0-z3)+(x3-x0)*z2-x3*z0) / scaleB;
-    const double d2 = (x2*(y3-y0)-x0*y3-(x3-x0)*y2+x3*y0) / scaleB;
+    const PylithScalar b2 = (-y0*z3-y2*(z0-z3)+(y0-y3)*z2+y3*z0) / scaleB;
+    const PylithScalar c2 = (x0*z3+x2*(z0-z3)+(x3-x0)*z2-x3*z0) / scaleB;
+    const PylithScalar d2 = (x2*(y3-y0)-x0*y3-(x3-x0)*y2+x3*y0) / scaleB;
 
-    const double b3 = (-(y1-y0)*z3+y3*(z1-z0)-y0*z1+y1*z0) / scaleB;
-    const double c3 = (-(x0-x1)*z3-x3*(z1-z0)+x0*z1-x1*z0) / scaleB;
-    const double d3 = ((x0-x1)*y3-x0*y1-x3*(y0-y1)+x1*y0) / scaleB;
+    const PylithScalar b3 = (-(y1-y0)*z3+y3*(z1-z0)-y0*z1+y1*z0) / scaleB;
+    const PylithScalar c3 = (-(x0-x1)*z3-x3*(z1-z0)+x0*z1-x1*z0) / scaleB;
+    const PylithScalar d3 = ((x0-x1)*y3-x0*y1-x3*(y0-y1)+x1*y0) / scaleB;
 
-    const double b4 = (-y0*(z2-z1)+y1*z2-y2*z1+(y2-y1)*z0) / scaleB;
-    const double c4 = (x0*(z2-z1)-x1*z2+x2*z1+(x1-x2)*z0) / scaleB;
-    const double d4 = (x1*y2+x0*(y1-y2)-x2*y1-(x1-x2)*y0) / scaleB;
+    const PylithScalar b4 = (-y0*(z2-z1)+y1*z2-y2*z1+(y2-y1)*z0) / scaleB;
+    const PylithScalar c4 = (x0*(z2-z1)-x1*z2+x2*z1+(x1-x2)*z0) / scaleB;
+    const PylithScalar d4 = (x1*y2+x0*(y1-y2)-x2*y1-(x1-x2)*y0) / scaleB;
 
     assert(strainCell.size() == 6);
     strainCell[0] = 
@@ -377,7 +378,7 @@
        d2 * dispAdjCell[3] + b1 * dispAdjCell[2] + 
        b4 * dispAdjCell[11] + d1 * dispAdjCell[0]) / 2.0;
 
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
 #if defined(DETAILED_EVENT_LOGGING)
     PetscLogFlops(196);
@@ -425,12 +426,12 @@
 void
 pylith::feassemble::ElasticityExplicitTet4::integrateResidualLumped(
         const topology::Field<topology::Mesh>& residual,
-        const double t,
+        const PylithScalar t,
         topology::SolutionFields* const fields)
 { // integrateResidualLumped
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityExplicitTet4::*elasticityResidual_fn_type)
-    (const double_array&);
+    (const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -471,10 +472,10 @@
          "domain not implemented yet.");
 
   // Allocate vectors for cell values.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -490,20 +491,20 @@
   assert(!sieve.isNull());
 
   // Get sections
-  double_array accCell(numBasis*spaceDim);
+  scalar_array accCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& accSection = 
     fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
   RestrictVisitor accVisitor(*accSection, accCell.size(), &accCell[0]);
 
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
 
-  double_array dispCell(numBasis*spaceDim);
-  double_array dispAdjCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array dispAdjCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = 
     fields->get("disp(t)").section();
   assert(!dispSection.isNull());
@@ -512,7 +513,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -520,18 +521,18 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale =
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale =
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
             _normalizer->densityScale());
 
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(_normViscosity > 0.0);
   assert(dt > 0);
-  const double viscosity = dt*_normViscosity;
+  const PylithScalar viscosity = dt*_normViscosity;
 
   // Get parameters used in integration.
-  double_array valuesIJ(numBasis);
+  scalar_array valuesIJ(numBasis);
 
   _logger->eventEnd(setupEvent);
 #if !defined(DETAILED_EVENT_LOGGING)
@@ -579,7 +580,7 @@
 #endif
 
     // Compute geometry information for current cell
-    const double volume = _volume(coordinatesCell);
+    const PylithScalar volume = _volume(coordinatesCell);
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(geometryEvent);
@@ -590,7 +591,7 @@
     _material->retrievePropsAndVars(*c_iter);
 
     // Get density at quadrature points for this cell
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(stateVarsEvent);
@@ -614,13 +615,14 @@
           lengthScale);
 
       // Compute action for element body forces
-      const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
+      const int err = db->query(&gravVec[0], gravVec.size(),
         &quadPtsGlobal[0], spaceDim, cs);
       if (err)
         throw std::runtime_error("Unable to get gravity vector for point.");
       _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
           gravityScale);
-      const double wtVertex = density[0] * volume / 4.0;
+      const PylithScalar wtVertex = density[0] * volume / 4.0;
       for (int iBasis=0; iBasis < numBasis; ++iBasis)
         for (int iDim=0; iDim < spaceDim; ++iDim)
             _cellVector[iBasis * spaceDim + iDim] += wtVertex * gravVec[iDim];
@@ -628,7 +630,7 @@
     } // if
 
     // Compute action for inertial terms
-    const double wtVertex = density[0] * volume / 4.0;
+    const PylithScalar wtVertex = density[0] * volume / 4.0;
     _cellVector -= wtVertex * accCell;
 
 #if defined(DETAILED_EVENT_LOGGING)
@@ -642,38 +644,38 @@
     dispAdjCell = dispCell + viscosity * velCell;    
 
     // Compute B(transpose) * sigma, first computing strains
-    const double x0 = coordinatesCell[0];
-    const double y0 = coordinatesCell[1];
-    const double z0 = coordinatesCell[2];
+    const PylithScalar x0 = coordinatesCell[0];
+    const PylithScalar y0 = coordinatesCell[1];
+    const PylithScalar z0 = coordinatesCell[2];
 
-    const double x1 = coordinatesCell[3];
-    const double y1 = coordinatesCell[4];
-    const double z1 = coordinatesCell[5];
+    const PylithScalar x1 = coordinatesCell[3];
+    const PylithScalar y1 = coordinatesCell[4];
+    const PylithScalar z1 = coordinatesCell[5];
 
-    const double x2 = coordinatesCell[6];
-    const double y2 = coordinatesCell[7];
-    const double z2 = coordinatesCell[8];
+    const PylithScalar x2 = coordinatesCell[6];
+    const PylithScalar y2 = coordinatesCell[7];
+    const PylithScalar z2 = coordinatesCell[8];
 
-    const double x3 = coordinatesCell[9];
-    const double y3 = coordinatesCell[10];
-    const double z3 = coordinatesCell[11];
+    const PylithScalar x3 = coordinatesCell[9];
+    const PylithScalar y3 = coordinatesCell[10];
+    const PylithScalar z3 = coordinatesCell[11];
 
-    const double scaleB = 6.0 * volume;
-    const double b1 = (y1*(z3-z2)-y2*z3+y3*z2-(y3-y2)*z1) / scaleB;
-    const double c1 = (-x1*(z3-z2)+x2*z3-x3*z2-(x2-x3)*z1) / scaleB;
-    const double d1 = (-x2*y3-x1*(y2-y3)+x3*y2+(x2-x3)*y1) / scaleB;
+    const PylithScalar scaleB = 6.0 * volume;
+    const PylithScalar b1 = (y1*(z3-z2)-y2*z3+y3*z2-(y3-y2)*z1) / scaleB;
+    const PylithScalar c1 = (-x1*(z3-z2)+x2*z3-x3*z2-(x2-x3)*z1) / scaleB;
+    const PylithScalar d1 = (-x2*y3-x1*(y2-y3)+x3*y2+(x2-x3)*y1) / scaleB;
 
-    const double b2 = (-y0*z3-y2*(z0-z3)+(y0-y3)*z2+y3*z0) / scaleB;
-    const double c2 = (x0*z3+x2*(z0-z3)+(x3-x0)*z2-x3*z0) / scaleB;
-    const double d2 = (x2*(y3-y0)-x0*y3-(x3-x0)*y2+x3*y0) / scaleB;
+    const PylithScalar b2 = (-y0*z3-y2*(z0-z3)+(y0-y3)*z2+y3*z0) / scaleB;
+    const PylithScalar c2 = (x0*z3+x2*(z0-z3)+(x3-x0)*z2-x3*z0) / scaleB;
+    const PylithScalar d2 = (x2*(y3-y0)-x0*y3-(x3-x0)*y2+x3*y0) / scaleB;
 
-    const double b3 = (-(y1-y0)*z3+y3*(z1-z0)-y0*z1+y1*z0) / scaleB;
-    const double c3 = (-(x0-x1)*z3-x3*(z1-z0)+x0*z1-x1*z0) / scaleB;
-    const double d3 = ((x0-x1)*y3-x0*y1-x3*(y0-y1)+x1*y0) / scaleB;
+    const PylithScalar b3 = (-(y1-y0)*z3+y3*(z1-z0)-y0*z1+y1*z0) / scaleB;
+    const PylithScalar c3 = (-(x0-x1)*z3-x3*(z1-z0)+x0*z1-x1*z0) / scaleB;
+    const PylithScalar d3 = ((x0-x1)*y3-x0*y1-x3*(y0-y1)+x1*y0) / scaleB;
 
-    const double b4 = (-y0*(z2-z1)+y1*z2-y2*z1+(y2-y1)*z0) / scaleB;
-    const double c4 = (x0*(z2-z1)-x1*z2+x2*z1+(x1-x2)*z0) / scaleB;
-    const double d4 = (x1*y2+x0*(y1-y2)-x2*y1-(x1-x2)*y0) / scaleB;
+    const PylithScalar b4 = (-y0*(z2-z1)+y1*z2-y2*z1+(y2-y1)*z0) / scaleB;
+    const PylithScalar c4 = (x0*(z2-z1)-x1*z2+x2*z1+(x1-x2)*z0) / scaleB;
+    const PylithScalar d4 = (x1*y2+x0*(y1-y2)-x2*y1-(x1-x2)*y0) / scaleB;
 
     assert(strainCell.size() == 6);
     strainCell[0] = 
@@ -701,7 +703,7 @@
        d2 * dispAdjCell[3] + b1 * dispAdjCell[2] + 
        b4 * dispAdjCell[11] + d1 * dispAdjCell[0]) / 2.0;
 
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
 #if defined(DETAILED_EVENT_LOGGING)
     PetscLogFlops(196);
@@ -762,7 +764,7 @@
 void
 pylith::feassemble::ElasticityExplicitTet4::integrateJacobian(
 					topology::Jacobian* jacobian,
-					const double t,
+					const PylithScalar t,
 					topology::SolutionFields* fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -781,7 +783,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -803,7 +805,7 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array dispCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = 
     fields->get("disp(t)").section();
   assert(!dispSection.isNull());
@@ -813,8 +815,8 @@
   assert(0 != jacobianMat);
 
   // Get parameters used in integration.
-  const double dt = _dt;
-  const double dt2 = dt*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
   assert(dt > 0);
 
   const ALE::Obj<SieveMesh::order_type>& globalOrder = 
@@ -825,7 +827,7 @@
 				 (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
 					   sieveMesh->depth())*spaceDim);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -848,7 +850,7 @@
     // Compute geometry information for current cell
     coordsVisitor.clear();
     sieveMesh->restrictClosure(*c_iter, coordsVisitor);
-    const double volume = _volume(coordinatesCell);
+    const PylithScalar volume = _volume(coordinatesCell);
     assert(volume > 0.0);
 
 #if defined(DETAILED_EVENT_LOGGING)
@@ -868,11 +870,11 @@
     _resetCellMatrix();
 
     // Get material physical properties at quadrature points for this cell
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     assert(density.size() == 1);
 
     // Compute Jacobian for inertial terms
-    const double wtVertex = density[0] * volume / (16.0 * dt2);
+    const PylithScalar wtVertex = density[0] * volume / (16.0 * dt2);
     for (int iBasis = 0; iBasis < numBasis; ++iBasis)
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
 	for (int iDim=0; iDim < spaceDim; ++iDim) {
@@ -913,7 +915,7 @@
 void
 pylith::feassemble::ElasticityExplicitTet4::integrateJacobian(
 			    topology::Field<topology::Mesh>* jacobian,
-			    const double t,
+			    const PylithScalar t,
 			    topology::SolutionFields* fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -954,8 +956,8 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get parameters used in integration.
-  const double dt = _dt;
-  const double dt2 = dt*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
   assert(dt > 0);
 
   // Get sections
@@ -963,7 +965,7 @@
   assert(!jacobianSection.isNull());
   UpdateAddVisitor jacobianVisitor(*jacobianSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -984,7 +986,7 @@
 #endif
     coordsVisitor.clear();
     sieveMesh->restrictClosure(*c_iter, coordsVisitor);
-    const double volume = _volume(coordinatesCell);
+    const PylithScalar volume = _volume(coordinatesCell);
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(geometryEvent);
@@ -1000,7 +1002,7 @@
 #endif
 
     // Compute Jacobian for inertial terms
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     assert(volume > 0.0);
     _cellVector = density[0] * volume / (4.0 * dt2);
     
@@ -1030,35 +1032,35 @@
 
 // ----------------------------------------------------------------------
 // Compute volume of tetrahedral cell.
-double
+PylithScalar
 pylith::feassemble::ElasticityExplicitTet4::_volume(
-			     const double_array& coordinatesCell) const
+			     const scalar_array& coordinatesCell) const
 { // __volume
   assert(12 == coordinatesCell.size());
 
-  const double x0 = coordinatesCell[0];
-  const double y0 = coordinatesCell[1];
-  const double z0 = coordinatesCell[2];
+  const PylithScalar x0 = coordinatesCell[0];
+  const PylithScalar y0 = coordinatesCell[1];
+  const PylithScalar z0 = coordinatesCell[2];
 
-  const double x1 = coordinatesCell[3];
-  const double y1 = coordinatesCell[4];
-  const double z1 = coordinatesCell[5];
+  const PylithScalar x1 = coordinatesCell[3];
+  const PylithScalar y1 = coordinatesCell[4];
+  const PylithScalar z1 = coordinatesCell[5];
 
-  const double x2 = coordinatesCell[6];
-  const double y2 = coordinatesCell[7];
-  const double z2 = coordinatesCell[8];
+  const PylithScalar x2 = coordinatesCell[6];
+  const PylithScalar y2 = coordinatesCell[7];
+  const PylithScalar z2 = coordinatesCell[8];
 
-  const double x3 = coordinatesCell[9];
-  const double y3 = coordinatesCell[10];
-  const double z3 = coordinatesCell[11];
+  const PylithScalar x3 = coordinatesCell[9];
+  const PylithScalar y3 = coordinatesCell[10];
+  const PylithScalar z3 = coordinatesCell[11];
 
-  const double det = 
+  const PylithScalar det = 
     x1*(y2*z3-y3*z2)-y1*(x2*z3-x3*z2)+(x2*y3-x3*y2)*z1 - 
     x0*((y2*z3-y3*z2)-y1*(z3-z2)+(y3-y2)*z1) +
     y0*((x2*z3-x3*z2)-x1*(z3-z2)+(x3-x2)*z1) -
     z0*((x2*y3-x3*y2)-x1*(y3-y2)+(x3-x2)*y1);
     
-  const double volume = det / 6.0;
+  const PylithScalar volume = det / 6.0;
   PetscLogFlops(48);
 
   return volume;  

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -88,13 +88,13 @@
    *
    * @param dt Time step
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set normalized viscosity for numerical damping.
    *
    * @param viscosity Normalized viscosity (viscosity / elastic modulus).
    */
-  void normViscosity(const double viscosity);
+  void normViscosity(const PylithScalar viscosity);
 
   /** Set flag for setting constraints for total field solution or
    *  incremental field solution.
@@ -110,7 +110,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to residual term (r) for operator.
@@ -120,7 +120,7 @@
    * @param fields Solution fields
    */
   void integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
-       const double t,
+       const PylithScalar t,
        topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -131,7 +131,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -142,7 +142,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
 // PRIVATE METHODS //////////////////////////////////////////////////////
@@ -153,22 +153,22 @@
    * @param coordinatesCell Coordinates of vertices of cell.
    * @returns Volume of cell.
    */
-  double _volume(const double_array& coordinatesCell) const;
+  PylithScalar _volume(const scalar_array& coordinatesCell) const;
 
   /** Compute derivatives of basis functions of tetrahedral cell.
    *
    * @param coordinatesCell Coordinates of vertices of cell.
    * @returns Derivatives of basis functions.
    */
-  const double_array& _basisDeriv(const double_array& coordinatesCell) const;
+  const scalar_array& _basisDeriv(const scalar_array& coordinatesCell) const;
 
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double_array _basisDerivArray; ///< Array of basis derivatives
+  scalar_array _basisDerivArray; ///< Array of basis derivatives
 
-  double _dtm1; ///< Time step for t-dt1 -> t
-  double _normViscosity; ///< Normalized viscosity for numerical damping.
+  PylithScalar _dtm1; ///< Time step for t-dt1 -> t
+  PylithScalar _normViscosity; ///< Normalized viscosity for numerical damping.
 
   static const int _spaceDim;
   static const int _cellDim;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,7 +27,7 @@
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
 #include "pylith/utils/lapack.h" // USES LAPACKdgesvd
 
@@ -75,7 +75,7 @@
 // ----------------------------------------------------------------------
 // Set time step for advancing from time t to time t+dt.
 void
-pylith::feassemble::ElasticityExplicitTri3::timeStep(const double dt)
+pylith::feassemble::ElasticityExplicitTri3::timeStep(const PylithScalar dt)
 { // timeStep
   if (_dt != -1.0)
     _dtm1 = _dt;
@@ -90,7 +90,7 @@
 // ----------------------------------------------------------------------
 // Set normalized viscosity for numerical damping.
 void
-pylith::feassemble::ElasticityExplicitTri3::normViscosity(const double viscosity)
+pylith::feassemble::ElasticityExplicitTri3::normViscosity(const PylithScalar viscosity)
 { // normViscosity
   if (viscosity < 0.0) {
     std::ostringstream msg;
@@ -119,7 +119,7 @@
 void
 pylith::feassemble::ElasticityExplicitTri3::integrateResidual(
 			  const topology::Field<topology::Mesh>& residual,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidual
   assert(0 != _quadrature);
@@ -139,7 +139,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   assert(_quadrature->numQuadPts() == _numQuadPts);
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == _numQuadPts);
   assert(_quadrature->numBasis() == _numBasis);
   assert(_quadrature->spaceDim() == _spaceDim);
@@ -163,10 +163,10 @@
 			   "domain not implemented yet.");
 
   // Allocate vectors for cell values.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -179,20 +179,20 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array accCell(numBasis*spaceDim);
+  scalar_array accCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& accSection = 
     fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
   RestrictVisitor accVisitor(*accSection, accCell.size(), &accCell[0]);
 
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
 
-  double_array dispCell(numBasis*spaceDim);
-  double_array dispAdjCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array dispAdjCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = 
     fields->get("disp(t)").section();
   assert(!dispSection.isNull());
@@ -201,7 +201,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
   
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -209,15 +209,15 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale = 
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale = 
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
 				    _normalizer->densityScale());
 
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(_normViscosity > 0.0);
   assert(dt > 0);
-  const double viscosity = dt*_normViscosity;
+  const PylithScalar viscosity = dt*_normViscosity;
 
   _logger->eventEnd(setupEvent);
 #if !defined(DETAILED_EVENT_LOGGING)
@@ -235,7 +235,7 @@
     // Compute geometry information for current cell
     coordsVisitor.clear();
     sieveMesh->restrictClosure(*c_iter, coordsVisitor);
-    const double area = _area(coordinatesCell);
+    const PylithScalar area = _area(coordinatesCell);
     assert(area > 0.0);
 
 #if defined(DETAILED_EVENT_LOGGING)
@@ -269,7 +269,7 @@
     _logger->eventBegin(computeEvent);
 #endif
 
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     assert(density.size() == 1);
 
     // Compute body force vector if gravity is being used.
@@ -286,13 +286,14 @@
           lengthScale);
 
       // Compute action for element body forces
-      const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
+      const int err = db->query(&gravVec[0], gravVec.size(),
         &quadPtsGlobal[0], spaceDim, cs);
       if (err)
         throw std::runtime_error("Unable to get gravity vector for point.");
       _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
           gravityScale);
-      const double wtVertex = density[0] * area / 3.0;
+      const PylithScalar wtVertex = density[0] * area / 3.0;
       for (int iBasis=0; iBasis < numBasis; ++iBasis)
         for (int iDim=0; iDim < spaceDim; ++iDim)
             _cellVector[iBasis * spaceDim + iDim] += wtVertex * gravVec[iDim];
@@ -300,7 +301,7 @@
     } // if
 
     // Compute action for inertial terms
-    const double wtVertex = density[0] * area / 9.0;
+    const PylithScalar wtVertex = density[0] * area / 9.0;
     for (int iBasis = 0; iBasis < numBasis; ++iBasis)
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
         for (int iDim = 0; iDim < spaceDim; ++iDim)
@@ -318,24 +319,24 @@
     dispAdjCell = dispCell + viscosity * velCell;
 
     // Compute B(transpose) * sigma, first computing strains
-    const double x0 = coordinatesCell[0];
-    const double y0 = coordinatesCell[1];
+    const PylithScalar x0 = coordinatesCell[0];
+    const PylithScalar y0 = coordinatesCell[1];
 
-    const double x1 = coordinatesCell[2];
-    const double y1 = coordinatesCell[3];
+    const PylithScalar x1 = coordinatesCell[2];
+    const PylithScalar y1 = coordinatesCell[3];
 
-    const double x2 = coordinatesCell[4];
-    const double y2 = coordinatesCell[5];
+    const PylithScalar x2 = coordinatesCell[4];
+    const PylithScalar y2 = coordinatesCell[5];
 
-    const double scaleB = 2.0 * area;
-    const double b0 = (y1 - y2) / scaleB;
-    const double c0 = (x2 - x1) / scaleB;
+    const PylithScalar scaleB = 2.0 * area;
+    const PylithScalar b0 = (y1 - y2) / scaleB;
+    const PylithScalar c0 = (x2 - x1) / scaleB;
 
-    const double b1 = (y2 - y0) / scaleB;
-    const double c1 = (x0 - x2) / scaleB;
+    const PylithScalar b1 = (y2 - y0) / scaleB;
+    const PylithScalar c1 = (x0 - x2) / scaleB;
 
-    const double b2 = (y0 - y1) / scaleB;
-    const double c2 = (x1 - x0) / scaleB;
+    const PylithScalar b2 = (y0 - y1) / scaleB;
+    const PylithScalar c2 = (x1 - x0) / scaleB;
 
     assert(strainCell.size() == 3);
     strainCell[0] = b2*dispAdjCell[4] + b1*dispAdjCell[2] + b0*dispAdjCell[0];
@@ -346,7 +347,7 @@
 		     c1*dispAdjCell[2] + b0*dispAdjCell[1] + c0*dispAdjCell[0]) / 2.0;
 
 
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
 #if defined(DETAILED_EVENT_LOGGING)
     PetscLogFlops(34);
@@ -388,12 +389,12 @@
 void
 pylith::feassemble::ElasticityExplicitTri3::integrateResidualLumped(
         const topology::Field<topology::Mesh>& residual,
-        const double t,
+        const PylithScalar t,
         topology::SolutionFields* const fields)
 { // integrateResidualLumped
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityExplicitTri3::*elasticityResidual_fn_type)
-    (const double_array&);
+    (const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -434,10 +435,10 @@
          "domain not implemented yet.");
 
   // Allocate vectors for cell values.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -453,20 +454,20 @@
   assert(!sieve.isNull());
 
   // Get sections
-  double_array accCell(numBasis*spaceDim);
+  scalar_array accCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& accSection = 
     fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
   RestrictVisitor accVisitor(*accSection, accCell.size(), &accCell[0]);
 
-  double_array velCell(numBasis*spaceDim);
+  scalar_array velCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     fields->get("velocity(t)").section();
   assert(!velSection.isNull());
   RestrictVisitor velVisitor(*velSection, velCell.size(), &velCell[0]);
 
-  double_array dispCell(numBasis*spaceDim);
-  double_array dispAdjCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array dispAdjCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = 
     fields->get("disp(t)").section();
   assert(!dispSection.isNull());
@@ -475,7 +476,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -483,18 +484,18 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale =
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale =
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
             _normalizer->densityScale());
 
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(_normViscosity > 0.0);
   assert(dt > 0);
-  const double viscosity = dt*_normViscosity;
+  const PylithScalar viscosity = dt*_normViscosity;
 
   // Get parameters used in integration.
-  double_array valuesIJ(numBasis);
+  scalar_array valuesIJ(numBasis);
 
   _logger->eventEnd(setupEvent);
 #if !defined(DETAILED_EVENT_LOGGING)
@@ -539,7 +540,7 @@
 #endif
 
     // Compute geometry information for current cell
-    const double area = _area(coordinatesCell);
+    const PylithScalar area = _area(coordinatesCell);
     assert(area > 0.0);
 
 #if defined(DETAILED_EVENT_LOGGING)
@@ -551,7 +552,7 @@
     _material->retrievePropsAndVars(*c_iter);
 
     // Get density at quadrature points for this cell
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
 
 #if defined(DETAILED_EVENT_LOGGING)
     _logger->eventEnd(stateVarsEvent);
@@ -575,13 +576,14 @@
           lengthScale);
 
       // Compute action for element body forces
-      const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
+      const int err = db->query(&gravVec[0], gravVec.size(),
         &quadPtsGlobal[0], spaceDim, cs);
       if (err)
         throw std::runtime_error("Unable to get gravity vector for point.");
       _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
           gravityScale);
-      const double wtVertex = density[0] * area / 3.0;
+      const PylithScalar wtVertex = density[0] * area / 3.0;
       for (int iBasis=0; iBasis < numBasis; ++iBasis)
         for (int iDim=0; iDim < spaceDim; ++iDim)
             _cellVector[iBasis * spaceDim + iDim] += wtVertex * gravVec[iDim];
@@ -589,7 +591,7 @@
     } // if
 
     // Compute action for inertial terms
-    const double wtVertex = density[0] * area / 3.0;
+    const PylithScalar wtVertex = density[0] * area / 3.0;
     _cellVector -= wtVertex * accCell;
 
 #if defined(DETAILED_EVENT_LOGGING)
@@ -603,24 +605,24 @@
     dispAdjCell = dispCell + viscosity * velCell;
 
     // Compute B(transpose) * sigma, first computing strains
-    const double x0 = coordinatesCell[0];
-    const double y0 = coordinatesCell[1];
+    const PylithScalar x0 = coordinatesCell[0];
+    const PylithScalar y0 = coordinatesCell[1];
 
-    const double x1 = coordinatesCell[2];
-    const double y1 = coordinatesCell[3];
+    const PylithScalar x1 = coordinatesCell[2];
+    const PylithScalar y1 = coordinatesCell[3];
 
-    const double x2 = coordinatesCell[4];
-    const double y2 = coordinatesCell[5];
+    const PylithScalar x2 = coordinatesCell[4];
+    const PylithScalar y2 = coordinatesCell[5];
 
-    const double scaleB = 2.0 * area;
-    const double b0 = (y1 - y2) / scaleB;
-    const double c0 = (x2 - x1) / scaleB;
+    const PylithScalar scaleB = 2.0 * area;
+    const PylithScalar b0 = (y1 - y2) / scaleB;
+    const PylithScalar c0 = (x2 - x1) / scaleB;
 
-    const double b1 = (y2 - y0) / scaleB;
-    const double c1 = (x0 - x2) / scaleB;
+    const PylithScalar b1 = (y2 - y0) / scaleB;
+    const PylithScalar c1 = (x0 - x2) / scaleB;
 
-    const double b2 = (y0 - y1) / scaleB;
-    const double c2 = (x1 - x0) / scaleB;
+    const PylithScalar b2 = (y0 - y1) / scaleB;
+    const PylithScalar c2 = (x1 - x0) / scaleB;
 
     assert(strainCell.size() == 3);
     strainCell[0] = b2*dispAdjCell[4] + b1*dispAdjCell[2] + b0*dispAdjCell[0];
@@ -630,7 +632,7 @@
     strainCell[2] = (b2*dispAdjCell[5] + c2*dispAdjCell[4] + b1*dispAdjCell[3] + 
 		     c1*dispAdjCell[2] + b0*dispAdjCell[1] + c0*dispAdjCell[0]) / 2.0;
 
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
 #if defined(DETAILED_EVENT_LOGGING)
     PetscLogFlops(34);
@@ -673,7 +675,7 @@
 void
 pylith::feassemble::ElasticityExplicitTri3::integrateJacobian(
 					topology::Jacobian* jacobian,
-					const double t,
+					const PylithScalar t,
 					topology::SolutionFields* fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -692,7 +694,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -714,7 +716,7 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array dispCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispSection = 
     fields->get("disp(t)").section();
   assert(!dispSection.isNull());
@@ -724,8 +726,8 @@
   assert(0 != jacobianMat);
 
   // Get parameters used in integration.
-  const double dt = _dt;
-  const double dt2 = dt*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
   assert(dt > 0);
 
   const ALE::Obj<SieveMesh::order_type>& globalOrder = 
@@ -736,7 +738,7 @@
 				 (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
 					   sieveMesh->depth())*spaceDim);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -759,7 +761,7 @@
     // Compute geometry information for current cell
     coordsVisitor.clear();
     sieveMesh->restrictClosure(*c_iter, coordsVisitor);
-    const double area = _area(coordinatesCell);
+    const PylithScalar area = _area(coordinatesCell);
     assert(area > 0.0);
 
 #if defined(DETAILED_EVENT_LOGGING)
@@ -779,11 +781,11 @@
     _resetCellMatrix();
 
     // Get material physical properties at quadrature points for this cell
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     assert(density.size() == 1);
 
     // Compute Jacobian for inertial terms
-    const double wtVertex = density[0] * area / (9.0 * dt2);
+    const PylithScalar wtVertex = density[0] * area / (9.0 * dt2);
     for (int iBasis = 0; iBasis < numBasis; ++iBasis)
       for (int jBasis = 0; jBasis < numBasis; ++jBasis)
 	for (int iDim=0; iDim < spaceDim; ++iDim) {
@@ -824,7 +826,7 @@
 void
 pylith::feassemble::ElasticityExplicitTri3::integrateJacobian(
 			    topology::Field<topology::Mesh>* jacobian,
-			    const double t,
+			    const PylithScalar t,
 			    topology::SolutionFields* fields)
 { // integrateJacobian
   assert(0 != _quadrature);
@@ -865,8 +867,8 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get parameters used in integration.
-  const double dt = _dt;
-  const double dt2 = dt*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
   assert(dt > 0);
 
   // Get sections
@@ -874,7 +876,7 @@
   assert(!jacobianSection.isNull());
   UpdateAddVisitor jacobianVisitor(*jacobianSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -895,7 +897,7 @@
 #endif
     coordsVisitor.clear();
     sieveMesh->restrictClosure(*c_iter, coordsVisitor);
-    const double area = _area(coordinatesCell);
+    const PylithScalar area = _area(coordinatesCell);
     assert(area > 0.0);
 
 #if defined(DETAILED_EVENT_LOGGING)
@@ -912,7 +914,7 @@
 #endif
 
     // Compute Jacobian for inertial terms
-    const double_array& density = _material->calcDensity();
+    const scalar_array& density = _material->calcDensity();
     _cellVector = density[0] * area / (3.0 * dt2);
     
 #if defined(DETAILED_EVENT_LOGGING)
@@ -941,22 +943,22 @@
 
 // ----------------------------------------------------------------------
 // Compute area of triangular cell.
-double
+PylithScalar
 pylith::feassemble::ElasticityExplicitTri3::_area(
-			     const double_array& coordinatesCell) const
+			     const scalar_array& coordinatesCell) const
 { // __area
   assert(6 == coordinatesCell.size());
 
-  const double x0 = coordinatesCell[0];
-  const double y0 = coordinatesCell[1];
+  const PylithScalar x0 = coordinatesCell[0];
+  const PylithScalar y0 = coordinatesCell[1];
 
-  const double x1 = coordinatesCell[2];
-  const double y1 = coordinatesCell[3];
+  const PylithScalar x1 = coordinatesCell[2];
+  const PylithScalar y1 = coordinatesCell[3];
 
-  const double x2 = coordinatesCell[4];
-  const double y2 = coordinatesCell[5];
+  const PylithScalar x2 = coordinatesCell[4];
+  const PylithScalar y2 = coordinatesCell[5];
 
-  const double area = 0.5*((x1-x0)*(y2-y0) - (x2-x0)*(y1-y0));
+  const PylithScalar area = 0.5*((x1-x0)*(y2-y0) - (x2-x0)*(y1-y0));
   PetscLogFlops(8);
 
   return area;  

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityExplicitTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -88,13 +88,13 @@
    *
    * @param dt Time step
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set normalized viscosity for numerical damping.
    *
    * @param viscosity Normalized viscosity (viscosity / elastic modulus).
    */
-  void normViscosity(const double viscosity);
+  void normViscosity(const PylithScalar viscosity);
 
   /** Set flag for setting constraints for total field solution or
    *  incremental field solution.
@@ -110,7 +110,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to residual term (r) for operator.
@@ -120,7 +120,7 @@
    * @param fields Solution fields
    */
   void integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
-       const double t,
+       const PylithScalar t,
        topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -131,7 +131,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -142,7 +142,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
 // PRIVATE METHODS //////////////////////////////////////////////////////
@@ -153,22 +153,22 @@
    * @param coordinatesCell Coordinates of vertices of cell.
    * @returns Area of cell.
    */
-  double _area(const double_array& coordinatesCell) const;
+  PylithScalar _area(const scalar_array& coordinatesCell) const;
 
   /** Compute derivatives of basis functions of triangular cell.
    *
    * @param coordinatesCell Coordinates of vertices of cell.
    * @returns Derivatives of basis functions.
    */
-  const double_array& _basisDeriv(const double_array& coordinatesCell) const;
+  const scalar_array& _basisDeriv(const scalar_array& coordinatesCell) const;
 
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double_array _basisDerivArray; ///< Array of basis derivatives
+  scalar_array _basisDerivArray; ///< Array of basis derivatives
 
-  double _dtm1; ///< Time step for t-dt1 -> t
-  double _normViscosity; ///< Normalized viscosity for numerical damping.
+  PylithScalar _dtm1; ///< Time step for t-dt1 -> t
+  PylithScalar _normViscosity; ///< Normalized viscosity for numerical damping.
 
   static const int _spaceDim;
   static const int _cellDim;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -29,7 +29,7 @@
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
 #include "pylith/utils/EventLogger.hh" // USES EventLogger
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
 #include "pylith/utils/lapack.h" // USES LAPACKdgesvd
 
@@ -50,7 +50,7 @@
 
 typedef pylith::topology::Field<pylith::topology::Mesh>::RestrictVisitor RestrictVisitor;
 typedef pylith::topology::Field<pylith::topology::Mesh>::UpdateAddVisitor UpdateAddVisitor;
-typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PetscInt> IndicesVisitor;
+typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PylithInt> IndicesVisitor;
 
 // ----------------------------------------------------------------------
 // Constructor
@@ -77,7 +77,7 @@
 // ----------------------------------------------------------------------
 // Set time step for advancing from time t to time t+dt.
 void
-pylith::feassemble::ElasticityImplicit::timeStep(const double dt)
+pylith::feassemble::ElasticityImplicit::timeStep(const PylithScalar dt)
 { // timeStep
   if (_dt != -1.0)
     _dtm1 = _dt;
@@ -90,7 +90,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for advancing from time t to time t+dt.
-double
+PylithScalar
 pylith::feassemble::ElasticityImplicit::stableTimeStep(const topology::Mesh& mesh) const
 { // stableTimeStep
   assert(0 != _material);
@@ -113,12 +113,12 @@
 void
 pylith::feassemble::ElasticityImplicit::integrateResidual(
 			  const topology::Field<topology::Mesh>& residual,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidual
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityImplicit::*elasticityResidual_fn_type)
-    (const double_array&);
+    (const scalar_array&);
   
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -137,7 +137,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -170,11 +170,11 @@
     assert(0);
 
   // Allocate vectors for cell values.
-  double_array dispTpdtCell(numBasis*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array dispTpdtCell(numBasis*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -187,13 +187,13 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array dispTCell(numBasis*spaceDim);
+  scalar_array dispTCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispTSection = 
     fields->get("disp(t)").section();
   assert(!dispTSection.isNull());
   RestrictVisitor dispTVisitor(*dispTSection, dispTCell.size(), &dispTCell[0]);
 
-  double_array dispTIncrCell(numBasis*spaceDim);
+  scalar_array dispTIncrCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispTIncrSection = 
     fields->get("dispIncr(t->t+dt)").section();
   assert(!dispTIncrSection.isNull());
@@ -203,7 +203,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -211,8 +211,8 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale = 
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale = 
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
 				    _normalizer->densityScale());
 
@@ -245,10 +245,10 @@
     sieveMesh->restrictClosure(*c_iter, dispTIncrVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
-    const double_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
 
     // Compute current estimate of displacement at time t+dt using
     // solution increment.
@@ -260,23 +260,24 @@
       assert(0 != cs);
 
       // Get density at quadrature points for this cell
-      const double_array& density = _material->calcDensity();
+      const scalar_array& density = _material->calcDensity();
 
       quadPtsGlobal = quadPtsNondim;
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
           lengthScale);
 
       // Compute action for element body forces
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
       for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-        const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+        const int err = db->query(&gravVec[0], gravVec.size(),
             &quadPtsGlobal[0], spaceDim, cs);
         if (err)
           throw std::runtime_error("Unable to get gravity vector for point.");
         _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
             gravityScale);
-        const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+        const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
         for (int iBasis = 0, iQ = iQuad * numBasis; iBasis < numBasis; ++iBasis) {
-          const double valI = wt * basis[iQ + iBasis];
+          const PylithScalar valI = wt * basis[iQ + iBasis];
           for (int iDim = 0; iDim < spaceDim; ++iDim) {
             _cellVector[iBasis * spaceDim + iDim] += valI * gravVec[iDim];
           } // for
@@ -289,7 +290,7 @@
     // Compute B(transpose) * sigma, first computing strains
     calcTotalStrainFn(&strainCell, basisDeriv, dispTpdtCell, 
 		      numBasis, numQuadPts);
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
     CALL_MEMBER_FN(*this, elasticityResidualFn)(stressCell);
 
@@ -312,12 +313,12 @@
 void
 pylith::feassemble::ElasticityImplicit::integrateJacobian(
 					topology::Jacobian* jacobian,
-					const double t,
+					const PylithScalar t,
 					topology::SolutionFields* fields)
 { // integrateJacobian
   /// Member prototype for _elasticityJacobianXD()
   typedef void (pylith::feassemble::ElasticityImplicit::*elasticityJacobian_fn_type)
-    (const double_array&);
+    (const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -336,7 +337,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -376,8 +377,8 @@
     assert(0);
 
   // Allocate vector for total strain
-  double_array dispTpdtCell(numBasis*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array dispTpdtCell(numBasis*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
 
   // Get cell information
@@ -391,13 +392,13 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array dispTCell(numBasis*spaceDim);
+  scalar_array dispTCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispTSection = 
     fields->get("disp(t)").section();
   assert(!dispTSection.isNull());
   RestrictVisitor dispTVisitor(*dispTSection, dispTCell.size(), &dispTCell[0]);
 
-  double_array dispTIncrCell(numBasis*spaceDim);
+  scalar_array dispTIncrCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispTIncrSection = 
     fields->get("dispIncr(t->t+dt)").section();
   assert(!dispTIncrSection.isNull());
@@ -409,7 +410,7 @@
   assert(0 != jacobianMat);
 
   // Get parameters used in integration.
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(dt > 0);
 
   const ALE::Obj<SieveMesh::order_type>& globalOrder = 
@@ -422,7 +423,7 @@
 				 (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
 					   sieveMesh->depth())*spaceDim);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -458,9 +459,9 @@
     sieveMesh->restrictClosure(*c_iter, dispTIncrVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute current estimate of displacement at time t+dt using
     // solution increment.
@@ -471,7 +472,7 @@
 		      numBasis, numQuadPts);
       
     // Get "elasticity" matrix at quadrature points for this cell
-    const double_array& elasticConsts = 
+    const scalar_array& elasticConsts = 
       _material->calcDerivElastic(strainCell);
 
     CALL_MEMBER_FN(*this, elasticityJacobianFn)(elasticConsts);
@@ -481,12 +482,12 @@
       int lwork = 5*n;
       int idummy = 0;
       int lierr = 0;
-      double *elemMat = new double[n*n];
-      double *svalues = new double[n];
-      double *work    = new double[lwork];
-      double minSV = 0;
-      double maxSV = 0;
-      double sdummy = 0;
+      PylithScalar *elemMat = new PylithScalar[n*n];
+      PylithScalar *svalues = new PylithScalar[n];
+      PylithScalar *work    = new PylithScalar[lwork];
+      PylithScalar minSV = 0;
+      PylithScalar maxSV = 0;
+      PylithScalar sdummy = 0;
 
       const int n2 = n*n;
       for (int i = 0; i < n2; ++i)

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicit.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -77,7 +77,7 @@
    *
    * @param dt Time step
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Get stable time step for advancing from time t to time t+dt.
    *
@@ -86,7 +86,7 @@
    * @param mesh Finite-element mesh.
    * @returns Time step
    */
-  double stableTimeStep(const topology::Mesh& mesh) const;
+  PylithScalar stableTimeStep(const topology::Mesh& mesh) const;
 
   /** Set flag for setting constraints for total field solution or
    *  incremental field solution.
@@ -110,7 +110,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -121,7 +121,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
   
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
@@ -136,7 +136,7 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _dtm1; ///< Time step for t-dt1 -> t
+  PylithScalar _dtm1; ///< Time step for t-dt1 -> t
 
 }; // ElasticityImplicit
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitCUDA.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitCUDA.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitCUDA.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -35,7 +35,7 @@
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
 #include "pylith/utils/EventLogger.hh" // USES EventLogger
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
 #include "pylith/utils/lapack.h" // USES LAPACKdgesvd
 
@@ -56,7 +56,7 @@
 
 typedef pylith::topology::Field<pylith::topology::Mesh>::RestrictVisitor RestrictVisitor;
 typedef pylith::topology::Field<pylith::topology::Mesh>::UpdateAddVisitor UpdateAddVisitor;
-typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PetscInt> IndicesVisitor;
+typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PylithInt> IndicesVisitor;
 
 // ----------------------------------------------------------------------
 // Constructor
@@ -83,7 +83,7 @@
 // ----------------------------------------------------------------------
 // Set time step for advancing from time t to time t+dt.
 void
-pylith::feassemble::ElasticityImplicitCUDA::timeStep(const double dt)
+pylith::feassemble::ElasticityImplicitCUDA::timeStep(const PylithScalar dt)
 { // timeStep
   if (_dt != -1.0)
     _dtm1 = _dt;
@@ -96,7 +96,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for advancing from time t to time t+dt.
-double
+PylithScalar
 pylith::feassemble::ElasticityImplicitCUDA::stableTimeStep(const topology::Mesh& mesh) const
 { // stableTimeStep
   assert(0 != _material);
@@ -119,12 +119,12 @@
 void
 pylith::feassemble::ElasticityImplicitCUDA::integrateResidual(
 			  const topology::Field<topology::Mesh>& residual,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidual
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityImplicitCUDA::*elasticityResidual_fn_type)
-    (const double_array&);
+    (const scalar_array&);
   
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -143,7 +143,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -176,11 +176,11 @@
     assert(0);
 
   // Allocate vectors for cell values.
-  double_array dispTpdtCell(numBasis*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array dispTpdtCell(numBasis*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -193,13 +193,13 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array dispTCell(numBasis*spaceDim);
+  scalar_array dispTCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispTSection = 
     fields->get("disp(t)").section();
   assert(!dispTSection.isNull());
   RestrictVisitor dispTVisitor(*dispTSection, dispTCell.size(), &dispTCell[0]);
 
-  double_array dispTIncrCell(numBasis*spaceDim);
+  scalar_array dispTIncrCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispTIncrSection = 
     fields->get("dispIncr(t->t+dt)").section();
   assert(!dispTIncrSection.isNull());
@@ -209,7 +209,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -217,8 +217,8 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale = 
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale = 
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
 				    _normalizer->densityScale());
 
@@ -251,10 +251,10 @@
     sieveMesh->restrictClosure(*c_iter, dispTIncrVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
-    const double_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
 
     // Compute current estimate of displacement at time t+dt using
     // solution increment.
@@ -266,23 +266,24 @@
       assert(0 != cs);
 
       // Get density at quadrature points for this cell
-      const double_array& density = _material->calcDensity();
+      const scalar_array& density = _material->calcDensity();
 
       quadPtsGlobal = quadPtsNondim;
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
           lengthScale);
 
       // Compute action for element body forces
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
       for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
-        const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+        const int err = db->query(&gravVec[0], gravVec.size(),
             &quadPtsGlobal[0], spaceDim, cs);
         if (err)
           throw std::runtime_error("Unable to get gravity vector for point.");
         _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
             gravityScale);
-        const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+        const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
         for (int iBasis = 0, iQ = iQuad * numBasis; iBasis < numBasis; ++iBasis) {
-          const double valI = wt * basis[iQ + iBasis];
+          const PylithScalar valI = wt * basis[iQ + iBasis];
           for (int iDim = 0; iDim < spaceDim; ++iDim) {
             _cellVector[iBasis * spaceDim + iDim] += valI * gravVec[iDim];
           } // for
@@ -295,7 +296,7 @@
     // Compute B(transpose) * sigma, first computing strains
     calcTotalStrainFn(&strainCell, basisDeriv, dispTpdtCell, 
 		      numBasis, numQuadPts);
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
     CALL_MEMBER_FN(*this, elasticityResidualFn)(stressCell);
 
@@ -314,7 +315,7 @@
 } // integrateResidual
 
 void
-pylith::feassemble::ElasticityImplicitCUDA::calculateGeometry(const int spaceDim, const double coords[], float geometry[])
+pylith::feassemble::ElasticityImplicitCUDA::calculateGeometry(const int spaceDim, const PylithScalar coords[], float geometry[])
 {
   // Just use identity for now
   PetscMemzero(geometry, spaceDim*spaceDim*sizeof(float));
@@ -326,12 +327,12 @@
 void
 pylith::feassemble::ElasticityImplicitCUDA::integrateJacobian(
 					topology::Jacobian* jacobian,
-					const double t,
+					const PylithScalar t,
 					topology::SolutionFields* fields)
 { // integrateJacobian
   /// Member prototype for _elasticityJacobianXD()
   typedef void (pylith::feassemble::ElasticityImplicitCUDA::*elasticityJacobian_fn_type)
-    (const double_array&);
+    (const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -350,7 +351,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -376,8 +377,8 @@
     assert(0);
 
   // Allocate vector for total strain
-  double_array dispTpdtCell(numBasis*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array dispTpdtCell(numBasis*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
 
   // Get cell information
@@ -391,13 +392,13 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get sections
-  double_array dispTCell(numBasis*spaceDim);
+  scalar_array dispTCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispTSection = 
     fields->get("disp(t)").section();
   assert(!dispTSection.isNull());
   RestrictVisitor dispTVisitor(*dispTSection, dispTCell.size(), &dispTCell[0]);
 
-  double_array dispTIncrCell(numBasis*spaceDim);
+  scalar_array dispTIncrCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& dispTIncrSection = 
     fields->get("dispIncr(t->t+dt)").section();
   assert(!dispTIncrSection.isNull());
@@ -409,7 +410,7 @@
   assert(0 != jacobianMat);
 
   // Get parameters used in integration.
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(dt > 0);
 
   const ALE::Obj<SieveMesh::order_type>& globalOrder = 
@@ -417,7 +418,7 @@
 					    dispTSection);
   assert(!globalOrder.isNull());
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -443,9 +444,9 @@
     _quadrature->computeGeometry(coordinatesCell, *c_iter);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Get physical properties and state variables for cell.
     _material->retrievePropsAndVars(*c_iter);
@@ -465,7 +466,7 @@
 		      numBasis, numQuadPts);
       
     // Get "elasticity" matrix at quadrature points for this cell
-    const double_array& elasticConsts = 
+    const scalar_array& elasticConsts = 
       _material->calcDerivElastic(strainCell);
 #endif
   } // for

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitCUDA.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitCUDA.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitCUDA.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -77,7 +77,7 @@
    *
    * @param dt Time step
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Get stable time step for advancing from time t to time t+dt.
    *
@@ -86,7 +86,7 @@
    * @param mesh Finite-element mesh.
    * @returns Time step
    */
-  double stableTimeStep(const topology::Mesh& mesh) const;
+  PylithScalar stableTimeStep(const topology::Mesh& mesh) const;
 
   /** Set flag for setting constraints for total field solution or
    *  incremental field solution.
@@ -110,7 +110,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -121,7 +121,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
   
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
@@ -135,13 +135,13 @@
 
   void setupCUDA(const int dim, const int numBasisFuncs, const int numCells);
   void calculateGrid(const int N, const int blockSize, unsigned int& x, unsigned int& y, unsigned int& z);
-  void calculateGeometry(const int spaceDim, const double coords[], float geometry[]);
+  void calculateGeometry(const int spaceDim, const PylithScalar coords[], float geometry[]);
   void cleanupCUDA();
 
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _dtm1; ///< Time step for t-dt1 -> t
+  PylithScalar _dtm1; ///< Time step for t-dt1 -> t
 
   float  K[4*3*4*3*3*3];
   float *geometry;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -29,7 +29,7 @@
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
 #include "pylith/utils/EventLogger.hh" // USES EventLogger
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
 #include "pylith/utils/lapack.h" // USES LAPACKdgesvd
 
@@ -69,7 +69,7 @@
 // ----------------------------------------------------------------------
 // Set time step for advancing from time t to time t+dt.
 void
-pylith::feassemble::ElasticityImplicitLgDeform::timeStep(const double dt)
+pylith::feassemble::ElasticityImplicitLgDeform::timeStep(const PylithScalar dt)
 { // timeStep
   if (_dt != -1.0)
     _dtm1 = _dt;
@@ -82,7 +82,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for advancing from time t to time t+dt.
-double
+PylithScalar
 pylith::feassemble::ElasticityImplicitLgDeform::stableTimeStep(const topology::Mesh& mesh) const
 { // stableTimeStep
   assert(0 != _material);
@@ -105,12 +105,12 @@
 void
 pylith::feassemble::ElasticityImplicitLgDeform::integrateResidual(
 			  const topology::Field<topology::Mesh>& residual,
-			  const double t,
+			  const PylithScalar t,
 			  topology::SolutionFields* const fields)
 { // integrateResidual
   /// Member prototype for _elasticityResidualXD()
   typedef void (pylith::feassemble::ElasticityImplicitLgDeform::*elasticityResidual_fn_type)
-    (const double_array&, const double_array&);
+    (const scalar_array&, const scalar_array&);
   
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -129,7 +129,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -162,13 +162,13 @@
     assert(0);
 
   // Allocate vectors for cell values.
-  double_array dispTCell(numBasis*spaceDim);
-  double_array dispTIncrCell(numBasis*spaceDim);
-  double_array dispTpdtCell(numBasis*spaceDim);
-  double_array deformCell(numQuadPts*spaceDim*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
-  double_array gravVec(spaceDim);
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array dispTCell(numBasis*spaceDim);
+  scalar_array dispTIncrCell(numBasis*spaceDim);
+  scalar_array dispTpdtCell(numBasis*spaceDim);
+  scalar_array deformCell(numQuadPts*spaceDim*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
+  scalar_array gravVec(spaceDim);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -195,7 +195,7 @@
   const ALE::Obj<RealSection>& residualSection = residual.section();
   UpdateAddVisitor residualVisitor(*residualSection, &_cellVector[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -203,8 +203,8 @@
 				coordinatesCell.size(), &coordinatesCell[0]);
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double gravityScale = 
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar gravityScale = 
     _normalizer->pressureScale() / (_normalizer->lengthScale() *
 				    _normalizer->densityScale());
 
@@ -237,10 +237,10 @@
     sieveMesh->restrictClosure(*c_iter, dispTIncrVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
-    const double_array& quadPtsNondim = _quadrature->quadPts();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& quadPtsNondim = _quadrature->quadPts();
 
     // Compute current estimate of displacement at time t+dt using
     // solution increment.
@@ -252,24 +252,25 @@
       assert(0 != cs);
       
       // Get density at quadrature points for this cell
-      const double_array& density = _material->calcDensity();
+      const scalar_array& density = _material->calcDensity();
 
       quadPtsGlobal = quadPtsNondim;
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
 				  lengthScale);
 
       // Compute action for element body forces
+      spatialdata::spatialdb::SpatialDB* db = _gravityField;
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-	const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+	const int err = db->query(&gravVec[0], gravVec.size(),
 					     &quadPtsGlobal[0], spaceDim, cs);
 	if (err)
 	  throw std::runtime_error("Unable to get gravity vector for point.");
 	_normalizer->nondimensionalize(&gravVec[0], gravVec.size(), 
 				       gravityScale);
-	const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+	const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
 	for (int iBasis=0, iQ=iQuad*numBasis;
 	     iBasis < numBasis; ++iBasis) {
-	  const double valI = wt*basis[iQ+iBasis];
+	  const PylithScalar valI = wt*basis[iQ+iBasis];
 	  for (int iDim=0; iDim < spaceDim; ++iDim) {
 	    _cellVector[iBasis*spaceDim+iDim] += valI*gravVec[iDim];
 	  } // for
@@ -283,7 +284,7 @@
     _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTpdtCell,
 		     numBasis, numQuadPts, spaceDim);
     calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
     CALL_MEMBER_FN(*this, elasticityResidualFn)(stressCell, dispTpdtCell);
 
@@ -306,12 +307,12 @@
 void
 pylith::feassemble::ElasticityImplicitLgDeform::integrateJacobian(
 					topology::Jacobian* jacobian,
-					const double t,
+					const PylithScalar t,
 					topology::SolutionFields* fields)
 { // integrateJacobian
   /// Member prototype for _elasticityJacobianXD()
   typedef void (pylith::feassemble::ElasticityImplicitLgDeform::*elasticityJacobian_fn_type)
-    (const double_array&, const double_array&, const double_array&);
+    (const scalar_array&, const scalar_array&, const scalar_array&);
 
   assert(0 != _quadrature);
   assert(0 != _material);
@@ -330,7 +331,7 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& quadWts = _quadrature->quadWts();
+  const scalar_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
@@ -363,12 +364,12 @@
     assert(0);
 
   // Allocate vector for total strain
-  double_array dispTCell(numBasis*spaceDim);
-  double_array dispTIncrCell(numBasis*spaceDim);
-  double_array dispTpdtCell(numBasis*spaceDim);
-  double_array deformCell(numQuadPts*spaceDim*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
-  double_array stressCell(numQuadPts*tensorSize);
+  scalar_array dispTCell(numBasis*spaceDim);
+  scalar_array dispTIncrCell(numBasis*spaceDim);
+  scalar_array dispTpdtCell(numBasis*spaceDim);
+  scalar_array deformCell(numQuadPts*spaceDim*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
+  scalar_array stressCell(numQuadPts*tensorSize);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
@@ -397,7 +398,7 @@
   assert(0 != jacobianMat);
 
   // Get parameters used in integration.
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
   assert(dt > 0);
 
   const ALE::Obj<SieveMesh::order_type>& globalOrder = 
@@ -410,7 +411,7 @@
 				 (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
 					   sieveMesh->depth())*spaceDim);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -446,9 +447,9 @@
     sieveMesh->restrictClosure(*c_iter, dispTIncrVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basis = _quadrature->basis();
-    const double_array& basisDeriv = _quadrature->basisDeriv();
-    const double_array& jacobianDet = _quadrature->jacobianDet();
+    const scalar_array& basis = _quadrature->basis();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute current estimate of displacement at time t+dt using
     // solution increment.
@@ -460,11 +461,11 @@
     calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
 
     // Get "elasticity" matrix at quadrature points for this cell
-    const double_array& elasticConsts = 
+    const scalar_array& elasticConsts = 
       _material->calcDerivElastic(strainCell);
 
     // Get Second Priola-Kirchoff stress tensor
-    const double_array& stressCell = _material->calcStress(strainCell, true);
+    const scalar_array& stressCell = _material->calcStress(strainCell, true);
 
     CALL_MEMBER_FN(*this, elasticityJacobianFn)(elasticConsts, stressCell,
 						dispTpdtCell);
@@ -474,12 +475,12 @@
       int lwork = 5*n;
       int idummy = 0;
       int lierr = 0;
-      double *elemMat = new double[n*n];
-      double *svalues = new double[n];
-      double *work    = new double[lwork];
-      double minSV = 0;
-      double maxSV = 0;
-      double sdummy = 0;
+      PylithScalar *elemMat = new PylithScalar[n*n];
+      PylithScalar *svalues = new PylithScalar[n];
+      PylithScalar *work    = new PylithScalar[lwork];
+      PylithScalar minSV = 0;
+      PylithScalar maxSV = 0;
+      PylithScalar sdummy = 0;
 
       const int n2 = n*n;
       for (int i = 0; i < n2; ++i)

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/ElasticityImplicitLgDeform.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -78,7 +78,7 @@
    *
    * @param dt Time step
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Get stable time step for advancing from time t to time t+dt.
    *
@@ -87,7 +87,7 @@
    * @param mesh Finite-element mesh.
    * @returns Time step
    */
-  double stableTimeStep(const topology::Mesh& mesh) const;
+  PylithScalar stableTimeStep(const topology::Mesh& mesh) const;
 
   /** Set flag for setting constraints for total field solution or
    *  incremental field solution.
@@ -111,7 +111,7 @@
    * @param fields Solution fields
    */
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -122,7 +122,7 @@
    * @param fields Solution fields
    */
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
   
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
@@ -137,7 +137,7 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  double _dtm1; ///< Time step for t-dt1 -> t
+  PylithScalar _dtm1; ///< Time step for t-dt1 -> t
 
 }; // ElasticityImplicitLgDeform
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryHex3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryHex3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryHex3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "petsc.h" // USES PetscLogFlops
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryHex3D::GeometryHex3D(void) :
   CellGeometry(HEXAHEDRON, 3)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,  -1.0,  -1.0,
     +1.0,  -1.0,  -1.0,
     +1.0,  +1.0,  -1.0,
@@ -71,9 +71,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryHex3D::ptsRefToGlobal(double* ptsGlobal,
-						  const double* ptsRef,
-						  const double* vertices,
+pylith::feassemble::GeometryHex3D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						  const PylithScalar* ptsRef,
+						  const PylithScalar* vertices,
 						  const int dim,
 						  const int npts) const
 { // ptsRefToGlobal
@@ -83,70 +83,70 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
-  const double x4 = vertices[12];
-  const double y4 = vertices[13];
-  const double z4 = vertices[14];
+  const PylithScalar x4 = vertices[12];
+  const PylithScalar y4 = vertices[13];
+  const PylithScalar z4 = vertices[14];
 
-  const double x5 = vertices[15];
-  const double y5 = vertices[16];
-  const double z5 = vertices[17];
+  const PylithScalar x5 = vertices[15];
+  const PylithScalar y5 = vertices[16];
+  const PylithScalar z5 = vertices[17];
 
-  const double x6 = vertices[18];
-  const double y6 = vertices[19];
-  const double z6 = vertices[20];
+  const PylithScalar x6 = vertices[18];
+  const PylithScalar y6 = vertices[19];
+  const PylithScalar z6 = vertices[20];
 
-  const double x7 = vertices[21];
-  const double y7 = vertices[22];
-  const double z7 = vertices[23];
+  const PylithScalar x7 = vertices[21];
+  const PylithScalar y7 = vertices[22];
+  const PylithScalar z7 = vertices[23];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
-  const double h_1 = z1 - z0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
+  const PylithScalar h_1 = z1 - z0;
 
-  const double f_3 = x3 - x0;
-  const double g_3 = y3 - y0;
-  const double h_3 = z3 - z0;
+  const PylithScalar f_3 = x3 - x0;
+  const PylithScalar g_3 = y3 - y0;
+  const PylithScalar h_3 = z3 - z0;
 
-  const double f_4 = x4 - x0;
-  const double g_4 = y4 - y0;
-  const double h_4 = z4 - z0;
+  const PylithScalar f_4 = x4 - x0;
+  const PylithScalar g_4 = y4 - y0;
+  const PylithScalar h_4 = z4 - z0;
 
-  const double f_01 = x2 - x1 - x3 + x0;
-  const double g_01 = y2 - y1 - y3 + y0;
-  const double h_01 = z2 - z1 - z3 + z0;
+  const PylithScalar f_01 = x2 - x1 - x3 + x0;
+  const PylithScalar g_01 = y2 - y1 - y3 + y0;
+  const PylithScalar h_01 = z2 - z1 - z3 + z0;
 
-  const double f_12 = x7 - x3 - x4 + x0;
-  const double g_12 = y7 - y3 - y4 + y0;
-  const double h_12 = z7 - z3 - z4 + z0;
+  const PylithScalar f_12 = x7 - x3 - x4 + x0;
+  const PylithScalar g_12 = y7 - y3 - y4 + y0;
+  const PylithScalar h_12 = z7 - z3 - z4 + z0;
 
-  const double f_02 = x5 - x1 - x4 + x0;
-  const double g_02 = y5 - y1 - y4 + y0;
-  const double h_02 = z5 - z1 - z4 + z0;
+  const PylithScalar f_02 = x5 - x1 - x4 + x0;
+  const PylithScalar g_02 = y5 - y1 - y4 + y0;
+  const PylithScalar h_02 = z5 - z1 - z4 + z0;
 
-  const double f_012 = x6 - x0 + x1 - x2 + x3 + x4 - x5 - x7;
-  const double g_012 = y6 - y0 + y1 - y2 + y3 + y4 - y5 - y7;
-  const double h_012 = z6 - z0 + z1 - z2 + z3 + z4 - z5 - z7;
+  const PylithScalar f_012 = x6 - x0 + x1 - x2 + x3 + x4 - x5 - x7;
+  const PylithScalar g_012 = y6 - y0 + y1 - y2 + y3 + y4 - y5 - y7;
+  const PylithScalar h_012 = z6 - z0 + z1 - z2 + z3 + z4 - z5 - z7;
 
   for (int i=0, iR=0, iG=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p2 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p2 = 0.5 * (1.0 + ptsRef[iR++]);
     assert(0 <= p0 && p0 <= 1.0);
     assert(0 <= p1 && p1 <= 1.0);
     assert(0 <= p2 && p2 <= 1.0);
@@ -164,10 +164,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryHex3D::jacobian(double_array* jacobian,
-					    double* det,
-					    const double_array& vertices,
-					    const double_array& location) const
+pylith::feassemble::GeometryHex3D::jacobian(scalar_array* jacobian,
+					    PylithScalar* det,
+					    const scalar_array& vertices,
+					    const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -177,60 +177,60 @@
   assert(cellDim() == location.size());
   assert(spaceDim()*cellDim() == jacobian->size());
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
-  const double x4 = vertices[12];
-  const double y4 = vertices[13];
-  const double z4 = vertices[14];
+  const PylithScalar x4 = vertices[12];
+  const PylithScalar y4 = vertices[13];
+  const PylithScalar z4 = vertices[14];
 
-  const double x5 = vertices[15];
-  const double y5 = vertices[16];
-  const double z5 = vertices[17];
+  const PylithScalar x5 = vertices[15];
+  const PylithScalar y5 = vertices[16];
+  const PylithScalar z5 = vertices[17];
 
-  const double x6 = vertices[18];
-  const double y6 = vertices[19];
-  const double z6 = vertices[20];
+  const PylithScalar x6 = vertices[18];
+  const PylithScalar y6 = vertices[19];
+  const PylithScalar z6 = vertices[20];
 
-  const double x7 = vertices[21];
-  const double y7 = vertices[22];
-  const double z7 = vertices[23];
+  const PylithScalar x7 = vertices[21];
+  const PylithScalar y7 = vertices[22];
+  const PylithScalar z7 = vertices[23];
 
-  const double x = 0.5 * (location[0] + 1.0);
-  const double y = 0.5 * (location[1] + 1.0);
-  const double z = 0.5 * (location[2] + 1.0);
+  const PylithScalar x = 0.5 * (location[0] + 1.0);
+  const PylithScalar y = 0.5 * (location[1] + 1.0);
+  const PylithScalar z = 0.5 * (location[2] + 1.0);
   assert(-1.0 <= x && x <= 1.0);
   assert(-1.0 <= y && y <= 1.0);
   assert(-1.0 <= z && z <= 1.0);
 
-  const double f_xy = x2 - x1 - x3 + x0;
-  const double g_xy = y2 - y1 - y3 + y0;
-  const double h_xy = z2 - z1 - z3 + z0;
+  const PylithScalar f_xy = x2 - x1 - x3 + x0;
+  const PylithScalar g_xy = y2 - y1 - y3 + y0;
+  const PylithScalar h_xy = z2 - z1 - z3 + z0;
 
-  const double f_yz = x7 - x3 - x4 + x0;
-  const double g_yz = y7 - y3 - y4 + y0;
-  const double h_yz = z7 - z3 - z4 + z0;
+  const PylithScalar f_yz = x7 - x3 - x4 + x0;
+  const PylithScalar g_yz = y7 - y3 - y4 + y0;
+  const PylithScalar h_yz = z7 - z3 - z4 + z0;
 
-  const double f_xz = x5 - x1 - x4 + x0;
-  const double g_xz = y5 - y1 - y4 + y0;
-  const double h_xz = z5 - z1 - z4 + z0;
+  const PylithScalar f_xz = x5 - x1 - x4 + x0;
+  const PylithScalar g_xz = y5 - y1 - y4 + y0;
+  const PylithScalar h_xz = z5 - z1 - z4 + z0;
 
-  const double f_xyz = x6 - x0 + x1 - x2 + x3 + x4 - x5 - x7;
-  const double g_xyz = y6 - y0 + y1 - y2 + y3 + y4 - y5 - y7;
-  const double h_xyz = z6 - z0 + z1 - z2 + z3 + z4 - z5 - z7;
+  const PylithScalar f_xyz = x6 - x0 + x1 - x2 + x3 + x4 - x5 - x7;
+  const PylithScalar g_xyz = y6 - y0 + y1 - y2 + y3 + y4 - y5 - y7;
+  const PylithScalar h_xyz = z6 - z0 + z1 - z2 + z3 + z4 - z5 - z7;
 
   (*jacobian)[0] = (x1 - x0 + f_xy*y + f_xz*z + f_xyz*y*z) / 2.0;
   (*jacobian)[1] = (x3 - x0 + f_xy*x + f_yz*z + f_xyz*x*z) / 2.0;
@@ -258,10 +258,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryHex3D::jacobian(double* jacobian,
-					    double* det,
-					    const double* vertices,
-					    const double* ptsRef,
+pylith::feassemble::GeometryHex3D::jacobian(PylithScalar* jacobian,
+					    PylithScalar* det,
+					    const PylithScalar* vertices,
+					    const PylithScalar* ptsRef,
 					    const int dim,
 					    const int npts) const
 { // jacobian
@@ -272,84 +272,84 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
-  const double x4 = vertices[12];
-  const double y4 = vertices[13];
-  const double z4 = vertices[14];
+  const PylithScalar x4 = vertices[12];
+  const PylithScalar y4 = vertices[13];
+  const PylithScalar z4 = vertices[14];
 
-  const double x5 = vertices[15];
-  const double y5 = vertices[16];
-  const double z5 = vertices[17];
+  const PylithScalar x5 = vertices[15];
+  const PylithScalar y5 = vertices[16];
+  const PylithScalar z5 = vertices[17];
 
-  const double x6 = vertices[18];
-  const double y6 = vertices[19];
-  const double z6 = vertices[20];
+  const PylithScalar x6 = vertices[18];
+  const PylithScalar y6 = vertices[19];
+  const PylithScalar z6 = vertices[20];
 
-  const double x7 = vertices[21];
-  const double y7 = vertices[22];
-  const double z7 = vertices[23];
+  const PylithScalar x7 = vertices[21];
+  const PylithScalar y7 = vertices[22];
+  const PylithScalar z7 = vertices[23];
 
-  const double f_1 = (x1 - x0) / 2.0;
-  const double g_1 = (y1 - y0) / 2.0;
-  const double h_1 = (z1 - z0) / 2.0;
+  const PylithScalar f_1 = (x1 - x0) / 2.0;
+  const PylithScalar g_1 = (y1 - y0) / 2.0;
+  const PylithScalar h_1 = (z1 - z0) / 2.0;
 
-  const double f_3 = (x3 - x0) / 2.0;
-  const double g_3 = (y3 - y0) / 2.0;
-  const double h_3 = (z3 - z0) / 2.0;
+  const PylithScalar f_3 = (x3 - x0) / 2.0;
+  const PylithScalar g_3 = (y3 - y0) / 2.0;
+  const PylithScalar h_3 = (z3 - z0) / 2.0;
   
-  const double f_4 = (x4 - x0) / 2.0;
-  const double g_4 = (y4 - y0) / 2.0;
-  const double h_4 = (z4 - z0) / 2.0;
+  const PylithScalar f_4 = (x4 - x0) / 2.0;
+  const PylithScalar g_4 = (y4 - y0) / 2.0;
+  const PylithScalar h_4 = (z4 - z0) / 2.0;
 
-  const double f_01 = (x2 - x1 - x3 + x0) / 2.0;
-  const double g_01 = (y2 - y1 - y3 + y0) / 2.0;
-  const double h_01 = (z2 - z1 - z3 + z0) / 2.0;
+  const PylithScalar f_01 = (x2 - x1 - x3 + x0) / 2.0;
+  const PylithScalar g_01 = (y2 - y1 - y3 + y0) / 2.0;
+  const PylithScalar h_01 = (z2 - z1 - z3 + z0) / 2.0;
 
-  const double f_12 = (x7 - x3 - x4 + x0) / 2.0;
-  const double g_12 = (y7 - y3 - y4 + y0) / 2.0;
-  const double h_12 = (z7 - z3 - z4 + z0) / 2.0;
+  const PylithScalar f_12 = (x7 - x3 - x4 + x0) / 2.0;
+  const PylithScalar g_12 = (y7 - y3 - y4 + y0) / 2.0;
+  const PylithScalar h_12 = (z7 - z3 - z4 + z0) / 2.0;
 
-  const double f_02 = (x5 - x1 - x4 + x0) / 2.0;
-  const double g_02 = (y5 - y1 - y4 + y0) / 2.0;
-  const double h_02 = (z5 - z1 - z4 + z0) / 2.0;
+  const PylithScalar f_02 = (x5 - x1 - x4 + x0) / 2.0;
+  const PylithScalar g_02 = (y5 - y1 - y4 + y0) / 2.0;
+  const PylithScalar h_02 = (z5 - z1 - z4 + z0) / 2.0;
 
-  const double f_012 = (x6 - x0 + x1 - x2 + x3 + x4 - x5 - x7) / 2.0;
-  const double g_012 = (y6 - y0 + y1 - y2 + y3 + y4 - y5 - y7) / 2.0;
-  const double h_012 = (z6 - z0 + z1 - z2 + z3 + z4 - z5 - z7) / 2.0;
+  const PylithScalar f_012 = (x6 - x0 + x1 - x2 + x3 + x4 - x5 - x7) / 2.0;
+  const PylithScalar g_012 = (y6 - y0 + y1 - y2 + y3 + y4 - y5 - y7) / 2.0;
+  const PylithScalar h_012 = (z6 - z0 + z1 - z2 + z3 + z4 - z5 - z7) / 2.0;
 
   for (int i=0, iR=0, iJ=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p2 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p2 = 0.5 * (1.0 + ptsRef[iR++]);
     assert(0 <= p0 && p0 <= 1.0);
     assert(0 <= p1 && p1 <= 1.0);
     assert(0 <= p2 && p2 <= 1.0);
-    const double j0 = f_1 + f_01*p1 + f_02*p2 + f_012*p1*p2;
-    const double j1 = f_3 + f_01*p0 + f_12*p2 + f_012*p0*p2;
-    const double j2 = f_4 + f_12*p1 + f_02*p0 + f_012*p0*p1;
+    const PylithScalar j0 = f_1 + f_01*p1 + f_02*p2 + f_012*p1*p2;
+    const PylithScalar j1 = f_3 + f_01*p0 + f_12*p2 + f_012*p0*p2;
+    const PylithScalar j2 = f_4 + f_12*p1 + f_02*p0 + f_012*p0*p1;
     
-    const double j3 = g_1 + g_01*p1 + g_02*p2 + g_012*p1*p2;
-    const double j4 = g_3 + g_01*p0 + g_12*p2 + g_012*p0*p2;
-    const double j5 = g_4 + g_12*p1 + g_02*p0 + g_012*p0*p1;
+    const PylithScalar j3 = g_1 + g_01*p1 + g_02*p2 + g_012*p1*p2;
+    const PylithScalar j4 = g_3 + g_01*p0 + g_12*p2 + g_012*p0*p2;
+    const PylithScalar j5 = g_4 + g_12*p1 + g_02*p0 + g_012*p0*p1;
     
-    const double j6 = h_1 + h_01*p1 + h_02*p2 + h_012*p1*p2;
-    const double j7 = h_3 + h_01*p0 + h_12*p2 + h_012*p0*p2;
-    const double j8 = h_4 + h_12*p1 + h_02*p0 + h_012*p0*p1;
+    const PylithScalar j6 = h_1 + h_01*p1 + h_02*p2 + h_012*p1*p2;
+    const PylithScalar j7 = h_3 + h_01*p0 + h_12*p2 + h_012*p0*p2;
+    const PylithScalar j8 = h_4 + h_12*p1 + h_02*p0 + h_012*p0*p1;
 
     jacobian[iJ++] = j0;
     jacobian[iJ++] = j1;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryHex3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryHex3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryHex3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -80,9 +80,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -93,10 +93,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -107,10 +107,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "GeometryPoint1D.hh" // USES GeometryPoint
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "petsc.h" // USES PetscLogFlops
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryLine1D::GeometryLine1D(void) :
   CellGeometry(LINE, 1)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,
     +1.0,
   };
@@ -65,9 +65,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryLine1D::ptsRefToGlobal(double* ptsGlobal,
-						   const double* ptsRef,
-						   const double* vertices,
+pylith::feassemble::GeometryLine1D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						   const PylithScalar* ptsRef,
+						   const PylithScalar* vertices,
 						   const int dim,
 						   const int npts) const
 { // ptsRefToGlobal
@@ -77,11 +77,11 @@
   assert(1 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double x1 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar x1 = vertices[1];
 
   for (int i=0; i < npts; ++i) {
-    const double p0 = 0.5*(1.0+ptsRef[i]);
+    const PylithScalar p0 = 0.5*(1.0+ptsRef[i]);
     ptsGlobal[i] = x0 + (x1-x0) * p0;
   } // for
 
@@ -91,10 +91,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryLine1D::jacobian(double_array* jacobian,
-					     double* det,
-					     const double_array& vertices,
-					     const double_array& location) const
+pylith::feassemble::GeometryLine1D::jacobian(scalar_array* jacobian,
+					     PylithScalar* det,
+					     const scalar_array& vertices,
+					     const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -103,8 +103,8 @@
 	  ((numCorners()+1)*spaceDim() == vertices.size()) ); // quadratic edge
   assert(spaceDim()*cellDim() == jacobian->size());
 
-  const double x0 = vertices[0];
-  const double x1 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar x1 = vertices[1];
 
   (*jacobian)[0] = (x1 - x0)/2.0;
   *det = (*jacobian)[0];
@@ -113,10 +113,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryLine1D::jacobian(double* jacobian,
-					     double* det,
-					     const double* vertices,
-					     const double* location,
+pylith::feassemble::GeometryLine1D::jacobian(PylithScalar* jacobian,
+					     PylithScalar* det,
+					     const PylithScalar* vertices,
+					     const PylithScalar* location,
 					     const int dim,
 					     const int npts) const
 { // jacobian
@@ -127,10 +127,10 @@
   assert(1 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double x1 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar x1 = vertices[1];
 
-  const double j = (x1 - x0)/2.0;
+  const PylithScalar j = (x1 - x0)/2.0;
   for (int i=0; i < npts; ++i) {
     jacobian[i] = j;
     det[i] = j;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine1D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine1D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -64,9 +64,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -77,10 +77,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -91,10 +91,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "GeometryPoint2D.hh" // USES GeometryPoint
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "petsc.h" // USES PetscLogFlops
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryLine2D::GeometryLine2D(void) :
   CellGeometry(LINE, 2)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,
     +1.0,
   };
@@ -65,9 +65,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryLine2D::ptsRefToGlobal(double* ptsGlobal,
-						   const double* ptsRef,
-						   const double* vertices,
+pylith::feassemble::GeometryLine2D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						   const PylithScalar* ptsRef,
+						   const PylithScalar* vertices,
 						   const int dim,
 						   const int npts) const
 { // ptsRefToGlobal
@@ -77,17 +77,17 @@
   assert(2 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
 
   for (int i=0, iG=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[i]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[i]);
     ptsGlobal[iG++] = x0 + f_1 * p0;
     ptsGlobal[iG++] = y0 + g_1 * p0;
   } // for
@@ -98,10 +98,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryLine2D::jacobian(double_array* jacobian,
-					     double* det,
-					     const double_array& vertices,
-					     const double_array& location) const
+pylith::feassemble::GeometryLine2D::jacobian(scalar_array* jacobian,
+					     PylithScalar* det,
+					     const scalar_array& vertices,
+					     const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -110,11 +110,11 @@
 	  ((numCorners()+1)*spaceDim() == vertices.size()) ); // quadratic
   assert(spaceDim()*cellDim() == jacobian->size());
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
   (*jacobian)[0] = (x1 - x0)/2.0;
   (*jacobian)[1] = (y1 - y0)/2.0;
@@ -127,10 +127,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryLine2D::jacobian(double* jacobian,
-					     double* det,
-					     const double* vertices,
-					     const double* location,
+pylith::feassemble::GeometryLine2D::jacobian(PylithScalar* jacobian,
+					     PylithScalar* det,
+					     const PylithScalar* vertices,
+					     const PylithScalar* location,
 					     const int dim,
 					     const int npts) const
 { // jacobian
@@ -141,15 +141,15 @@
   assert(2 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
-  const double j1 = (x1 - x0) / 2.0;
-  const double j2 = (y1 - y0) / 2.0;
-  const double jdet = sqrt(j1*j1 + j2*j2);
+  const PylithScalar j1 = (x1 - x0) / 2.0;
+  const PylithScalar j2 = (y1 - y0) / 2.0;
+  const PylithScalar jdet = sqrt(j1*j1 + j2*j2);
 
   for (int i=0, iJ=0; i < npts; ++i) {
     jacobian[iJ++] = j1;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -64,9 +64,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -77,10 +77,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -91,10 +91,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "petsc.h" // USES PetscLogFlops
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryLine3D::GeometryLine3D(void) :
   CellGeometry(LINE, 3)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,
     +1.0,
   };
@@ -65,9 +65,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryLine3D::ptsRefToGlobal(double* ptsGlobal,
-						   const double* ptsRef,
-						   const double* vertices,
+pylith::feassemble::GeometryLine3D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						   const PylithScalar* ptsRef,
+						   const PylithScalar* vertices,
 						   const int dim,
 						   const int npts) const
 { // ptsRefToGlobal
@@ -77,20 +77,20 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
-  const double h_1 = z1 - z0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
+  const PylithScalar h_1 = z1 - z0;
 
   for (int i=0, iG=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[i]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[i]);
     ptsGlobal[iG++] = x0 + f_1 * p0;
     ptsGlobal[iG++] = y0 + g_1 * p0;
     ptsGlobal[iG++] = z0 + h_1 * p0;
@@ -102,10 +102,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryLine3D::jacobian(double_array* jacobian,
-					   double* det,
-					   const double_array& vertices,
-					   const double_array& location) const
+pylith::feassemble::GeometryLine3D::jacobian(scalar_array* jacobian,
+					   PylithScalar* det,
+					   const scalar_array& vertices,
+					   const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -114,13 +114,13 @@
 	  ((numCorners()+1)*spaceDim() == vertices.size()) ); // quadratic edge
   assert(spaceDim()*cellDim() == jacobian->size());
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
   (*jacobian)[0] = (x1 - x0)/2.0;
   (*jacobian)[1] = (y1 - y0)/2.0;
@@ -134,10 +134,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryLine3D::jacobian(double* jacobian,
-					     double* det,
-					     const double* vertices,
-					     const double* location,
+pylith::feassemble::GeometryLine3D::jacobian(PylithScalar* jacobian,
+					     PylithScalar* det,
+					     const PylithScalar* vertices,
+					     const PylithScalar* location,
 					     const int dim,
 					     const int npts) const
 { // jacobian
@@ -148,18 +148,18 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double j1 = (x1 - x0) / 2.0;
-  const double j2 = (y1 - y0) / 2.0;
-  const double j3 = (z1 - z0) / 2.0;
-  const double jdet = sqrt(j1*j1 + j2*j2 + j3*j3);
+  const PylithScalar j1 = (x1 - x0) / 2.0;
+  const PylithScalar j2 = (y1 - y0) / 2.0;
+  const PylithScalar j3 = (z1 - z0) / 2.0;
+  const PylithScalar jdet = sqrt(j1*j1 + j2*j2 + j3*j3);
 
   for (int i=0, iJ=0; i < npts; ++i) {
     jacobian[iJ++] = j1;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryLine3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -64,9 +64,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -77,10 +77,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -91,10 +91,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,7 +20,7 @@
 
 #include "GeometryPoint1D.hh" // implementation of class methods
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -29,7 +29,7 @@
 pylith::feassemble::GeometryPoint1D::GeometryPoint1D(void) :
   CellGeometry(POINT, 1)
 { // constructor
-  const double vertices[] = { 0.0 };
+  const PylithScalar vertices[] = { 0.0 };
   _setVertices(vertices, 1, 1);
 } // constructor
 
@@ -58,9 +58,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryPoint1D::ptsRefToGlobal(double* ptsGlobal,
-						    const double* ptsRef,
-						    const double* vertices,
+pylith::feassemble::GeometryPoint1D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						    const PylithScalar* ptsRef,
+						    const PylithScalar* vertices,
 						    const int dim,
 						    const int npts) const
 { // ptsRefToGlobal
@@ -77,10 +77,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryPoint1D::jacobian(double_array* jacobian,
-					      double* det,
-					      const double_array& vertices,
-					      const double_array& location) const
+pylith::feassemble::GeometryPoint1D::jacobian(scalar_array* jacobian,
+					      PylithScalar* det,
+					      const scalar_array& vertices,
+					      const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -94,10 +94,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryPoint1D::jacobian(double* jacobian,
-					      double* det,
-					      const double* vertices,
-					      const double* ptsRef,
+pylith::feassemble::GeometryPoint1D::jacobian(PylithScalar* jacobian,
+					      PylithScalar* det,
+					      const PylithScalar* vertices,
+					      const PylithScalar* ptsRef,
 					      const int dim,
 					      const int npts) const
 { // jacobian

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint1D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint1D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -64,9 +64,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -77,10 +77,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -91,10 +91,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,7 +20,7 @@
 
 #include "GeometryPoint2D.hh" // implementation of class methods
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -29,7 +29,7 @@
 pylith::feassemble::GeometryPoint2D::GeometryPoint2D(void) :
   CellGeometry(POINT, 2)
 { // constructor
-  const double vertices[] = { 0.0 };
+  const PylithScalar vertices[] = { 0.0 };
   _setVertices(vertices, 1, 1);
 } // constructor
 
@@ -58,9 +58,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryPoint2D::ptsRefToGlobal(double* ptsGlobal,
-						    const double* ptsRef,
-						    const double* vertices,
+pylith::feassemble::GeometryPoint2D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						    const PylithScalar* ptsRef,
+						    const PylithScalar* vertices,
 						    const int dim,
 						    const int npts) const
 { // ptsRefToGlobal
@@ -78,10 +78,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryPoint2D::jacobian(double_array* jacobian,
-					  double* det,
-					  const double_array& vertices,
-					  const double_array& location) const
+pylith::feassemble::GeometryPoint2D::jacobian(scalar_array* jacobian,
+					  PylithScalar* det,
+					  const scalar_array& vertices,
+					  const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -95,10 +95,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryPoint2D::jacobian(double* jacobian,
-					      double* det,
-					      const double* vertices,
-					      const double* location,
+pylith::feassemble::GeometryPoint2D::jacobian(PylithScalar* jacobian,
+					      PylithScalar* det,
+					      const PylithScalar* vertices,
+					      const PylithScalar* location,
 					      const int dim,
 					      const int npts) const
 { // jacobian

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -64,9 +64,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -77,10 +77,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -91,10 +91,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,7 +20,7 @@
 
 #include "GeometryPoint3D.hh" // implementation of class methods
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -29,7 +29,7 @@
 pylith::feassemble::GeometryPoint3D::GeometryPoint3D(void) :
   CellGeometry(POINT, 3)
 { // constructor
-  const double vertices[] = { 0.0 };
+  const PylithScalar vertices[] = { 0.0 };
   _setVertices(vertices, 1, 1);
 } // constructor
 
@@ -58,9 +58,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryPoint3D::ptsRefToGlobal(double* ptsGlobal,
-						    const double* ptsRef,
-						    const double* vertices,
+pylith::feassemble::GeometryPoint3D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						    const PylithScalar* ptsRef,
+						    const PylithScalar* vertices,
 						    const int dim,
 						    const int npts) const
 { // ptsRefToGlobal
@@ -78,10 +78,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryPoint3D::jacobian(double_array* jacobian,
-					    double* det,
-					    const double_array& vertices,
-					    const double_array& location) const
+pylith::feassemble::GeometryPoint3D::jacobian(scalar_array* jacobian,
+					    PylithScalar* det,
+					    const scalar_array& vertices,
+					    const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -95,10 +95,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryPoint3D::jacobian(double* jacobian,
-					      double* det,
-					      const double* vertices,
-					      const double* location,
+pylith::feassemble::GeometryPoint3D::jacobian(PylithScalar* jacobian,
+					      PylithScalar* det,
+					      const PylithScalar* vertices,
+					      const PylithScalar* location,
 					      const int dim,
 					      const int npts) const
 { // jacobian

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryPoint3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -64,9 +64,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -77,10 +77,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -91,10 +91,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "petsc.h" // USES PetscLogFlops
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryQuad2D::GeometryQuad2D(void) :
   CellGeometry(QUADRILATERAL, 2)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,  -1.0,
     +1.0,  -1.0,
     +1.0,  +1.0,
@@ -67,9 +67,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryQuad2D::ptsRefToGlobal(double* ptsGlobal,
-						   const double* ptsRef,
-						   const double* vertices,
+pylith::feassemble::GeometryQuad2D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						   const PylithScalar* ptsRef,
+						   const PylithScalar* vertices,
 						   const int dim,
 						   const int npts) const
 { // ptsRefToGlobal
@@ -79,30 +79,30 @@
   assert(2 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
-  const double x2 = vertices[4];
-  const double y2 = vertices[5];
+  const PylithScalar x2 = vertices[4];
+  const PylithScalar y2 = vertices[5];
 
-  const double x3 = vertices[6];
-  const double y3 = vertices[7];
+  const PylithScalar x3 = vertices[6];
+  const PylithScalar y3 = vertices[7];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
 
-  const double f_3 = x3 - x0;
-  const double g_3 = y3 - y0;
+  const PylithScalar f_3 = x3 - x0;
+  const PylithScalar g_3 = y3 - y0;
 
-  const double f_01 = x2 - x1 - x3 + x0;
-  const double g_01 = y2 - y1 - y3 + y0;
+  const PylithScalar f_01 = x2 - x1 - x3 + x0;
+  const PylithScalar g_01 = y2 - y1 - y3 + y0;
 
   for (int i=0, iR=0, iG=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
     ptsGlobal[iG++] = x0 + f_1 * p0 + f_3 * p1 + f_01 * p0 * p1;
     ptsGlobal[iG++] = y0 + g_1 * p0 + g_3 * p1 + g_01 * p0 * p1;
   } // for
@@ -113,10 +113,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryQuad2D::jacobian(double_array* jacobian,
-					  double* det,
-					  const double_array& vertices,
-					  const double_array& location) const
+pylith::feassemble::GeometryQuad2D::jacobian(scalar_array* jacobian,
+					  PylithScalar* det,
+					  const scalar_array& vertices,
+					  const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -126,25 +126,25 @@
   assert(cellDim() == location.size());
   assert(spaceDim()*cellDim() == jacobian->size());
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
-  const double x2 = vertices[4];
-  const double y2 = vertices[5];
+  const PylithScalar x2 = vertices[4];
+  const PylithScalar y2 = vertices[5];
 
-  const double x3 = vertices[6];
-  const double y3 = vertices[7];
+  const PylithScalar x3 = vertices[6];
+  const PylithScalar y3 = vertices[7];
 
-  const double x = 0.5 * (location[0] + 1.0);
-  const double y = 0.5 * (location[1] + 1.0);
+  const PylithScalar x = 0.5 * (location[0] + 1.0);
+  const PylithScalar y = 0.5 * (location[1] + 1.0);
   assert(0 <= x && x <= 1.0);
   assert(0 <= y && y <= 1.0);
 
-  const double f_xy = x2 - x1 - x3 + x0;
-  const double g_xy = y2 - y1 - y3 + y0;
+  const PylithScalar f_xy = x2 - x1 - x3 + x0;
+  const PylithScalar g_xy = y2 - y1 - y3 + y0;
 
   (*jacobian)[0] = (x1 - x0 + f_xy*y) / 2.0;
   (*jacobian)[1] = (x3 - x0 + f_xy*x) / 2.0;
@@ -161,10 +161,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryQuad2D::jacobian(double* jacobian,
-					     double* det,
-					     const double* vertices,
-					     const double* ptsRef,
+pylith::feassemble::GeometryQuad2D::jacobian(PylithScalar* jacobian,
+					     PylithScalar* det,
+					     const PylithScalar* vertices,
+					     const PylithScalar* ptsRef,
 					     const int dim,
 					     const int npts) const
 { // jacobian
@@ -175,36 +175,36 @@
   assert(2 == dim);
   assert(spaceDim() == dim);
     
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
-  const double x2 = vertices[4];
-  const double y2 = vertices[5];
+  const PylithScalar x2 = vertices[4];
+  const PylithScalar y2 = vertices[5];
 
-  const double x3 = vertices[6];
-  const double y3 = vertices[7];
+  const PylithScalar x3 = vertices[6];
+  const PylithScalar y3 = vertices[7];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
 
-  const double f_3 = x3 - x0;
-  const double g_3 = y3 - y0;
+  const PylithScalar f_3 = x3 - x0;
+  const PylithScalar g_3 = y3 - y0;
 
-  const double f_01 = x2 - x1 - x3 + x0;
-  const double g_01 = y2 - y1 - y3 + y0;
+  const PylithScalar f_01 = x2 - x1 - x3 + x0;
+  const PylithScalar g_01 = y2 - y1 - y3 + y0;
 
   for (int i=0, iR=0, iJ=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
     assert(0 <= p0 && p0 <= 1.0);
     assert(0 <= p1 && p1 <= 1.0);
-    const double j00 = (f_1 + f_01 * p1) / 2.0; 
-    const double j01 = (f_3 + f_01 * p0) / 2.0; 
-    const double j10 = (g_1 + g_01 * p1) / 2.0;
-    const double j11 = (g_3 + g_01 * p0) / 2.0; 
+    const PylithScalar j00 = (f_1 + f_01 * p1) / 2.0; 
+    const PylithScalar j01 = (f_3 + f_01 * p0) / 2.0; 
+    const PylithScalar j10 = (g_1 + g_01 * p1) / 2.0;
+    const PylithScalar j11 = (g_3 + g_01 * p0) / 2.0; 
 
     jacobian[iJ++] = j00;
     jacobian[iJ++] = j01;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -82,9 +82,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -95,10 +95,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -109,10 +109,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "petsc.h" // USES PetscLogFlops
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryQuad3D::GeometryQuad3D(void) :
   CellGeometry(QUADRILATERAL, 3)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,  -1.0,
     +1.0,  -1.0,
     +1.0,  +1.0,
@@ -67,9 +67,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryQuad3D::ptsRefToGlobal(double* ptsGlobal,
-						   const double* ptsRef,
-						   const double* vertices,
+pylith::feassemble::GeometryQuad3D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						   const PylithScalar* ptsRef,
+						   const PylithScalar* vertices,
 						   const int dim,
 						   const int npts) const
 { // ptsRefToGlobal
@@ -79,37 +79,37 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
-  const double h_1 = z1 - z0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
+  const PylithScalar h_1 = z1 - z0;
 
-  const double f_3 = x3 - x0;
-  const double g_3 = y3 - y0;
-  const double h_3 = z3 - z0;
+  const PylithScalar f_3 = x3 - x0;
+  const PylithScalar g_3 = y3 - y0;
+  const PylithScalar h_3 = z3 - z0;
 
-  const double f_01 = x2 - x1 - x3 + x0;
-  const double g_01 = y2 - y1 - y3 + y0;
-  const double h_01 = z2 - z1 - z3 + z0;
+  const PylithScalar f_01 = x2 - x1 - x3 + x0;
+  const PylithScalar g_01 = y2 - y1 - y3 + y0;
+  const PylithScalar h_01 = z2 - z1 - z3 + z0;
 
   for (int i=0, iR=0, iG=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
     assert(0 <= p0 && p0 <= 1.0);
     assert(0 <= p1 && p1 <= 1.0);
     ptsGlobal[iG++] = x0 + f_1 * p0 + f_3 * p1 + f_01 * p0 * p1;
@@ -123,10 +123,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryQuad3D::jacobian(double_array* jacobian,
-					  double* det,
-					  const double_array& vertices,
-					  const double_array& location) const
+pylith::feassemble::GeometryQuad3D::jacobian(scalar_array* jacobian,
+					  PylithScalar* det,
+					  const scalar_array& vertices,
+					  const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -136,30 +136,30 @@
   assert(cellDim() == location.size());
   assert(spaceDim()*cellDim() == jacobian->size());
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
-  const double x = 0.5 * (location[0] + 1.0);
-  const double y = 0.5 * (location[1] + 1.0);
+  const PylithScalar x = 0.5 * (location[0] + 1.0);
+  const PylithScalar y = 0.5 * (location[1] + 1.0);
   assert(0 <= x && x <= 1.0);
   assert(0 <= y && y <= 1.0);
 
-  const double f_xy = x2 - x1 - x3 + x0;
-  const double g_xy = y2 - y1 - y3 + y0;
-  const double h_xy = z2 - z1 - z3 + z0;
+  const PylithScalar f_xy = x2 - x1 - x3 + x0;
+  const PylithScalar g_xy = y2 - y1 - y3 + y0;
+  const PylithScalar h_xy = z2 - z1 - z3 + z0;
 
   (*jacobian)[0] = (x1 - x0 + f_xy*y) / 2.0;
   (*jacobian)[1] = (x3 - x0 + f_xy*x) / 2.0;
@@ -170,16 +170,16 @@
   (*jacobian)[4] = (z1 - z0 + h_xy*y) / 2.0;
   (*jacobian)[5] = (z3 - z0 + h_xy*x) / 2.0;
 
-  const double jj00 = 
+  const PylithScalar jj00 = 
     (*jacobian)[0]*(*jacobian)[0] +
     (*jacobian)[2]*(*jacobian)[2] +
     (*jacobian)[4]*(*jacobian)[4];
-  const double jj10 =
+  const PylithScalar jj10 =
     (*jacobian)[0]*(*jacobian)[1] +
     (*jacobian)[2]*(*jacobian)[3] +
     (*jacobian)[4]*(*jacobian)[5];
-  const double jj01 = jj10;
-  const double jj11 = 
+  const PylithScalar jj01 = jj10;
+  const PylithScalar jj11 = 
     (*jacobian)[1]*(*jacobian)[1] +
     (*jacobian)[3]*(*jacobian)[3] +
     (*jacobian)[5]*(*jacobian)[5];
@@ -191,10 +191,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryQuad3D::jacobian(double* jacobian,
-					     double* det,
-					     const double* vertices,
-					     const double* ptsRef,
+pylith::feassemble::GeometryQuad3D::jacobian(PylithScalar* jacobian,
+					     PylithScalar* det,
+					     const PylithScalar* vertices,
+					     const PylithScalar* ptsRef,
 					     const int dim,
 					     const int npts) const
 { // jacobian
@@ -205,45 +205,45 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
-  const double f_1 = (x1 - x0) / 2.0;
-  const double g_1 = (y1 - y0) / 2.0;
-  const double h_1 = (z1 - z0) / 2.0;
+  const PylithScalar f_1 = (x1 - x0) / 2.0;
+  const PylithScalar g_1 = (y1 - y0) / 2.0;
+  const PylithScalar h_1 = (z1 - z0) / 2.0;
 
-  const double f_3 = (x3 - x0) / 2.0;
-  const double g_3 = (y3 - y0) / 2.0;
-  const double h_3 = (z3 - z0) / 2.0;
+  const PylithScalar f_3 = (x3 - x0) / 2.0;
+  const PylithScalar g_3 = (y3 - y0) / 2.0;
+  const PylithScalar h_3 = (z3 - z0) / 2.0;
 
-  const double f_01 = (x2 - x1 - x3 + x0) / 2.0;
-  const double g_01 = (y2 - y1 - y3 + y0) / 2.0;
-  const double h_01 = (z2 - z1 - z3 + z0) / 2.0;
+  const PylithScalar f_01 = (x2 - x1 - x3 + x0) / 2.0;
+  const PylithScalar g_01 = (y2 - y1 - y3 + y0) / 2.0;
+  const PylithScalar h_01 = (z2 - z1 - z3 + z0) / 2.0;
 
   for (int i=0, iR=0, iJ=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
     assert(0 <= p0 && p0 <= 1.0);
     assert(0 <= p1 && p1 <= 1.0);
-    const double j0 = f_1 + f_01 * p1; 
-    const double j1 = f_3 + f_01 * p0; 
-    const double j2 = g_1 + g_01 * p1;
-    const double j3 = g_3 + g_01 * p0; 
-    const double j4 = h_1 + h_01 * p1;
-    const double j5 = h_3 + h_01 * p0;
+    const PylithScalar j0 = f_1 + f_01 * p1; 
+    const PylithScalar j1 = f_3 + f_01 * p0; 
+    const PylithScalar j2 = g_1 + g_01 * p1;
+    const PylithScalar j3 = g_3 + g_01 * p0; 
+    const PylithScalar j4 = h_1 + h_01 * p1;
+    const PylithScalar j5 = h_3 + h_01 * p0;
     jacobian[iJ++] = j0;
     jacobian[iJ++] = j1;
     jacobian[iJ++] = j2;
@@ -251,10 +251,10 @@
     jacobian[iJ++] = j4;
     jacobian[iJ++] = j5;
 
-    const double jj00 = j0*j0 + j2*j2 + j4*j4;
-    const double jj10 = j0*j1 + j2*j3 + j4*j5;
-    const double jj01 = jj10;
-    const double jj11 = j1*j1 + j3*j3 + j5*j5;
+    const PylithScalar jj00 = j0*j0 + j2*j2 + j4*j4;
+    const PylithScalar jj10 = j0*j1 + j2*j3 + j4*j5;
+    const PylithScalar jj01 = jj10;
+    const PylithScalar jj11 = j1*j1 + j3*j3 + j5*j5;
     det[i] = sqrt(jj00*jj11 - jj01*jj10);
   } // for
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryQuad3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -80,9 +80,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -93,10 +93,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -107,10 +107,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTet3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTet3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTet3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "petsc.h" // USES PetscLogFlops
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryTet3D::GeometryTet3D(void) :
   CellGeometry(TETRAHEDRON, 3)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,  -1.0,  -1.0,
     +1.0,  -1.0,  -1.0,
     -1.0,  +1.0,  -1.0,
@@ -67,9 +67,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryTet3D::ptsRefToGlobal(double* ptsGlobal,
-						  const double* ptsRef,
-						  const double* vertices,
+pylith::feassemble::GeometryTet3D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						  const PylithScalar* ptsRef,
+						  const PylithScalar* vertices,
 						  const int dim,
 						  const int npts) const
 { // ptsRefToGlobal
@@ -79,38 +79,38 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
-  const double h_1 = z1 - z0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
+  const PylithScalar h_1 = z1 - z0;
 
-  const double f_2 = x2 - x0;
-  const double g_2 = y2 - y0;
-  const double h_2 = z2 - z0;
+  const PylithScalar f_2 = x2 - x0;
+  const PylithScalar g_2 = y2 - y0;
+  const PylithScalar h_2 = z2 - z0;
 
-  const double f_3 = x3 - x0;
-  const double g_3 = y3 - y0;
-  const double h_3 = z3 - z0;
+  const PylithScalar f_3 = x3 - x0;
+  const PylithScalar g_3 = y3 - y0;
+  const PylithScalar h_3 = z3 - z0;
 
   for (int i=0, iR=0, iG=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p2 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p2 = 0.5 * (1.0 + ptsRef[iR++]);
     assert(0 <= p0 && p0 <= 1.0);
     assert(0 <= p1 && p1 <= 1.0);
     assert(0 <= p2 && p2 <= 1.0);
@@ -126,10 +126,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryTet3D::jacobian(double_array* jacobian,
-					    double* det,
-					    const double_array& vertices,
-					    const double_array& location) const
+pylith::feassemble::GeometryTet3D::jacobian(scalar_array* jacobian,
+					    PylithScalar* det,
+					    const scalar_array& vertices,
+					    const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
   assert(0 != det);
@@ -137,21 +137,21 @@
   assert(numCorners()*spaceDim() == vertices.size());
   assert(spaceDim()*cellDim() == jacobian->size());
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
   (*jacobian)[0] = (x1 - x0) / 2.0;
   (*jacobian)[1] = (x2 - x0) / 2.0;
@@ -177,10 +177,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryTet3D::jacobian(double* jacobian,
-					    double* det,
-					    const double* vertices,
-					    const double* ptsRef,
+pylith::feassemble::GeometryTet3D::jacobian(PylithScalar* jacobian,
+					    PylithScalar* det,
+					    const PylithScalar* vertices,
+					    const PylithScalar* ptsRef,
 					    const int dim,
 					    const int npts) const
 { // jacobian
@@ -191,35 +191,35 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
+  const PylithScalar x3 = vertices[9];
+  const PylithScalar y3 = vertices[10];
+  const PylithScalar z3 = vertices[11];
 
-  const double j0 = (x1 - x0) / 2.0;
-  const double j1 = (x2 - x0) / 2.0;
-  const double j2 = (x3 - x0) / 2.0;
+  const PylithScalar j0 = (x1 - x0) / 2.0;
+  const PylithScalar j1 = (x2 - x0) / 2.0;
+  const PylithScalar j2 = (x3 - x0) / 2.0;
 
-  const double j3 = (y1 - y0) / 2.0;
-  const double j4 = (y2 - y0) / 2.0;
-  const double j5 = (y3 - y0) / 2.0;
+  const PylithScalar j3 = (y1 - y0) / 2.0;
+  const PylithScalar j4 = (y2 - y0) / 2.0;
+  const PylithScalar j5 = (y3 - y0) / 2.0;
 
-  const double j6 = (z1 - z0) / 2.0;
-  const double j7 = (z2 - z0) / 2.0;
-  const double j8 = (z3 - z0) / 2.0;
+  const PylithScalar j6 = (z1 - z0) / 2.0;
+  const PylithScalar j7 = (z2 - z0) / 2.0;
+  const PylithScalar j8 = (z3 - z0) / 2.0;
 
-  const double jdet = 
+  const PylithScalar jdet = 
     j0*(j4*j8 - j5*j7) -
     j1*(j3*j8 - j5*j6) +
     j2*(j3*j7 - j4*j6);

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTet3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTet3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTet3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -75,9 +75,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -88,10 +88,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -102,10 +102,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "petsc.h" // USES PetscLogFlops
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryTri2D::GeometryTri2D(void) :
   CellGeometry(TRIANGLE, 2)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,  -1.0,
     +1.0,  -1.0,
     -1.0,  +1.0,
@@ -66,9 +66,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryTri2D::ptsRefToGlobal(double* ptsGlobal,
-						  const double* ptsRef,
-						  const double* vertices,
+pylith::feassemble::GeometryTri2D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						  const PylithScalar* ptsRef,
+						  const PylithScalar* vertices,
 						  const int dim,
 						  const int npts) const
 { // ptsRefToGlobal
@@ -78,24 +78,24 @@
   assert(2 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
-  const double x2 = vertices[4];
-  const double y2 = vertices[5];
+  const PylithScalar x2 = vertices[4];
+  const PylithScalar y2 = vertices[5];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
 
-  const double f_2 = x2 - x0;
-  const double g_2 = y2 - y0;
+  const PylithScalar f_2 = x2 - x0;
+  const PylithScalar g_2 = y2 - y0;
 
   for (int i=0, iR=0, iG=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
     ptsGlobal[iG++] = x0 + f_1 * p0 + f_2 * p1;
     ptsGlobal[iG++] = y0 + g_1 * p0 + g_2 * p1;
   } // for
@@ -106,24 +106,24 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryTri2D::jacobian(double_array* jacobian,
-					  double* det,
-					  const double_array& vertices,
-					  const double_array& location) const
+pylith::feassemble::GeometryTri2D::jacobian(scalar_array* jacobian,
+					  PylithScalar* det,
+					  const scalar_array& vertices,
+					  const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(spaceDim()*cellDim() == jacobian->size());
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
-  const double x2 = vertices[4];
-  const double y2 = vertices[5];
+  const PylithScalar x2 = vertices[4];
+  const PylithScalar y2 = vertices[5];
 
   (*jacobian)[0] = (x1 - x0) / 2.0;
   (*jacobian)[1] = (x2 - x0) / 2.0;
@@ -140,10 +140,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryTri2D::jacobian(double* jacobian,
-					    double* det,
-					    const double* vertices,
-					    const double* location,
+pylith::feassemble::GeometryTri2D::jacobian(PylithScalar* jacobian,
+					    PylithScalar* det,
+					    const PylithScalar* vertices,
+					    const PylithScalar* location,
 					    const int dim,
 					    const int npts) const
 { // jacobian
@@ -154,21 +154,21 @@
   assert(2 == dim);
   assert(spaceDim() == dim);
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
 
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
+  const PylithScalar x1 = vertices[2];
+  const PylithScalar y1 = vertices[3];
 
-  const double x2 = vertices[4];
-  const double y2 = vertices[5];
+  const PylithScalar x2 = vertices[4];
+  const PylithScalar y2 = vertices[5];
 
 
-  const double j00 = (x1 - x0) / 2.0;
-  const double j01 = (x2 - x0) / 2.0;
-  const double j10 = (y1 - y0) / 2.0;
-  const double j11 = (y2 - y0) / 2.0;
-  const double jdet = j00*j11 - j10*j01;
+  const PylithScalar j00 = (x1 - x0) / 2.0;
+  const PylithScalar j01 = (x2 - x0) / 2.0;
+  const PylithScalar j10 = (y1 - y0) / 2.0;
+  const PylithScalar j11 = (y2 - y0) / 2.0;
+  const PylithScalar jdet = j00*j11 - j10*j01;
 
   for (int i=0, iJ=0; i < npts; ++i) {
     jacobian[iJ++] = j00;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -81,9 +81,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -94,10 +94,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -108,10 +108,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "petsc.h" // USES PetscLogFlops
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cassert> // USES assert()
 
@@ -33,7 +33,7 @@
 pylith::feassemble::GeometryTri3D::GeometryTri3D(void) :
   CellGeometry(TRIANGLE, 3)
 { // constructor
-  const double vertices[] = {
+  const PylithScalar vertices[] = {
     -1.0,  -1.0,
     +1.0,  -1.0,
     -1.0,  +1.0,
@@ -66,9 +66,9 @@
 // ----------------------------------------------------------------------
 // Transform coordinates in reference cell to global coordinates.
 void
-pylith::feassemble::GeometryTri3D::ptsRefToGlobal(double* ptsGlobal,
-						  const double* ptsRef,
-						  const double* vertices,
+pylith::feassemble::GeometryTri3D::ptsRefToGlobal(PylithScalar* ptsGlobal,
+						  const PylithScalar* ptsRef,
+						  const PylithScalar* vertices,
 						  const int dim,
 						  const int npts) const
 { // ptsRefToGlobal
@@ -78,29 +78,29 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
 
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double f_1 = x1 - x0;
-  const double g_1 = y1 - y0;
-  const double h_1 = z1 - z0;
+  const PylithScalar f_1 = x1 - x0;
+  const PylithScalar g_1 = y1 - y0;
+  const PylithScalar h_1 = z1 - z0;
 
-  const double f_2 = x2 - x0;
-  const double g_2 = y2 - y0;
-  const double h_2 = z2 - z0;
+  const PylithScalar f_2 = x2 - x0;
+  const PylithScalar g_2 = y2 - y0;
+  const PylithScalar h_2 = z2 - z0;
 
   for (int i=0, iR=0, iG=0; i < npts; ++i) {
-    const double p0 = 0.5 * (1.0 + ptsRef[iR++]);
-    const double p1 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p0 = 0.5 * (1.0 + ptsRef[iR++]);
+    const PylithScalar p1 = 0.5 * (1.0 + ptsRef[iR++]);
     ptsGlobal[iG++] = x0 + f_1 * p0 + f_2 * p1;
     ptsGlobal[iG++] = y0 + g_1 * p0 + g_2 * p1;
     ptsGlobal[iG++] = z0 + h_1 * p0 + h_2 * p1;
@@ -112,27 +112,27 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryTri3D::jacobian(double_array* jacobian,
-					    double* det,
-					    const double_array& vertices,
-					    const double_array& location) const
+pylith::feassemble::GeometryTri3D::jacobian(scalar_array* jacobian,
+					    PylithScalar* det,
+					    const scalar_array& vertices,
+					    const scalar_array& location) const
 { // jacobian
   assert(0 != jacobian);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(spaceDim()*cellDim() == jacobian->size());
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
   (*jacobian)[0] = (x1 - x0) / 2.0;
   (*jacobian)[1] = (x2 - x0) / 2.0;
@@ -143,16 +143,16 @@
   (*jacobian)[4] = (z1 - z0) / 2.0;
   (*jacobian)[5] = (z2 - z0) / 2.0;
 
-  const double jj00 = 
+  const PylithScalar jj00 = 
     (*jacobian)[0]*(*jacobian)[0] +
     (*jacobian)[2]*(*jacobian)[2] +
     (*jacobian)[4]*(*jacobian)[4];
-  const double jj10 =
+  const PylithScalar jj10 =
     (*jacobian)[0]*(*jacobian)[1] +
     (*jacobian)[2]*(*jacobian)[3] +
     (*jacobian)[4]*(*jacobian)[5];
-  const double jj01 = jj10;
-  const double jj11 = 
+  const PylithScalar jj01 = jj10;
+  const PylithScalar jj11 = 
     (*jacobian)[1]*(*jacobian)[1] +
     (*jacobian)[3]*(*jacobian)[3] +
     (*jacobian)[5]*(*jacobian)[5];
@@ -163,10 +163,10 @@
 // ----------------------------------------------------------------------
 // Compute Jacobian at location in cell.
 void
-pylith::feassemble::GeometryTri3D::jacobian(double* jacobian,
-					    double* det,
-					    const double* vertices,
-					    const double* location,
+pylith::feassemble::GeometryTri3D::jacobian(PylithScalar* jacobian,
+					    PylithScalar* det,
+					    const PylithScalar* vertices,
+					    const PylithScalar* location,
 					    const int dim,
 					    const int npts) const
 { // jacobian
@@ -177,32 +177,32 @@
   assert(3 == dim);
   assert(spaceDim() == dim);
   
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
+  const PylithScalar x0 = vertices[0];
+  const PylithScalar y0 = vertices[1];
+  const PylithScalar z0 = vertices[2];
 
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
+  const PylithScalar x1 = vertices[3];
+  const PylithScalar y1 = vertices[4];
+  const PylithScalar z1 = vertices[5];
 
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
+  const PylithScalar x2 = vertices[6];
+  const PylithScalar y2 = vertices[7];
+  const PylithScalar z2 = vertices[8];
 
-  const double j00 = (x1 - x0) / 2.0;
-  const double j01 = (x2 - x0) / 2.0;
+  const PylithScalar j00 = (x1 - x0) / 2.0;
+  const PylithScalar j01 = (x2 - x0) / 2.0;
 
-  const double j10 = (y1 - y0) / 2.0;
-  const double j11 = (y2 - y0) / 2.0;
+  const PylithScalar j10 = (y1 - y0) / 2.0;
+  const PylithScalar j11 = (y2 - y0) / 2.0;
 
-  const double j20 = (z1 - z0) / 2.0;
-  const double j21 = (z2 - z0) / 2.0;
+  const PylithScalar j20 = (z1 - z0) / 2.0;
+  const PylithScalar j21 = (z2 - z0) / 2.0;
 
-  const double jj00 = j00*j00 + j10*j10 + j20*j20;
-  const double jj10 = j00*j01 + j10*j11 + j20*j21;
-  const double jj01 = jj10;
-  const double jj11 = j01*j01 + j11*j11 + j21*j21;
-  const double jdet = sqrt(jj00*jj11 - jj01*jj10);
+  const PylithScalar jj00 = j00*j00 + j10*j10 + j20*j20;
+  const PylithScalar jj10 = j00*j01 + j10*j11 + j20*j21;
+  const PylithScalar jj01 = jj10;
+  const PylithScalar jj11 = j01*j01 + j11*j11 + j21*j21;
+  const PylithScalar jdet = sqrt(jj00*jj11 - jj01*jj10);
 
   for (int i=0, iJ=0; i < npts; ++i) {
     jacobian[iJ++] = j00;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/GeometryTri3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -81,9 +81,9 @@
    * @param dim Dimension of global coordinate system.
    * @param npts Number of points to transform.
    */
-  void ptsRefToGlobal(double* ptsGlobal,
-		      const double* ptsRef,
-		      const double* vertices,
+  void ptsRefToGlobal(PylithScalar* ptsGlobal,
+		      const PylithScalar* ptsRef,
+		      const PylithScalar* vertices,
 		      const int dim,
 		      const int npts =1) const;
 
@@ -94,10 +94,10 @@
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
-  void jacobian(double_array* jacobian,
-		double* det,
-		const double_array& vertices,
-		const double_array& location) const;
+  void jacobian(scalar_array* jacobian,
+		PylithScalar* det,
+		const scalar_array& vertices,
+		const scalar_array& location) const;
 
   /** Compute Jacobian at location in cell.
    *
@@ -108,10 +108,10 @@
    * @param dim Dimension of coordinate system.
    * @param npts Number of points to transform.
    */
-  void jacobian(double* jacobian,
-		double* det,
-		const double* vertices,
-		const double* ptsRef,
+  void jacobian(PylithScalar* jacobian,
+		PylithScalar* det,
+		const PylithScalar* vertices,
+		const PylithScalar* ptsRef,
 		const int dim,
 		const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -109,7 +109,7 @@
 // ----------------------------------------------------------------------
 // Get stable time step for advancing from time t to time t+dt.
 template<typename quadrature_type>
-double
+PylithScalar
 pylith::feassemble::Integrator<quadrature_type>::stableTimeStep(const topology::Mesh& mesh)
 { // stableTimeStep
   // Assume any time step will work.
@@ -172,7 +172,7 @@
   const int spaceDim = _quadrature->spaceDim();
 
   _cellVector = 0.0;
-  double value = 0.0;
+  PylithScalar value = 0.0;
   for (int iBasis=0; iBasis < numBasis; ++iBasis)
     for (int iDim=0; iDim < spaceDim; ++iDim) {
       value = 0.0;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES GravityField
 #include "spatialdata/units/unitsfwd.hh" // USES Nondimensional
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // Integrator -----------------------------------------------------------
 /** @brief Abstract base class for integration of finite-element
@@ -96,7 +96,7 @@
    * @param dt Time step
    */
   virtual
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Get stable time step for advancing from time t to time t+dt.
    *
@@ -106,7 +106,7 @@
    * @returns Time step
    */
   virtual
-  double stableTimeStep(const topology::Mesh& mesh);
+  PylithScalar stableTimeStep(const topology::Mesh& mesh);
 
   /** Check whether Jacobian needs to be recomputed.
    *
@@ -152,7 +152,7 @@
    */
   virtual 
   void integrateResidual(const topology::Field<topology::Mesh>& residual,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to residual term (r) for operator.
@@ -163,7 +163,7 @@
    */
   virtual
   void integrateResidualLumped(const topology::Field<topology::Mesh>& residual,
-       const double t,
+       const PylithScalar t,
        topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -175,7 +175,7 @@
    */
   virtual
   void integrateJacobian(topology::Jacobian* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -187,7 +187,7 @@
    */
   virtual
   void integrateJacobian(topology::Field<topology::Mesh>* jacobian,
-			 const double t,
+			 const PylithScalar t,
 			 topology::SolutionFields* const fields);
 
   /** Integrate contributions to Jacobian matrix (A) associated with
@@ -209,7 +209,7 @@
    * @param mesh Finite-element mesh
    */
   virtual
-  void updateStateVars(const double t,
+  void updateStateVars(const PylithScalar t,
 		       topology::SolutionFields* const fields);
 
   /** Constrain solution space.
@@ -220,7 +220,7 @@
    */
   virtual
   void constrainSolnSpace(topology::SolutionFields* const fields,
-			  const double t,
+			  const PylithScalar t,
 			  const topology::Jacobian& jacobian);
 
   /** Adjust solution from solver with lumped Jacobian to match Lagrange
@@ -269,7 +269,7 @@
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
-  double _dt; ///< Time step for t -> t+dt
+  PylithScalar _dt; ///< Time step for t -> t+dt
 
   quadrature_type* _quadrature; ///< Quadrature for integrating finite-element
 
@@ -279,10 +279,10 @@
   utils::EventLogger* _logger; ///< Event logger.
 
   /// Vector local to cell containing result of integration action
-  double_array _cellVector;
+  scalar_array _cellVector;
 
   /// Matrix local to cell containing result of integration
-  double_array _cellMatrix;
+  scalar_array _cellMatrix;
 
   /// True if we need to recompute Jacobian for operator, false otherwise.
   /// Default is false;

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Integrator.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 template<typename quadrature_type>
 inline
 void
-pylith::feassemble::Integrator<quadrature_type>::timeStep(const double dt) {
+pylith::feassemble::Integrator<quadrature_type>::timeStep(const PylithScalar dt) {
   _dt = dt;
 } // timeStep
 
@@ -72,7 +72,7 @@
 void
 pylith::feassemble::Integrator<quadrature_type>::integrateResidual(
 			     const topology::Field<topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     topology::SolutionFields* const fields) {
 } // integrateResidual
 
@@ -82,7 +82,7 @@
 void
 pylith::feassemble::Integrator<quadrature_type>::integrateResidualLumped(
            const topology::Field<topology::Mesh>& residual,
-           const double t,
+           const PylithScalar t,
            topology::SolutionFields* const fields) {
   integrateResidual(residual, t, fields);
 } // integrateResidual
@@ -94,7 +94,7 @@
 void
 pylith::feassemble::Integrator<quadrature_type>::integrateJacobian(
 				     topology::Jacobian* jacobian,
-				     const double t,
+				     const PylithScalar t,
 				     topology::SolutionFields* const fields) {
   _needNewJacobian = false;
 } // integrateJacobian
@@ -106,7 +106,7 @@
 void
 pylith::feassemble::Integrator<quadrature_type>::integrateJacobian(
 				     topology::Field<topology::Mesh>* jacobian,
-				     const double t,
+				     const PylithScalar t,
 				     topology::SolutionFields* const fields) {
   _needNewJacobian = false;
 } // integrateJacobian
@@ -127,7 +127,7 @@
 inline
 void
 pylith::feassemble::Integrator<quadrature_type>::updateStateVars(
-				     const double t,
+				     const PylithScalar t,
 				     topology::SolutionFields* const fields) {
 } // updateState
 
@@ -137,7 +137,7 @@
 void
 pylith::feassemble::Integrator<quadrature_type>::constrainSolnSpace(
 			       topology::SolutionFields* const fields,
-			       const double t,
+			       const PylithScalar t,
 			       const topology::Jacobian& jacobian) {
 } // constrainSolnSpace
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,7 +31,7 @@
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cstring> // USES memcpy()
 #include <strings.h> // USES strcasecmp()
@@ -154,7 +154,7 @@
 // Update state variables as needed.
 void
 pylith::feassemble::IntegratorElasticity::updateStateVars(
-				      const double t,
+				      const PylithScalar t,
 				      topology::SolutionFields* const fields)
 { // updateState
   assert(0 != _quadrature);
@@ -189,7 +189,7 @@
   } // else
 
   // Allocate arrays for cell data.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
 
   // Get cell information
@@ -203,14 +203,14 @@
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
 
   // Get fields
-  double_array dispCell(numBasis*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
   const topology::Field<topology::Mesh>& disp = fields->get("disp(t)");
   const ALE::Obj<RealSection>& dispSection = disp.section();
   assert(!dispSection.isNull());
   RestrictVisitor dispVisitor(*dispSection, dispCell.size(), &dispCell[0]);
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -239,7 +239,7 @@
     sieveMesh->restrictClosure(*c_iter, dispVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
     // Compute strains
     calcTotalStrainFn(&strainCell, basisDeriv, dispCell, 
@@ -512,10 +512,10 @@
   } // else
   
   // Allocate arrays for cell data.
-  double_array dispCell(numBasis*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array stressCell(numQuadPts*tensorSize);
+  scalar_array stressCell(numQuadPts*tensorSize);
   stressCell = 0.0;
 
   // Get cell information
@@ -535,7 +535,7 @@
   RestrictVisitor dispVisitor(*dispSection, dispCell.size(), &dispCell[0]);
     
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -564,7 +564,7 @@
     sieveMesh->restrictClosure(*c_iter, dispVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
     
     // Compute strains
     calcTotalStrainFn(&strainCell, basisDeriv, dispCell, 
@@ -596,9 +596,9 @@
   const int tensorSize = _material->tensorSize();
   
   // Allocate arrays for cell data.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array stressCell(numQuadPts*tensorSize);
+  scalar_array stressCell(numQuadPts*tensorSize);
   stressCell = 0.0;
 
   // Get cell information
@@ -630,26 +630,26 @@
 // Integrate elasticity term in residual for 1-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityResidual1D(
-				     const double_array& stress)
+				     const scalar_array& stress)
 { // _elasticityResidual1D
   const int spaceDim = 1;
   const int cellDim = 1;
 
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
 
   assert(_quadrature->spaceDim() == spaceDim);
   assert(_quadrature->cellDim() == cellDim);
   assert(quadWts.size() == numQuadPts);
 
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
-    const double s11 = stress[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar s11 = stress[iQuad];
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double N1 = wt*basisDeriv[iQuad*numBasis+iBasis  ];
+      const PylithScalar N1 = wt*basisDeriv[iQuad*numBasis+iBasis  ];
       _cellVector[iBasis*spaceDim  ] -= N1*s11;
     } // for
   } // for
@@ -660,7 +660,7 @@
 // Integrate elasticity term in residual for 2-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityResidual2D(
-				     const double_array& stress)
+				     const scalar_array& stress)
 { // _elasticityResidual2D
   const int cellDim = 2;
   const int spaceDim = 2;
@@ -668,9 +668,9 @@
 
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(_quadrature->spaceDim() == spaceDim);
   assert(_quadrature->cellDim() == cellDim);
@@ -678,16 +678,16 @@
 
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
     const int iQs = iQuad*stressSize;
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
-    const double s11 = stress[iQs  ];
-    const double s22 = stress[iQs+1];
-    const double s12 = stress[iQs+2];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar s11 = stress[iQs  ];
+    const PylithScalar s22 = stress[iQs+1];
+    const PylithScalar s12 = stress[iQs+2];
     for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
 	 iBasis < numBasis;
 	 ++iBasis) {
       const int iBlock = iBasis*spaceDim;
-      const double N1 = wt*basisDeriv[iQ+iBlock  ];
-      const double N2 = wt*basisDeriv[iQ+iBlock+1];
+      const PylithScalar N1 = wt*basisDeriv[iQ+iBlock  ];
+      const PylithScalar N2 = wt*basisDeriv[iQ+iBlock+1];
 
       _cellVector[iBlock  ] -= N1*s11 + N2*s12;
       _cellVector[iBlock+1] -= N1*s12 + N2*s22;
@@ -700,7 +700,7 @@
 // Integrate elasticity term in residual for 3-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityResidual3D(
-				     const double_array& stress)
+				     const scalar_array& stress)
 { // _elasticityResidual3D
   const int spaceDim = 3;
   const int cellDim = 3;
@@ -708,9 +708,9 @@
 
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(_quadrature->spaceDim() == spaceDim);
   assert(_quadrature->cellDim() == cellDim);
@@ -718,21 +718,21 @@
   
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
     const int iQs = iQuad * stressSize;
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
-    const double s11 = stress[iQs  ];
-    const double s22 = stress[iQs+1];
-    const double s33 = stress[iQs+2];
-    const double s12 = stress[iQs+3];
-    const double s23 = stress[iQs+4];
-    const double s13 = stress[iQs+5];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar s11 = stress[iQs  ];
+    const PylithScalar s22 = stress[iQs+1];
+    const PylithScalar s33 = stress[iQs+2];
+    const PylithScalar s12 = stress[iQs+3];
+    const PylithScalar s23 = stress[iQs+4];
+    const PylithScalar s13 = stress[iQs+5];
     
     for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
         iBasis < numBasis;
         ++iBasis) {
       const int iBlock = iBasis*spaceDim;
-      const double N1 = wt*basisDeriv[iQ+iBlock+0];
-      const double N2 = wt*basisDeriv[iQ+iBlock+1];
-      const double N3 = wt*basisDeriv[iQ+iBlock+2];
+      const PylithScalar N1 = wt*basisDeriv[iQ+iBlock+0];
+      const PylithScalar N2 = wt*basisDeriv[iQ+iBlock+1];
+      const PylithScalar N3 = wt*basisDeriv[iQ+iBlock+2];
 
       _cellVector[iBlock  ] -= N1*s11 + N2*s12 + N3*s13;
       _cellVector[iBlock+1] -= N1*s12 + N2*s22 + N3*s23;
@@ -746,28 +746,28 @@
 // Integrate elasticity term in Jacobian for 1-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityJacobian1D(
-			       const double_array& elasticConsts)
+			       const scalar_array& elasticConsts)
 { // _elasticityJacobian1D
   const int cellDim = 1;
   const int spaceDim = 1;
 
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(_quadrature->spaceDim() == spaceDim);
   assert(_quadrature->cellDim() == cellDim);
   assert(quadWts.size() == numQuadPts);
   
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
-    const double C1111 = elasticConsts[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar C1111 = elasticConsts[iQuad];
     for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
-      const double valI = wt*basisDeriv[iQ+iBasis]*C1111;
+      const PylithScalar valI = wt*basisDeriv[iQ+iBasis]*C1111;
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-	const double valIJ = valI * basisDeriv[iQ+jBasis];
+	const PylithScalar valIJ = valI * basisDeriv[iQ+jBasis];
 	const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
 	const int jBlock = jBasis*spaceDim;
 	_cellMatrix[iBlock+jBlock] += valIJ;
@@ -781,25 +781,25 @@
 // Integrate laplacian term in Jacobian preconditioner for 1-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityPrecon1D(
-			       const double_array& elasticConsts)
+			       const scalar_array& elasticConsts)
 { // _elasticityPrecon1D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(1 == cellDim);
   assert(quadWts.size() == numQuadPts);
   
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
     for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
-      const double valI = wt*basisDeriv[iQ+iBasis];
+      const PylithScalar valI = wt*basisDeriv[iQ+iBasis];
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-        const double valIJ = valI * basisDeriv[iQ+jBasis];
+        const PylithScalar valIJ = valI * basisDeriv[iQ+jBasis];
         const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
         const int jBlock = jBasis*spaceDim;
         _cellMatrix[iBlock+jBlock] += valIJ;
@@ -813,7 +813,7 @@
 // Integrate elasticity term in Jacobian for 2-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityJacobian2D(
-			       const double_array& elasticConsts)
+			       const scalar_array& elasticConsts)
 { // _elasticityJacobian2D
   const int spaceDim = 2;
   const int cellDim = 2;
@@ -821,49 +821,49 @@
 
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(_quadrature->spaceDim() == spaceDim);
   assert(_quadrature->cellDim() == cellDim);
   assert(quadWts.size() == numQuadPts);
 
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
     // tau_ij = C_ijkl * e_kl
     //        = C_ijlk * 0.5 (u_k,l + u_l,k)
     //        = 0.5 * C_ijkl * (u_k,l + u_l,k)
     // divide C_ijkl by 2 if k != l
-    const double C1111 = elasticConsts[iQuad*numConsts+0];
-    const double C1122 = elasticConsts[iQuad*numConsts+1];
-    const double C1112 = elasticConsts[iQuad*numConsts+2]/2.0;
-    const double C2211 = elasticConsts[iQuad*numConsts+3];
-    const double C2222 = elasticConsts[iQuad*numConsts+4];
-    const double C2212 = elasticConsts[iQuad*numConsts+5]/2.0;
-    const double C1211 = elasticConsts[iQuad*numConsts+6];
-    const double C1222 = elasticConsts[iQuad*numConsts+7];
-    const double C1212 = elasticConsts[iQuad*numConsts+8]/2.0;
+    const PylithScalar C1111 = elasticConsts[iQuad*numConsts+0];
+    const PylithScalar C1122 = elasticConsts[iQuad*numConsts+1];
+    const PylithScalar C1112 = elasticConsts[iQuad*numConsts+2]/2.0;
+    const PylithScalar C2211 = elasticConsts[iQuad*numConsts+3];
+    const PylithScalar C2222 = elasticConsts[iQuad*numConsts+4];
+    const PylithScalar C2212 = elasticConsts[iQuad*numConsts+5]/2.0;
+    const PylithScalar C1211 = elasticConsts[iQuad*numConsts+6];
+    const PylithScalar C1222 = elasticConsts[iQuad*numConsts+7];
+    const PylithScalar C1212 = elasticConsts[iQuad*numConsts+8]/2.0;
     for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
 	 iBasis < numBasis;
 	 ++iBasis) {
-      const double Ni1 = wt*basisDeriv[iQ+iBasis*spaceDim  ];
-      const double Ni2 = wt*basisDeriv[iQ+iBasis*spaceDim+1];
+      const PylithScalar Ni1 = wt*basisDeriv[iQ+iBasis*spaceDim  ];
+      const PylithScalar Ni2 = wt*basisDeriv[iQ+iBasis*spaceDim+1];
       const int iBlock = (iBasis*spaceDim  ) * (numBasis*spaceDim);
       const int iBlock1 = (iBasis*spaceDim+1) * (numBasis*spaceDim);
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-	const double Nj1 = basisDeriv[iQ+jBasis*spaceDim  ];
-	const double Nj2 = basisDeriv[iQ+jBasis*spaceDim+1];
-	const double ki0j0 = 
+	const PylithScalar Nj1 = basisDeriv[iQ+jBasis*spaceDim  ];
+	const PylithScalar Nj2 = basisDeriv[iQ+jBasis*spaceDim+1];
+	const PylithScalar ki0j0 = 
 	  C1111 * Ni1 * Nj1 + C1211 * Ni2 * Nj1 +
 	  C1112 * Ni1 * Nj2 + C1212 * Ni2 * Nj2;
-	const double ki0j1 =
+	const PylithScalar ki0j1 =
 	  C1122 * Ni1 * Nj2 + C1222 * Ni2 * Nj2 +
 	  C1112 * Ni1 * Nj1 + C1212 * Ni2 * Nj1;
-	const double ki1j0 =
+	const PylithScalar ki1j0 =
 	  C2211 * Ni2 * Nj1 + C1211 * Ni1 * Nj1 +
 	  C2212 * Ni2 * Nj2 + C1212 * Ni1 * Nj2;
-	const double ki1j1 =
+	const PylithScalar ki1j1 =
 	  C2222 * Ni2 * Nj2 + C1222 * Ni1 * Nj2 +
 	  C2212 * Ni2 * Nj1 + C1212 * Ni1 * Nj1;
 	const int jBlock = (jBasis*spaceDim  );
@@ -882,34 +882,34 @@
 // Integrate laplacian term in Jacobian preconditioner for 2-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityPrecon2D(
-			       const double_array& elasticConsts)
+			       const scalar_array& elasticConsts)
 { // _elasticityPrecon2D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
 
   assert(2 == cellDim);
   assert(quadWts.size() == numQuadPts);
 
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
     // Delta_ij = C_ijkl * e_kl
     //        = C_ijlk * 0.5 (u_k,l + u_l,k)
     //        = 0.5 * C_ijkl * (u_k,l + u_l,k)
     for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
 	 iBasis < numBasis;
 	 ++iBasis) {
-      const double Ni1  = wt*basisDeriv[iQ+iBasis*spaceDim  ];
-      const double Ni2  = wt*basisDeriv[iQ+iBasis*spaceDim+1];
+      const PylithScalar Ni1  = wt*basisDeriv[iQ+iBasis*spaceDim  ];
+      const PylithScalar Ni2  = wt*basisDeriv[iQ+iBasis*spaceDim+1];
       const int iBlock  = (iBasis*spaceDim  ) * (numBasis*spaceDim);
       const int iBlock1 = (iBasis*spaceDim+1) * (numBasis*spaceDim);
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-        const double Nj1  = basisDeriv[iQ+jBasis*spaceDim  ];
-        const double Nj2  = basisDeriv[iQ+jBasis*spaceDim+1];
+        const PylithScalar Nj1  = basisDeriv[iQ+jBasis*spaceDim  ];
+        const PylithScalar Nj2  = basisDeriv[iQ+jBasis*spaceDim+1];
         const int jBlock  = (jBasis*spaceDim  );
         const int jBlock1 = (jBasis*spaceDim+1);
         _cellMatrix[iBlock +jBlock ] += Ni1*Nj1;
@@ -924,7 +924,7 @@
 // Integrate elasticity term in Jacobian for 3-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityJacobian3D(
-			       const double_array& elasticConsts)
+			       const scalar_array& elasticConsts)
 { // _elasticityJacobian3D
   const int spaceDim = 3;
   const int cellDim = 3;
@@ -932,9 +932,9 @@
 
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(_quadrature->spaceDim() == spaceDim);
   assert(_quadrature->cellDim() == cellDim);
@@ -942,90 +942,90 @@
 
   // Compute Jacobian for consistent tangent matrix
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
     // tau_ij = C_ijkl * e_kl
     //        = C_ijlk * 0.5 (u_k,l + u_l,k)
     //        = 0.5 * C_ijkl * (u_k,l + u_l,k)
     // divide C_ijkl by 2 if k != l
-    const double C1111 = elasticConsts[iQuad*numConsts+ 0];
-    const double C1122 = elasticConsts[iQuad*numConsts+ 1];
-    const double C1133 = elasticConsts[iQuad*numConsts+ 2];
-    const double C1112 = elasticConsts[iQuad*numConsts+ 3] / 2.0;
-    const double C1123 = elasticConsts[iQuad*numConsts+ 4] / 2.0;
-    const double C1113 = elasticConsts[iQuad*numConsts+ 5] / 2.0;
-    const double C2211 = elasticConsts[iQuad*numConsts+ 6];
-    const double C2222 = elasticConsts[iQuad*numConsts+ 7];
-    const double C2233 = elasticConsts[iQuad*numConsts+ 8];
-    const double C2212 = elasticConsts[iQuad*numConsts+ 9] / 2.0;
-    const double C2223 = elasticConsts[iQuad*numConsts+10] / 2.0;
-    const double C2213 = elasticConsts[iQuad*numConsts+11] / 2.0;
-    const double C3311 = elasticConsts[iQuad*numConsts+12];
-    const double C3322 = elasticConsts[iQuad*numConsts+13];
-    const double C3333 = elasticConsts[iQuad*numConsts+14];
-    const double C3312 = elasticConsts[iQuad*numConsts+15] / 2.0;
-    const double C3323 = elasticConsts[iQuad*numConsts+16] / 2.0;
-    const double C3313 = elasticConsts[iQuad*numConsts+17] / 2.0;
-    const double C1211 = elasticConsts[iQuad*numConsts+18];
-    const double C1222 = elasticConsts[iQuad*numConsts+19];
-    const double C1233 = elasticConsts[iQuad*numConsts+20];
-    const double C1212 = elasticConsts[iQuad*numConsts+21] / 2.0;
-    const double C1223 = elasticConsts[iQuad*numConsts+22] / 2.0;
-    const double C1213 = elasticConsts[iQuad*numConsts+23] / 2.0;
-    const double C2311 = elasticConsts[iQuad*numConsts+24];
-    const double C2322 = elasticConsts[iQuad*numConsts+25];
-    const double C2333 = elasticConsts[iQuad*numConsts+26];
-    const double C2312 = elasticConsts[iQuad*numConsts+27] / 2.0;
-    const double C2323 = elasticConsts[iQuad*numConsts+28] / 2.0;
-    const double C2313 = elasticConsts[iQuad*numConsts+29] / 2.0;
-    const double C1311 = elasticConsts[iQuad*numConsts+30];
-    const double C1322 = elasticConsts[iQuad*numConsts+31];
-    const double C1333 = elasticConsts[iQuad*numConsts+32];
-    const double C1312 = elasticConsts[iQuad*numConsts+33] / 2.0;
-    const double C1323 = elasticConsts[iQuad*numConsts+34] / 2.0;
-    const double C1313 = elasticConsts[iQuad*numConsts+35] / 2.0;
+    const PylithScalar C1111 = elasticConsts[iQuad*numConsts+ 0];
+    const PylithScalar C1122 = elasticConsts[iQuad*numConsts+ 1];
+    const PylithScalar C1133 = elasticConsts[iQuad*numConsts+ 2];
+    const PylithScalar C1112 = elasticConsts[iQuad*numConsts+ 3] / 2.0;
+    const PylithScalar C1123 = elasticConsts[iQuad*numConsts+ 4] / 2.0;
+    const PylithScalar C1113 = elasticConsts[iQuad*numConsts+ 5] / 2.0;
+    const PylithScalar C2211 = elasticConsts[iQuad*numConsts+ 6];
+    const PylithScalar C2222 = elasticConsts[iQuad*numConsts+ 7];
+    const PylithScalar C2233 = elasticConsts[iQuad*numConsts+ 8];
+    const PylithScalar C2212 = elasticConsts[iQuad*numConsts+ 9] / 2.0;
+    const PylithScalar C2223 = elasticConsts[iQuad*numConsts+10] / 2.0;
+    const PylithScalar C2213 = elasticConsts[iQuad*numConsts+11] / 2.0;
+    const PylithScalar C3311 = elasticConsts[iQuad*numConsts+12];
+    const PylithScalar C3322 = elasticConsts[iQuad*numConsts+13];
+    const PylithScalar C3333 = elasticConsts[iQuad*numConsts+14];
+    const PylithScalar C3312 = elasticConsts[iQuad*numConsts+15] / 2.0;
+    const PylithScalar C3323 = elasticConsts[iQuad*numConsts+16] / 2.0;
+    const PylithScalar C3313 = elasticConsts[iQuad*numConsts+17] / 2.0;
+    const PylithScalar C1211 = elasticConsts[iQuad*numConsts+18];
+    const PylithScalar C1222 = elasticConsts[iQuad*numConsts+19];
+    const PylithScalar C1233 = elasticConsts[iQuad*numConsts+20];
+    const PylithScalar C1212 = elasticConsts[iQuad*numConsts+21] / 2.0;
+    const PylithScalar C1223 = elasticConsts[iQuad*numConsts+22] / 2.0;
+    const PylithScalar C1213 = elasticConsts[iQuad*numConsts+23] / 2.0;
+    const PylithScalar C2311 = elasticConsts[iQuad*numConsts+24];
+    const PylithScalar C2322 = elasticConsts[iQuad*numConsts+25];
+    const PylithScalar C2333 = elasticConsts[iQuad*numConsts+26];
+    const PylithScalar C2312 = elasticConsts[iQuad*numConsts+27] / 2.0;
+    const PylithScalar C2323 = elasticConsts[iQuad*numConsts+28] / 2.0;
+    const PylithScalar C2313 = elasticConsts[iQuad*numConsts+29] / 2.0;
+    const PylithScalar C1311 = elasticConsts[iQuad*numConsts+30];
+    const PylithScalar C1322 = elasticConsts[iQuad*numConsts+31];
+    const PylithScalar C1333 = elasticConsts[iQuad*numConsts+32];
+    const PylithScalar C1312 = elasticConsts[iQuad*numConsts+33] / 2.0;
+    const PylithScalar C1323 = elasticConsts[iQuad*numConsts+34] / 2.0;
+    const PylithScalar C1313 = elasticConsts[iQuad*numConsts+35] / 2.0;
     for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
 	 iBasis < numBasis;
 	 ++iBasis) {
-      const double Ni1 = wt*basisDeriv[iQ+iBasis*spaceDim+0];
-      const double Ni2 = wt*basisDeriv[iQ+iBasis*spaceDim+1];
-      const double Ni3 = wt*basisDeriv[iQ+iBasis*spaceDim+2];
+      const PylithScalar Ni1 = wt*basisDeriv[iQ+iBasis*spaceDim+0];
+      const PylithScalar Ni2 = wt*basisDeriv[iQ+iBasis*spaceDim+1];
+      const PylithScalar Ni3 = wt*basisDeriv[iQ+iBasis*spaceDim+2];
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-	const double Nj1 = basisDeriv[iQ+jBasis*spaceDim+0];
-	const double Nj2 = basisDeriv[iQ+jBasis*spaceDim+1];
-	const double Nj3 = basisDeriv[iQ+jBasis*spaceDim+2];
-	const double ki0j0 = 
+	const PylithScalar Nj1 = basisDeriv[iQ+jBasis*spaceDim+0];
+	const PylithScalar Nj2 = basisDeriv[iQ+jBasis*spaceDim+1];
+	const PylithScalar Nj3 = basisDeriv[iQ+jBasis*spaceDim+2];
+	const PylithScalar ki0j0 = 
 	  C1111 * Ni1 * Nj1 + C1211 * Ni2 * Nj1 + C1311 * Ni3 * Nj1 +
 	  C1112 * Ni1 * Nj2 + C1212 * Ni2 * Nj2 + C1312 * Ni3 * Nj2 +
 	  C1113 * Ni1 * Nj3 + C1213 * Ni2 * Nj3 + C1313 * Ni3 * Nj3;
-	const double ki0j1 =
+	const PylithScalar ki0j1 =
 	  C1122 * Ni1 * Nj2 + C1222 * Ni2 * Nj2 + C1322 * Ni3 * Nj2 +
 	  C1112 * Ni1 * Nj1 + C1212 * Ni2 * Nj1 + C1312 * Ni3 * Nj1 +
 	  C1123 * Ni1 * Nj3 + C1223 * Ni2 * Nj3 + C1323 * Ni3 * Nj3;
-	const double ki0j2 =
+	const PylithScalar ki0j2 =
 	  C1133 * Ni1 * Nj3 + C1233 * Ni2 * Nj3 + C1333 * Ni3 * Nj3 +
 	  C1123 * Ni1 * Nj2 + C1223 * Ni2 * Nj2 + C1323 * Ni3 * Nj2 +
 	  C1113 * Ni1 * Nj1 + C1213 * Ni2 * Nj1 + C1313 * Ni3 * Nj1;
-	const double ki1j0 =
+	const PylithScalar ki1j0 =
 	  C2211 * Ni2 * Nj1 + C1211 * Ni1 * Nj1 + C2311 * Ni3 * Nj1 +
 	  C2212 * Ni2 * Nj2 + C1212 * Ni1 * Nj2 + C2312 * Ni3 * Nj2 +
 	  C2213 * Ni2 * Nj3 + C1213 * Ni1 * Nj3 + C2313 * Ni3 * Nj3;
-	const double ki1j1 =
+	const PylithScalar ki1j1 =
 	  C2222 * Ni2 * Nj2 + C1222 * Ni1 * Nj2 + C2322 * Ni3 * Nj2 +
 	  C2212 * Ni2 * Nj1 + C1212 * Ni1 * Nj1 + C2312 * Ni3 * Nj1 +
 	  C2223 * Ni2 * Nj3 + C1223 * Ni1 * Nj3 + C2323 * Ni3 * Nj3;
-	const double ki1j2 =
+	const PylithScalar ki1j2 =
 	  C2233 * Ni2 * Nj3 + C1233 * Ni1 * Nj3 + C2333 * Ni3 * Nj3 +
 	  C2223 * Ni2 * Nj2 + C1223 * Ni1 * Nj2 + C2323 * Ni3 * Nj2 +
 	  C2213 * Ni2 * Nj1 + C1213 * Ni1 * Nj1 + C2313 * Ni3 * Nj1;
-	const double ki2j0 =
+	const PylithScalar ki2j0 =
 	  C3311 * Ni3 * Nj1 + C2311 * Ni2 * Nj1 + C1311 * Ni1 * Nj1 +
 	  C3312 * Ni3 * Nj2 + C2312 * Ni2 * Nj2 + C1312 * Ni1 * Nj2 +
 	  C3313 * Ni3 * Nj3 + C2313 * Ni2 * Nj3 + C1313 * Ni1 * Nj3; 
-	const double ki2j1 =
+	const PylithScalar ki2j1 =
 	  C3322 * Ni3 * Nj2 + C2322 * Ni2 * Nj2 + C1322 * Ni1 * Nj2 +
 	  C3312 * Ni3 * Nj1 + C2312 * Ni2 * Nj1 + C1312 * Ni1 * Nj1 +
 	  C3323 * Ni3 * Nj3 + C2323 * Ni2 * Nj3 + C1323 * Ni1 * Nj3; 
-	const double ki2j2 =
+	const PylithScalar ki2j2 =
 	  C3333 * Ni3 * Nj3 + C2333 * Ni2 * Nj3 + C1333 * Ni1 * Nj3 +
 	  C3323 * Ni3 * Nj2 + C2323 * Ni2 * Nj2 + C1323 * Ni1 * Nj2 +
 	  C3313 * Ni3 * Nj1 + C2313 * Ni2 * Nj1 + C1313 * Ni1 * Nj1;
@@ -1054,32 +1054,32 @@
 // Integrate laplacian term in Jacobian preconditioner for 3-D cells.
 void
 pylith::feassemble::IntegratorElasticity::_elasticityPrecon3D(
-			       const double_array& elasticConsts)
+			       const scalar_array& elasticConsts)
 { // _elasticityPrecon3D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(3 == cellDim);
   assert(quadWts.size() == numQuadPts);
 
   // Compute Jacobian for consistent tangent matrix
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
     for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
 	 iBasis < numBasis;
 	 ++iBasis) {
-      const double Ni1 = wt*basisDeriv[iQ+iBasis*spaceDim+0];
-      const double Ni2 = wt*basisDeriv[iQ+iBasis*spaceDim+1];
-      const double Ni3 = wt*basisDeriv[iQ+iBasis*spaceDim+2];
+      const PylithScalar Ni1 = wt*basisDeriv[iQ+iBasis*spaceDim+0];
+      const PylithScalar Ni2 = wt*basisDeriv[iQ+iBasis*spaceDim+1];
+      const PylithScalar Ni3 = wt*basisDeriv[iQ+iBasis*spaceDim+2];
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-        const double Nj1 = basisDeriv[iQ+jBasis*spaceDim+0];
-        const double Nj2 = basisDeriv[iQ+jBasis*spaceDim+1];
-        const double Nj3 = basisDeriv[iQ+jBasis*spaceDim+2];
+        const PylithScalar Nj1 = basisDeriv[iQ+jBasis*spaceDim+0];
+        const PylithScalar Nj2 = basisDeriv[iQ+jBasis*spaceDim+1];
+        const PylithScalar Nj3 = basisDeriv[iQ+jBasis*spaceDim+2];
         const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
         const int iBlock1 = (iBasis*spaceDim+1) * (numBasis*spaceDim);
         const int iBlock2 = (iBasis*spaceDim+2) * (numBasis*spaceDim);
@@ -1098,9 +1098,9 @@
 // ----------------------------------------------------------------------
 void
 pylith::feassemble::IntegratorElasticity::_calcTotalStrain1D(
-					    double_array* strain,
-					    const double_array& basisDeriv,
-					    const double_array& disp,
+					    scalar_array* strain,
+					    const scalar_array& basisDeriv,
+					    const scalar_array& disp,
 					    const int numBasis,
 					    const int numQuadPts)
 { // calcTotalStrain1D
@@ -1121,9 +1121,9 @@
 // ----------------------------------------------------------------------
 void
 pylith::feassemble::IntegratorElasticity::_calcTotalStrain2D(
-					    double_array* strain,
-					    const double_array& basisDeriv,
-					    const double_array& disp,
+					    scalar_array* strain,
+					    const scalar_array& basisDeriv,
+					    const scalar_array& disp,
 					    const int numBasis,
 					    const int numQuadPts)
 { // calcTotalStrain2D
@@ -1151,9 +1151,9 @@
 // ----------------------------------------------------------------------
 void
 pylith::feassemble::IntegratorElasticity::_calcTotalStrain3D(
-					    double_array* strain,
-					    const double_array& basisDeriv,
-					    const double_array& disp,
+					    scalar_array* strain,
+					    const scalar_array& basisDeriv,
+					    const scalar_array& disp,
 					    const int numBasis,
 					    const int numQuadPts)
 { // calcTotalStrain3D

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticity.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -35,7 +35,7 @@
 #include "pylith/topology/Mesh.hh" // ISA Integrator<Mesh>
 #include "Integrator.hh" // ISA Integrator
 
-#include "pylith/utils/arrayfwd.hh" // USES std::vector, double_array
+#include "pylith/utils/arrayfwd.hh" // USES std::vector, scalar_array
 
 // IntegratorElasticity -------------------------------------------------
 /** @brief General elasticity operations for implicit and explicit
@@ -49,9 +49,9 @@
 // PUBLIC TYPEDEFS //////////////////////////////////////////////////////
 public :
 
-  typedef void (*totalStrain_fn_type)(double_array*,
-				      const double_array&,
-				      const double_array&,
+  typedef void (*totalStrain_fn_type)(scalar_array*,
+				      const scalar_array&,
+				      const scalar_array&,
 				      const int,
 				      const int);
   
@@ -101,7 +101,7 @@
    * @param fields Solution fields
    * @param mesh Finite-element mesh
    */
-  void updateStateVars(const double t,
+  void updateStateVars(const PylithScalar t,
 		       topology::SolutionFields* const fields);
 
   /** Verify configuration is acceptable.
@@ -165,55 +165,55 @@
    *
    * @param stress Stress tensor for cell at quadrature points.
    */
-  void _elasticityResidual1D(const double_array& stress);
+  void _elasticityResidual1D(const scalar_array& stress);
 
   /** Integrate elasticity term in residual for 2-D cells.
    *
    * @param stress Stress tensor for cell at quadrature points.
    */
-  void _elasticityResidual2D(const double_array& stress);
+  void _elasticityResidual2D(const scalar_array& stress);
 
   /** Integrate elasticity term in residual for 3-D cells.
    *
    * @param stress Stress tensor for cell at quadrature points.
    */
-  void _elasticityResidual3D(const double_array& stress);
+  void _elasticityResidual3D(const scalar_array& stress);
 
   /** Integrate elasticity term in Jacobian for 1-D cells.
    *
    * @param elasticConsts Matrix of elasticity constants at quadrature points.
    */
-  void _elasticityJacobian1D(const double_array& elasticConsts);
+  void _elasticityJacobian1D(const scalar_array& elasticConsts);
 
   /** Integrate elasticity term in Jacobian for 2-D cells.
    *
    * @param elasticConsts Matrix of elasticity constants at quadrature points.
    */
-  void _elasticityJacobian2D(const double_array& elasticConsts);
+  void _elasticityJacobian2D(const scalar_array& elasticConsts);
 
   /** Integrate elasticity term in Jacobian for 3-D cells.
    *
    * @param elasticConsts Matrix of elasticity constants at quadrature points.
    */
-  void _elasticityJacobian3D(const double_array& elasticConsts);
+  void _elasticityJacobian3D(const scalar_array& elasticConsts);
 
   /** Integrate laplacian term in Jacobian preconditioner for 1-D cells.
    *
    * @param elasticConsts Matrix of elasticity constants at quadrature points.
    */
-  void _elasticityPrecon1D(const double_array& elasticConsts);
+  void _elasticityPrecon1D(const scalar_array& elasticConsts);
 
   /** Integrate laplacian term in Jacobian preconditioner for 2-D cells.
    *
    * @param elasticConsts Matrix of elasticity constants at quadrature points.
    */
-  void _elasticityPrecon2D(const double_array& elasticConsts);
+  void _elasticityPrecon2D(const scalar_array& elasticConsts);
 
   /** Integrate laplacian term in Jacobian preconditioner for 3-D cells.
    *
    * @param elasticConsts Matrix of elasticity constants at quadrature points.
    */
-  void _elasticityPrecon3D(const double_array& elasticConsts);
+  void _elasticityPrecon3D(const scalar_array& elasticConsts);
 
   /** Compute total strain in at quadrature points of a cell.
    *
@@ -225,9 +225,9 @@
    * @param numQuadPts Number of quadrature points.
    */
   static
-  void _calcTotalStrain1D(double_array* strain,
-			  const double_array& basisDeriv,
-			  const double_array& disp,
+  void _calcTotalStrain1D(scalar_array* strain,
+			  const scalar_array& basisDeriv,
+			  const scalar_array& disp,
 			  const int numBasis,
 			  const int numQuadPts);
 
@@ -240,9 +240,9 @@
    * @param numQuadPts Number of quadrature points.
    */
   static
-  void _calcTotalStrain2D(double_array* strain,
-			  const double_array& basisDeriv,
-			  const double_array& disp,
+  void _calcTotalStrain2D(scalar_array* strain,
+			  const scalar_array& basisDeriv,
+			  const scalar_array& disp,
 			  const int numBasis,
 			  const int numQuadPts);
 
@@ -255,9 +255,9 @@
    * @param numQuadPts Number of quadrature points.
    */
   static
-  void _calcTotalStrain3D(double_array* strain,
-			  const double_array& basisDeriv,
-			  const double_array& disp,
+  void _calcTotalStrain3D(scalar_array* strain,
+			  const scalar_array& basisDeriv,
+			  const scalar_array& disp,
 			  const int numBasis,
 			  const int numQuadPts);
 
@@ -278,7 +278,7 @@
 
   typedef pylith::topology::Field<pylith::topology::Mesh>::RestrictVisitor RestrictVisitor;
   typedef pylith::topology::Field<pylith::topology::Mesh>::UpdateAddVisitor UpdateAddVisitor;
-  typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PetscInt> IndicesVisitor;
+  typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PylithInt> IndicesVisitor;
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,7 +31,7 @@
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cstring> // USES memcpy()
 #include <strings.h> // USES strcasecmp()
@@ -65,7 +65,7 @@
 // Update state variables as needed.
 void
 pylith::feassemble::IntegratorElasticityLgDeform::updateStateVars(
-				      const double t,
+				      const PylithScalar t,
 				      topology::SolutionFields* const fields)
 { // updateStateVars
   assert(0 != _quadrature);
@@ -99,9 +99,9 @@
   } // else
 
   // Allocate arrays for cell data.
-  double_array dispCell(numBasis*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
-  double_array deformCell(numQuadPts*spaceDim*spaceDim);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
+  scalar_array deformCell(numQuadPts*spaceDim*spaceDim);
   deformCell = 0.0;
   strainCell = 0.0;
 
@@ -121,7 +121,7 @@
   assert(!dispSection.isNull());
   RestrictVisitor dispVisitor(*dispSection, dispCell.size(), &dispCell[0]);
 
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -146,7 +146,7 @@
     sieveMesh->restrictClosure(*c_iter, dispVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
     // Compute deformation tensor.
     _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispCell,
@@ -196,10 +196,10 @@
   } // else
   
   // Allocate arrays for cell data.
-  double_array dispCell(numBasis*spaceDim);
-  double_array deformCell(numQuadPts*spaceDim*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
-  double_array stressCell(numQuadPts*tensorSize);
+  scalar_array dispCell(numBasis*spaceDim);
+  scalar_array deformCell(numQuadPts*spaceDim*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
+  scalar_array stressCell(numQuadPts*tensorSize);
 
   // Get cell information
   const ALE::Obj<SieveMesh>& sieveMesh = field->mesh().sieveMesh();
@@ -217,7 +217,7 @@
   assert(!dispSection.isNull());
   RestrictVisitor dispVisitor(*dispSection, dispCell.size(), &dispCell[0]);
     
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -245,7 +245,7 @@
     sieveMesh->restrictClosure(*c_iter, dispVisitor);
 
     // Get cell geometry information that depends on cell
-    const double_array& basisDeriv = _quadrature->basisDeriv();
+    const scalar_array& basisDeriv = _quadrature->basisDeriv();
     
     // Compute deformation tensor.
     _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispCell,
@@ -280,9 +280,9 @@
   const int tensorSize = _material->tensorSize();
   
   // Allocate arrays for cell data.
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array strainCell(numQuadPts*tensorSize);
   strainCell = 0.0;
-  double_array stressCell(numQuadPts*tensorSize);
+  scalar_array stressCell(numQuadPts*tensorSize);
   stressCell = 0.0;
 
   // Get cell information
@@ -314,28 +314,28 @@
 // Integrate elasticity term in residual for 1-D cells.
 void
 pylith::feassemble::IntegratorElasticityLgDeform::_elasticityResidual1D(
-				     const double_array& stress,
-				     const double_array& disp)
+				     const scalar_array& stress,
+				     const scalar_array& disp)
 { // _elasticityResidual1D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
 
   assert(1 == cellDim);
   assert(quadWts.size() == numQuadPts);
 
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
-    const double s11 = stress[iQuad];
-    double l11 = 0.0;
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar s11 = stress[iQuad];
+    PylithScalar l11 = 0.0;
     for (int kBasis=0; kBasis < numBasis; ++kBasis)
       l11 += basisDeriv[iQuad*numBasis+kBasis  ] * disp[kBasis  ]; 
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double N1 = wt * (1.0 + l11) * basisDeriv[iQuad*numBasis+iBasis  ];
+      const PylithScalar N1 = wt * (1.0 + l11) * basisDeriv[iQuad*numBasis+iBasis  ];
       _cellVector[iBasis*spaceDim  ] -= N1*s11;
     } // for
   } // for
@@ -346,16 +346,16 @@
 // Integrate elasticity term in residual for 2-D cells.
 void
 pylith::feassemble::IntegratorElasticityLgDeform::_elasticityResidual2D(
-				     const double_array& stress,
-				     const double_array& disp)
+				     const scalar_array& stress,
+				     const scalar_array& disp)
 { // _elasticityResidual2D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(2 == cellDim);
   assert(quadWts.size() == numQuadPts);
@@ -363,15 +363,15 @@
 
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
     const int iQ = iQuad*numBasis*spaceDim;
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
-    const double s11 = stress[iQuad*stressSize+0];
-    const double s22 = stress[iQuad*stressSize+1];
-    const double s12 = stress[iQuad*stressSize+2];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar s11 = stress[iQuad*stressSize+0];
+    const PylithScalar s22 = stress[iQuad*stressSize+1];
+    const PylithScalar s12 = stress[iQuad*stressSize+2];
 
-    double l11 = 0.0;
-    double l12 = 0.0;
-    double l21 = 0.0;
-    double l22 = 0.0;
+    PylithScalar l11 = 0.0;
+    PylithScalar l12 = 0.0;
+    PylithScalar l21 = 0.0;
+    PylithScalar l22 = 0.0;
     for (int kBasis=0; kBasis < numBasis; ++kBasis) {
       const int kB = kBasis*spaceDim;
       l11 += basisDeriv[iQ+kB  ] * disp[kB  ];
@@ -384,8 +384,8 @@
 	 iBasis < numBasis;
 	 ++iBasis) {
       const int iB = iBasis*spaceDim;
-      const double Nip = basisDeriv[iQ+iB  ];
-      const double Niq = basisDeriv[iQ+iB+1];
+      const PylithScalar Nip = basisDeriv[iQ+iB  ];
+      const PylithScalar Niq = basisDeriv[iQ+iB+1];
 
       // Generated using Maxima (see jacobian2d_lgdeform.wxm)
       _cellVector[iB  ] -= 
@@ -406,16 +406,16 @@
 // Integrate elasticity term in residual for 3-D cells.
 void
 pylith::feassemble::IntegratorElasticityLgDeform::_elasticityResidual3D(
-				     const double_array& stress,
-				     const double_array& disp)
+				     const scalar_array& stress,
+				     const scalar_array& disp)
 { // _elasticityResidual3D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(3 == cellDim);
   assert(quadWts.size() == numQuadPts);
@@ -423,23 +423,23 @@
   
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
     const int iQ = iQuad*numBasis*spaceDim;
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
-    const double s11 = stress[iQuad*stressSize+0];
-    const double s22 = stress[iQuad*stressSize+1];
-    const double s33 = stress[iQuad*stressSize+2];
-    const double s12 = stress[iQuad*stressSize+3];
-    const double s23 = stress[iQuad*stressSize+4];
-    const double s13 = stress[iQuad*stressSize+5];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar s11 = stress[iQuad*stressSize+0];
+    const PylithScalar s22 = stress[iQuad*stressSize+1];
+    const PylithScalar s33 = stress[iQuad*stressSize+2];
+    const PylithScalar s12 = stress[iQuad*stressSize+3];
+    const PylithScalar s23 = stress[iQuad*stressSize+4];
+    const PylithScalar s13 = stress[iQuad*stressSize+5];
     
-    double l11 = 0.0;
-    double l12 = 0.0;
-    double l13 = 0.0;
-    double l21 = 0.0;
-    double l22 = 0.0;
-    double l23 = 0.0;
-    double l31 = 0.0;
-    double l32 = 0.0;
-    double l33 = 0.0;
+    PylithScalar l11 = 0.0;
+    PylithScalar l12 = 0.0;
+    PylithScalar l13 = 0.0;
+    PylithScalar l21 = 0.0;
+    PylithScalar l22 = 0.0;
+    PylithScalar l23 = 0.0;
+    PylithScalar l31 = 0.0;
+    PylithScalar l32 = 0.0;
+    PylithScalar l33 = 0.0;
     for (int kBasis=0; kBasis < numBasis; ++kBasis) {
       const int kB = kBasis*spaceDim;
       l11 += basisDeriv[iQ+kB  ] * disp[kB  ];
@@ -457,9 +457,9 @@
 	 iBasis < numBasis;
 	 ++iBasis) {
       const int iB = iBasis*spaceDim;
-      const double Nip = basisDeriv[iQ+iB  ];
-      const double Niq = basisDeriv[iQ+iB+1];
-      const double Nir = basisDeriv[iQ+iB+2];
+      const PylithScalar Nip = basisDeriv[iQ+iB  ];
+      const PylithScalar Niq = basisDeriv[iQ+iB+1];
+      const PylithScalar Nir = basisDeriv[iQ+iB+2];
 
       // Generated using Maxima (see jacobian3d_lgdeform.wxm)
       _cellVector[iB  ] -= 
@@ -494,27 +494,27 @@
 // Integrate elasticity term in Jacobian for 1-D cells.
 void
 pylith::feassemble::IntegratorElasticityLgDeform::_elasticityJacobian1D(
-				       const double_array& elasticConsts,
-				       const double_array& stress,
-				       const double_array& disp)
+				       const scalar_array& elasticConsts,
+				       const scalar_array& stress,
+				       const scalar_array& disp)
 { // _elasticityJacobian1D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   
   assert(1 == cellDim);
   assert(quadWts.size() == numQuadPts);
   
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
-    const double C1111 = elasticConsts[iQuad];
-    const double s11 = stress[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar C1111 = elasticConsts[iQuad];
+    const PylithScalar s11 = stress[iQuad];
 
-    double l11 = 0.0;
+    PylithScalar l11 = 0.0;
     for (int kBasis=0; kBasis < numBasis; ++kBasis)
       l11 += basisDeriv[iQuad*numBasis+kBasis  ] * disp[kBasis  ]; 
 
@@ -524,11 +524,11 @@
     // valInl = Ni,1
     // valJnl = Nj,1
     for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
-      const double valI = wt*basisDeriv[iQ+iBasis]*(1.0+l11)*(1.0+l11)*C1111;
-      const double valInl = wt*s11*basisDeriv[iQ+iBasis];
+      const PylithScalar valI = wt*basisDeriv[iQ+iBasis]*(1.0+l11)*(1.0+l11)*C1111;
+      const PylithScalar valInl = wt*s11*basisDeriv[iQ+iBasis];
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-	const double valIJ = valI * basisDeriv[iQ+jBasis];
-	const double valIJnl = valInl * basisDeriv[iQ+jBasis];
+	const PylithScalar valIJ = valI * basisDeriv[iQ+jBasis];
+	const PylithScalar valIJnl = valInl * basisDeriv[iQ+jBasis];
 	const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
 	const int jBlock = jBasis*spaceDim;
 	_cellMatrix[iBlock+jBlock] += valIJ + valIJnl;
@@ -542,17 +542,17 @@
 // Integrate elasticity term in Jacobian for 2-D cells.
 void
 pylith::feassemble::IntegratorElasticityLgDeform::_elasticityJacobian2D(
-				       const double_array& elasticConsts,
-				       const double_array& stress,
-				       const double_array& disp)
+				       const scalar_array& elasticConsts,
+				       const scalar_array& stress,
+				       const scalar_array& disp)
 { // _elasticityJacobian2D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   const int tensorSize = _material->tensorSize();
   
   assert(2 == cellDim);
@@ -561,31 +561,31 @@
 
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
     const int iQ = iQuad*numBasis*spaceDim;
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
     // tau_ij = C_ijkl * e_kl
     //        = C_ijlk * 0.5 (u_k,l + u_l,k)
     //        = 0.5 * C_ijkl * (u_k,l + u_l,k)
     // divide C_ijkl by 2 if k != l
     const int iC = iQuad*numConsts;
-    const double C1111 = elasticConsts[iC+0];
-    const double C1122 = elasticConsts[iC+1];
-    const double C1112 = elasticConsts[iC+2] / 2.0; // 2*mu -> mu
-    const double C2211 = elasticConsts[iC+3];
-    const double C2222 = elasticConsts[iC+4];
-    const double C2212 = elasticConsts[iC+5] / 2.0;
-    const double C1211 = elasticConsts[iC+6];
-    const double C1222 = elasticConsts[iC+7];
-    const double C1212 = elasticConsts[iC+8] / 2.0;
+    const PylithScalar C1111 = elasticConsts[iC+0];
+    const PylithScalar C1122 = elasticConsts[iC+1];
+    const PylithScalar C1112 = elasticConsts[iC+2] / 2.0; // 2*mu -> mu
+    const PylithScalar C2211 = elasticConsts[iC+3];
+    const PylithScalar C2222 = elasticConsts[iC+4];
+    const PylithScalar C2212 = elasticConsts[iC+5] / 2.0;
+    const PylithScalar C1211 = elasticConsts[iC+6];
+    const PylithScalar C1222 = elasticConsts[iC+7];
+    const PylithScalar C1212 = elasticConsts[iC+8] / 2.0;
 
     const int iS = iQuad*tensorSize;
-    const double s11 = stress[iS+0];
-    const double s22 = stress[iS+1];
-    const double s12 = stress[iS+2];
+    const PylithScalar s11 = stress[iS+0];
+    const PylithScalar s22 = stress[iS+1];
+    const PylithScalar s12 = stress[iS+2];
 
-    double l11 = 0.0;
-    double l12 = 0.0;
-    double l21 = 0.0;
-    double l22 = 0.0;
+    PylithScalar l11 = 0.0;
+    PylithScalar l12 = 0.0;
+    PylithScalar l21 = 0.0;
+    PylithScalar l22 = 0.0;
     for (int kBasis=0; kBasis < numBasis; ++kBasis) {
       const int kB = kBasis*spaceDim;
       l11 += basisDeriv[iQ+kB  ] * disp[kB  ];
@@ -598,20 +598,20 @@
 	 iBasis < numBasis;
 	 ++iBasis) {
       const int iB = iBasis*spaceDim;
-      const double Nip = wt*basisDeriv[iQ+iB  ];
-      const double Niq = wt*basisDeriv[iQ+iB+1];
+      const PylithScalar Nip = wt*basisDeriv[iQ+iB  ];
+      const PylithScalar Niq = wt*basisDeriv[iQ+iB+1];
       const int iBlock = (iB) * (numBasis*spaceDim);
       const int iBlock1 = (iB+1) * (numBasis*spaceDim);
 
-      const double valInl0 = Nip*s11 + Niq*s12;
-      const double valInl1 = Nip*s12 + Niq*s22;
+      const PylithScalar valInl0 = Nip*s11 + Niq*s12;
+      const PylithScalar valInl1 = Nip*s12 + Niq*s22;
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
 	const int jB = jBasis*spaceDim;
-	const double Njp = basisDeriv[iQ+jB  ];
-	const double Njq = basisDeriv[iQ+jB+1];
+	const PylithScalar Njp = basisDeriv[iQ+jB  ];
+	const PylithScalar Njq = basisDeriv[iQ+jB+1];
 
 	// Generated using Maxima (see jacobian2d_lgdeform.wxm)
-	const double Ki0j0 = 
+	const PylithScalar Ki0j0 = 
 	  l12*Niq*(l12*Njq*C2222 + 
 		   ((l11+1)*Njq+l12*Njp)*C2212 + 
 		   (l11+1)*Njp*C2211) + 
@@ -621,7 +621,7 @@
 	  (l11+1)*Nip*(l12*Njq*C1122 + 
 		       ((l11+1)*Njq+l12*Njp)*C1112 + 
 		       (l11+1)*Njp*C1111);
-	const double Ki0j1 =
+	const PylithScalar Ki0j1 =
 	  l12*Niq*((l22+1.0)*Njq*C2222 + 
 		   (l21*Njq+(l22+1.0)*Njp)*C2212 + 
 		   l21*Njp*C2211) + 
@@ -631,7 +631,7 @@
 	  (l11+1.0)*Nip*((l22+1.0)*Njq*C1122 + 
 		       (l21*Njq+(l22+1.0)*Njp)*C1112 + 
 		       l21*Njp*C1111);
-	const double Ki1j0 =
+	const PylithScalar Ki1j0 =
 	  (l22+1.0)*Niq*(l12*Njq*C2222 + 
 		       ((l11+1.0)*Njq+l12*Njp)*C2212 + 
 		       (l11+1.0)*Njp*C2211) + 
@@ -641,7 +641,7 @@
 	  l21*Nip*(l12*Njq*C1122 + 
 		   ((l11+1.0)*Njq+l12*Njp)*C1112 + 
 		   (l11+1.0)*Njp*C1111);
-	const double Ki1j1 =
+	const PylithScalar Ki1j1 =
 	  (l22+1.0)*Niq*((l22+1.0)*Njq*C2222 + 
 		       (l21*Njq+(l22+1.0)*Njp)*C2212 + 
 		       l21*Njp*C2211) + 
@@ -651,7 +651,7 @@
 	  l21*Nip*((l22+1.0)*Njq*C1122 + 
 		   (l21*Njq+(l22+1.0)*Njp)*C1112 + 
 		   l21*Njp*C1111);
-	const double Knl = 
+	const PylithScalar Knl = 
 	  (Nip*s11 + Niq*s12)*Njp + (Nip*s12 + Niq*s22)*Njq;
 
 	const int jBlock = (jB);
@@ -670,17 +670,17 @@
 // Integrate elasticity term in Jacobian for 3-D cells.
 void
 pylith::feassemble::IntegratorElasticityLgDeform::_elasticityJacobian3D(
-				       const double_array& elasticConsts,
-				       const double_array& stress,
-				       const double_array& disp)
+				       const scalar_array& elasticConsts,
+				       const scalar_array& stress,
+				       const scalar_array& disp)
 { // _elasticityJacobian3D
   const int numQuadPts = _quadrature->numQuadPts();
   const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
-  const double_array& quadWts = _quadrature->quadWts();
-  const double_array& jacobianDet = _quadrature->jacobianDet();
-  const double_array& basisDeriv = _quadrature->basisDeriv();
+  const scalar_array& quadWts = _quadrature->quadWts();
+  const scalar_array& jacobianDet = _quadrature->jacobianDet();
+  const scalar_array& basisDeriv = _quadrature->basisDeriv();
   const int tensorSize = _material->tensorSize();
 
   assert(3 == cellDim);
@@ -691,66 +691,66 @@
   // Compute Jacobian for consistent tangent matrix
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
     const int iQ = iQuad*numBasis*spaceDim;
-    const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+    const PylithScalar wt = quadWts[iQuad] * jacobianDet[iQuad];
     // tau_ij = C_ijkl * e_kl
     //        = C_ijlk * 0.5 (u_k,l + u_l,k)
     //        = 0.5 * C_ijkl * (u_k,l + u_l,k)
     // divide C_ijkl by 2 if k != l
     const int iC = iQuad*numConsts;
-    const double C1111 = elasticConsts[iC+ 0];
-    const double C1122 = elasticConsts[iC+ 1];
-    const double C1133 = elasticConsts[iC+ 2];
-    const double C1112 = elasticConsts[iC+ 3] / 2.0;
-    const double C1123 = elasticConsts[iC+ 4] / 2.0;
-    const double C1113 = elasticConsts[iC+ 5] / 2.0;
-    const double C2211 = elasticConsts[iC+ 6];
-    const double C2222 = elasticConsts[iC+ 7];
-    const double C2233 = elasticConsts[iC+ 8];
-    const double C2212 = elasticConsts[iC+ 9] / 2.0;
-    const double C2223 = elasticConsts[iC+10] / 2.0;
-    const double C2213 = elasticConsts[iC+11] / 2.0;
-    const double C3311 = elasticConsts[iC+12];
-    const double C3322 = elasticConsts[iC+13];
-    const double C3333 = elasticConsts[iC+14];
-    const double C3312 = elasticConsts[iC+15] / 2.0;
-    const double C3323 = elasticConsts[iC+16] / 2.0;
-    const double C3313 = elasticConsts[iC+17] / 2.0;
-    const double C1211 = elasticConsts[iC+18];
-    const double C1222 = elasticConsts[iC+19];
-    const double C1233 = elasticConsts[iC+20];
-    const double C1212 = elasticConsts[iC+21] / 2.0;
-    const double C1223 = elasticConsts[iC+22] / 2.0;
-    const double C1213 = elasticConsts[iC+23] / 2.0;
-    const double C2311 = elasticConsts[iC+24];
-    const double C2322 = elasticConsts[iC+25];
-    const double C2333 = elasticConsts[iC+26];
-    const double C2312 = elasticConsts[iC+27] / 2.0;
-    const double C2323 = elasticConsts[iC+28] / 2.0;
-    const double C2313 = elasticConsts[iC+29] / 2.0;
-    const double C1311 = elasticConsts[iC+30];
-    const double C1322 = elasticConsts[iC+31];
-    const double C1333 = elasticConsts[iC+32];
-    const double C1312 = elasticConsts[iC+33] / 2.0;
-    const double C1323 = elasticConsts[iC+34] / 2.0;
-    const double C1313 = elasticConsts[iC+35] / 2.0;
+    const PylithScalar C1111 = elasticConsts[iC+ 0];
+    const PylithScalar C1122 = elasticConsts[iC+ 1];
+    const PylithScalar C1133 = elasticConsts[iC+ 2];
+    const PylithScalar C1112 = elasticConsts[iC+ 3] / 2.0;
+    const PylithScalar C1123 = elasticConsts[iC+ 4] / 2.0;
+    const PylithScalar C1113 = elasticConsts[iC+ 5] / 2.0;
+    const PylithScalar C2211 = elasticConsts[iC+ 6];
+    const PylithScalar C2222 = elasticConsts[iC+ 7];
+    const PylithScalar C2233 = elasticConsts[iC+ 8];
+    const PylithScalar C2212 = elasticConsts[iC+ 9] / 2.0;
+    const PylithScalar C2223 = elasticConsts[iC+10] / 2.0;
+    const PylithScalar C2213 = elasticConsts[iC+11] / 2.0;
+    const PylithScalar C3311 = elasticConsts[iC+12];
+    const PylithScalar C3322 = elasticConsts[iC+13];
+    const PylithScalar C3333 = elasticConsts[iC+14];
+    const PylithScalar C3312 = elasticConsts[iC+15] / 2.0;
+    const PylithScalar C3323 = elasticConsts[iC+16] / 2.0;
+    const PylithScalar C3313 = elasticConsts[iC+17] / 2.0;
+    const PylithScalar C1211 = elasticConsts[iC+18];
+    const PylithScalar C1222 = elasticConsts[iC+19];
+    const PylithScalar C1233 = elasticConsts[iC+20];
+    const PylithScalar C1212 = elasticConsts[iC+21] / 2.0;
+    const PylithScalar C1223 = elasticConsts[iC+22] / 2.0;
+    const PylithScalar C1213 = elasticConsts[iC+23] / 2.0;
+    const PylithScalar C2311 = elasticConsts[iC+24];
+    const PylithScalar C2322 = elasticConsts[iC+25];
+    const PylithScalar C2333 = elasticConsts[iC+26];
+    const PylithScalar C2312 = elasticConsts[iC+27] / 2.0;
+    const PylithScalar C2323 = elasticConsts[iC+28] / 2.0;
+    const PylithScalar C2313 = elasticConsts[iC+29] / 2.0;
+    const PylithScalar C1311 = elasticConsts[iC+30];
+    const PylithScalar C1322 = elasticConsts[iC+31];
+    const PylithScalar C1333 = elasticConsts[iC+32];
+    const PylithScalar C1312 = elasticConsts[iC+33] / 2.0;
+    const PylithScalar C1323 = elasticConsts[iC+34] / 2.0;
+    const PylithScalar C1313 = elasticConsts[iC+35] / 2.0;
 
     const int iS = iQuad*tensorSize;
-    const double s11 = stress[iS+0];
-    const double s22 = stress[iS+1];
-    const double s33 = stress[iS+2];
-    const double s12 = stress[iS+3];
-    const double s23 = stress[iS+4];
-    const double s13 = stress[iS+5];
+    const PylithScalar s11 = stress[iS+0];
+    const PylithScalar s22 = stress[iS+1];
+    const PylithScalar s33 = stress[iS+2];
+    const PylithScalar s12 = stress[iS+3];
+    const PylithScalar s23 = stress[iS+4];
+    const PylithScalar s13 = stress[iS+5];
 
-    double l11 = 0.0;
-    double l12 = 0.0;
-    double l13 = 0.0;
-    double l21 = 0.0;
-    double l22 = 0.0;
-    double l23 = 0.0;
-    double l31 = 0.0;
-    double l32 = 0.0;
-    double l33 = 0.0;
+    PylithScalar l11 = 0.0;
+    PylithScalar l12 = 0.0;
+    PylithScalar l13 = 0.0;
+    PylithScalar l21 = 0.0;
+    PylithScalar l22 = 0.0;
+    PylithScalar l23 = 0.0;
+    PylithScalar l31 = 0.0;
+    PylithScalar l32 = 0.0;
+    PylithScalar l33 = 0.0;
     for (int kBasis=0; kBasis < numBasis; ++kBasis) {
       const int kB = kBasis*spaceDim;
       l11 += basisDeriv[iQ+kB  ] * disp[kB  ];
@@ -768,17 +768,17 @@
 	 iBasis < numBasis;
 	 ++iBasis) {
       const int iB = iBasis*spaceDim;
-      const double Nip = wt*basisDeriv[iQ+iB+0];
-      const double Niq = wt*basisDeriv[iQ+iB+1];
-      const double Nir = wt*basisDeriv[iQ+iB+2];
+      const PylithScalar Nip = wt*basisDeriv[iQ+iB+0];
+      const PylithScalar Niq = wt*basisDeriv[iQ+iB+1];
+      const PylithScalar Nir = wt*basisDeriv[iQ+iB+2];
       for (int jBasis=0; jBasis < numBasis; ++jBasis) {
 	const int jB = jBasis*spaceDim;
-	const double Njp = basisDeriv[iQ+jB+0];
-	const double Njq = basisDeriv[iQ+jB+1];
-	const double Njr = basisDeriv[iQ+jB+2];
+	const PylithScalar Njp = basisDeriv[iQ+jB+0];
+	const PylithScalar Njq = basisDeriv[iQ+jB+1];
+	const PylithScalar Njr = basisDeriv[iQ+jB+2];
 
 	// Generated using Maxima (see jacobian3d_lgdeform.wxm)
-	const double Ki0j0 = 
+	const PylithScalar Ki0j0 = 
 	  l13*Nir*(l13*Njr*C3333 + 
 		   (l12*Njr+l13*Njq)*C3323 + 
 		   ((l11+1)*Njr+l13*Njp)*C3313 + 
@@ -816,7 +816,7 @@
 		       ((l11+1)*Njq+l12*Njp)*C1112 + 
 		       (l11+1)*Njp*C1111);
 
-	const double Ki0j1 =
+	const PylithScalar Ki0j1 =
 	  l13*Nir*(l23*Njr*C3333 + 
 		   ((l22+1)*Njr+l23*Njq)*C3323 + 
 		   (l21*Njr+l23*Njp)*C3313 + 
@@ -854,7 +854,7 @@
 		       (l21*Njq+(l22+1)*Njp)*C1112 + 
 		       l21*Njp*C1111);
 
-	const double Ki0j2 =
+	const PylithScalar Ki0j2 =
 	  l13*Nir*((l33+1)*Njr*C3333 + 
 		   (l32*Njr+(l33+1)*Njq)*C3323 + 
 		   (l31*Njr+(l33+1)*Njp)*C3313 + 
@@ -892,7 +892,7 @@
 		       (l31*Njq+l32*Njp)*C1112 + 
 		       l31*Njp*C1111);
 
-	const double Ki1j0 =
+	const PylithScalar Ki1j0 =
 	  l23*Nir*(l13*Njr*C3333 + 
 		   (l12*Njr+l13*Njq)*C3323 + 
 		   ((l11+1)*Njr+l13*Njp)*C3313 + 
@@ -930,7 +930,7 @@
 		   ((l11+1)*Njq+l12*Njp)*C1112 + 
 		   (l11+1)*Njp*C1111);
 
-	const double Ki1j1 =
+	const PylithScalar Ki1j1 =
 	  l23*Nir*(l23*Njr*C3333 + 
 		   ((l22+1)*Njr+l23*Njq)*C3323 + 
 		   (l21*Njr+l23*Njp)*C3313 + 
@@ -968,7 +968,7 @@
 		   (l21*Njq+(l22+1)*Njp)*C1112 + 
 		   l21*Njp*C1111);
 
-	const double Ki1j2 =
+	const PylithScalar Ki1j2 =
 	  l23*Nir*((l33+1)*Njr*C3333 + 
 		   (l32*Njr+(l33+1)*Njq)*C3323 + 
 		   (l31*Njr+(l33+1)*Njp)*C3313 + 
@@ -1006,7 +1006,7 @@
 		   (l31*Njq+l32*Njp)*C1112 + 
 		   l31*Njp*C1111);
 
-	const double Ki2j0 =
+	const PylithScalar Ki2j0 =
 	  (l33+1)*Nir*(l13*Njr*C3333 + 
 		       (l12*Njr+l13*Njq)*C3323 + 
 		       ((l11+1)*Njr+l13*Njp)*C3313 + 
@@ -1044,7 +1044,7 @@
 		   ((l11+1)*Njq+l12*Njp)*C1112 + 
 		   (l11+1)*Njp*C1111);
 
-	const double Ki2j1 =
+	const PylithScalar Ki2j1 =
 	  (l33+1)*Nir*(l23*Njr*C3333 + 
 		       ((l22+1)*Njr+l23*Njq)*C3323 + 
 		       (l21*Njr+l23*Njp)*C3313 + 
@@ -1082,7 +1082,7 @@
 		   (l21*Njq+(l22+1)*Njp)*C1112 + 
 		   l21*Njp*C1111);
 
-	const double Ki2j2 =
+	const PylithScalar Ki2j2 =
 	  (l33+1)*Nir*((l33+1)*Njr*C3333 + 
 		       (l32*Njr+(l33+1)*Njq)*C3323 + 
 		       (l31*Njr+(l33+1)*Njp)*C3313 + 
@@ -1120,7 +1120,7 @@
 		   (l31*Njq+l32*Njp)*C1112 + 
 		   l31*Njp*C1111);
 
-	const double Knl = 
+	const PylithScalar Knl = 
 	  Nir*(Njr*s33+Njq*s23+Njp*s13) + 
 	  Niq*(Njr*s23+Njq*s22+Njp*s12) + 
 	  Nip*(Njr*s13+Njq*s12+Njp*s11);
@@ -1150,8 +1150,8 @@
 // Calculate Green-Lagrange strain tensor at quadrature points of a 1-D cell.
 void 
 pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain1D(
-					      double_array* strain,
-					      const double_array& deform,
+					      scalar_array* strain,
+					      const scalar_array& deform,
 					      const int numQuadPts)
 { // _calcTotalStrain1D
   // Green-Lagrange strain tensor = 1/2 ( X^T X - I )
@@ -1174,8 +1174,8 @@
 // Calculate Green-Lagrange strain tensor at quadrature points of a 2-D cell.
 void 
 pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain2D(
-					      double_array* strain,
-					      const double_array& deform,
+					      scalar_array* strain,
+					      const scalar_array& deform,
 					      const int numQuadPts)
 { // _calcTotalStrain2D
   // Green-Lagrange strain tensor = 1/2 ( X^T X - I )
@@ -1209,8 +1209,8 @@
 // Calculate Green-Lagrange strain tensor at quadrature points of a 3-D cell.
 void 
 pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain3D(
-					      double_array* strain,
-					      const double_array& deform,
+					      scalar_array* strain,
+					      const scalar_array& deform,
 					      const int numQuadPts)
 { // _calcTotalStrain3D
   // Green-Lagrange strain tensor = 1/2 ( X^T X - I )
@@ -1259,10 +1259,10 @@
 // Calculate deformation tensor.
 void 
 pylith::feassemble::IntegratorElasticityLgDeform::_calcDeformation(
-					      double_array* deform,
-					      const double_array& basisDeriv,
-					      const double_array& vertices,
-					      const double_array& disp,
+					      scalar_array* deform,
+					      const scalar_array& basisDeriv,
+					      const scalar_array& vertices,
+					      const scalar_array& disp,
 					      const int numBasis,
 					      const int numQuadPts,
 					      const int dim)

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/IntegratorElasticityLgDeform.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,8 +43,8 @@
 // PUBLIC TYPEDEFS //////////////////////////////////////////////////////
 public :
 
-  typedef void (*totalStrain_fn_type)(double_array*,
-				      const double_array&,
+  typedef void (*totalStrain_fn_type)(scalar_array*,
+				      const scalar_array&,
 				      const int);
   
 
@@ -70,7 +70,7 @@
    * @param fields Solution fields
    * @param mesh Finite-element mesh
    */
-  void updateStateVars(const double t,
+  void updateStateVars(const PylithScalar t,
 		       topology::SolutionFields* const fields);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////
@@ -99,24 +99,24 @@
    * @param stress Stress tensor for cell at quadrature points.
    * @param disp Displacement field at cell's DOF.
    */
-  void _elasticityResidual1D(const double_array& stress,
-			     const double_array& disp);
+  void _elasticityResidual1D(const scalar_array& stress,
+			     const scalar_array& disp);
 
   /** Integrate elasticity term in residual for 2-D cells.
    *
    * @param stress Stress tensor for cell at quadrature points.
    * @param disp Displacement field at cell's DOF.
    */
-  void _elasticityResidual2D(const double_array& stress,
-			     const double_array& disp);
+  void _elasticityResidual2D(const scalar_array& stress,
+			     const scalar_array& disp);
 
   /** Integrate elasticity term in residual for 3-D cells.
    *
    * @param stress Stress tensor for cell at quadrature points.
    * @param disp Displacement field at cell's DOF.
    */
-  void _elasticityResidual3D(const double_array& stress,
-			     const double_array& disp);
+  void _elasticityResidual3D(const scalar_array& stress,
+			     const scalar_array& disp);
 
   /** Integrate elasticity term in Jacobian for 1-D cells.
    *
@@ -124,9 +124,9 @@
    * @param stress Stress tensor for cell at quadrature points.
    * @param disp Displacement field at cell's DOF.
    */
-  void _elasticityJacobian1D(const double_array& elasticConsts,
-			     const double_array& stress,
-			     const double_array& disp);
+  void _elasticityJacobian1D(const scalar_array& elasticConsts,
+			     const scalar_array& stress,
+			     const scalar_array& disp);
 
   /** Integrate elasticity term in Jacobian for 2-D cells.
    *
@@ -134,9 +134,9 @@
    * @param stress Stress tensor for cell at quadrature points.
    * @param disp Displacement field at cell's DOF.
    */
-  void _elasticityJacobian2D(const double_array& elasticConsts,
-			     const double_array& stress,
-			     const double_array& disp);
+  void _elasticityJacobian2D(const scalar_array& elasticConsts,
+			     const scalar_array& stress,
+			     const scalar_array& disp);
 
   /** Integrate elasticity term in Jacobian for 3-D cells.
    *
@@ -144,9 +144,9 @@
    * @param stress Stress tensor for cell at quadrature points.
    * @param disp Displacement field at cell's DOF.
    */
-  void _elasticityJacobian3D(const double_array& elasticConsts,
-			     const double_array& stress,
-			     const double_array& disp);
+  void _elasticityJacobian3D(const scalar_array& elasticConsts,
+			     const scalar_array& stress,
+			     const scalar_array& disp);
 
   /** Calculate Green-Lagrange strain tensor at quadrature points of a
    *  1-D cell.
@@ -156,8 +156,8 @@
    * @param numQuadPts Number of quadrature points.
    */
   static
-  void _calcTotalStrain1D(double_array* strain,
-			  const double_array& deform,
+  void _calcTotalStrain1D(scalar_array* strain,
+			  const scalar_array& deform,
 			  const int numQuadPts);
 
   /** Calculate Green-Lagrange strain tensor at quadrature points of a
@@ -168,8 +168,8 @@
    * @param numQuadPts Number of quadrature points.
    */
   static
-  void _calcTotalStrain2D(double_array* strain,
-			  const double_array& deform,
+  void _calcTotalStrain2D(scalar_array* strain,
+			  const scalar_array& deform,
 			  const int numQuadPts);
 
   /** Calculate Green-Lagrange strain tensor at quadrature points of a
@@ -180,8 +180,8 @@
    * @param numQuadPts Number of quadrature points.
    */
   static
-  void _calcTotalStrain3D(double_array* strain,
-			  const double_array& deform,
+  void _calcTotalStrain3D(scalar_array* strain,
+			  const scalar_array& deform,
 			  const int numQuadPts);
 
   /** Calculate deformation tensor.
@@ -195,10 +195,10 @@
    * @param dim Dimension of cell.
    */
   static
-  void _calcDeformation(double_array* deform,
-			const double_array& basisDeriv,
-			const double_array& vertices,
-			const double_array& disp,
+  void _calcDeformation(scalar_array* deform,
+			const scalar_array& basisDeriv,
+			const scalar_array& vertices,
+			const scalar_array& disp,
 			const int numBasis,
 			const int numQuadPts,
 			const int dim);

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -230,7 +230,7 @@
   const ALE::Obj<typename mesh_type::SieveMesh>& sieveMesh = mesh.sieveMesh();
   assert(!sieveMesh.isNull());
 
-  double_array coordinatesCell(numBasis*_spaceDim);
+  scalar_array coordinatesCell(numBasis*_spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates,
@@ -242,10 +242,10 @@
     jacobianDetField->section();
   const ALE::Obj<RealSection>& basisDerivSection = basisDerivField->section();
 
-  const double_array& quadPts = _engine->quadPts();
-  const double_array& jacobian = _engine->jacobian();
-  const double_array& jacobianDet = _engine->jacobianDet();
-  const double_array& basisDeriv = _engine->basisDeriv();
+  const scalar_array& quadPts = _engine->quadPts();
+  const scalar_array& jacobian = _engine->jacobian();
+  const scalar_array& jacobianDet = _engine->jacobianDet();
+  const scalar_array& basisDeriv = _engine->basisDeriv();
 
   for(typename label_sequence::iterator c_iter = cellsBegin;
       c_iter != cellsEnd;
@@ -272,29 +272,29 @@
 
   typedef typename mesh_type::RealSection RealSection;
 
-  const double_array& quadPts = _engine->quadPts();
-  const double_array& jacobian = _engine->jacobian();
-  const double_array& jacobianDet = _engine->jacobianDet();
-  const double_array& basisDeriv = _engine->basisDeriv();
+  const scalar_array& quadPts = _engine->quadPts();
+  const scalar_array& jacobian = _engine->jacobian();
+  const scalar_array& jacobianDet = _engine->jacobianDet();
+  const scalar_array& basisDeriv = _engine->basisDeriv();
 
   const ALE::Obj<RealSection>& quadPtsSection =
     _geometryFields->get("quadrature points").section();
-  quadPtsSection->restrictPoint(cell, const_cast<double*>(&quadPts[0]),
+  quadPtsSection->restrictPoint(cell, const_cast<PylithScalar*>(&quadPts[0]),
 				quadPts.size());
 
   const ALE::Obj<RealSection>& jacobianSection =
     _geometryFields->get("jacobian").section();
-  jacobianSection->restrictPoint(cell, const_cast<double*>(&jacobian[0]),
+  jacobianSection->restrictPoint(cell, const_cast<PylithScalar*>(&jacobian[0]),
 				 jacobian.size());
 
   const ALE::Obj<RealSection>& jacobianDetSection = 
     _geometryFields->get("determinant(jacobian)").section();
-  jacobianDetSection->restrictPoint(cell, const_cast<double*>(&jacobianDet[0]),
+  jacobianDetSection->restrictPoint(cell, const_cast<PylithScalar*>(&jacobianDet[0]),
 				    jacobianDet.size());
 
   const ALE::Obj<RealSection>& basisDerivSection =
     _geometryFields->get("determinant basisfunctions").section();
-  basisDerivSection->restrictPoint(cell, const_cast<double*>(&basisDeriv[0]),
+  basisDerivSection->restrictPoint(cell, const_cast<PylithScalar*>(&basisDeriv[0]),
 				   basisDeriv.size());
 } // retrieveGeometry
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,7 +31,7 @@
 
 #include "pylith/topology/topologyfwd.hh" // forward declarations
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // Quadrature -----------------------------------------------------------
 /** @brief Abstract base class for integrating over finite-elements
@@ -89,26 +89,26 @@
    *
    * @returns Array of coordinates of quadrature points in cell
    */
-  const double_array& quadPts(void) const;
+  const scalar_array& quadPts(void) const;
 
   /** Get derivatives of basis fns evaluated at quadrature points.
    *
    * @returns Array of derivatives of basis fns evaluated at
    * quadrature points
    */
-  const double_array& basisDeriv(void) const;
+  const scalar_array& basisDeriv(void) const;
 
   /** Get Jacobians evaluated at quadrature points.
    *
    * @returns Array of Jacobian inverses evaluated at quadrature points.
    */
-  const double_array& jacobian(void) const;
+  const scalar_array& jacobian(void) const;
 
   /** Get determinants of Jacobian evaluated at quadrature points.
    *
    * @returns Array of determinants of Jacobian evaluated at quadrature pts
    */
-  const double_array& jacobianDet(void) const;
+  const scalar_array& jacobianDet(void) const;
 
   /** Get precomputed geometry fields.
    *
@@ -140,7 +140,7 @@
    * @param coordinatesCell Coordinates of vertices in cell.
    * @param cell Finite-element cell
    */
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell);
 
 // PRIVATE MEMBERS //////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,7 +42,7 @@
 // Get coordinates of quadrature points in cell (NOT reference cell).
 template<typename mesh_type>
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::Quadrature<mesh_type>::quadPts(void) const {
   assert(0 != _engine);
   return _engine->quadPts();
@@ -51,7 +51,7 @@
 // Get derivatives of basis fns evaluated at quadrature points.
 template<typename mesh_type>
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::Quadrature<mesh_type>::basisDeriv(void) const {
   assert(0 != _engine);
   return _engine->basisDeriv();
@@ -60,7 +60,7 @@
 // Get Jacobians evaluated at quadrature points.
 template<typename mesh_type>
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::Quadrature<mesh_type>::jacobian(void) const {
   assert(0 != _engine);
   return _engine->jacobian();
@@ -69,7 +69,7 @@
 // Get determinants of Jacobian evaluated at quadrature points.
 template<typename mesh_type>
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::Quadrature<mesh_type>::jacobianDet(void) const {
   assert(0 != _engine);
   return _engine->jacobianDet();
@@ -87,7 +87,7 @@
 template<typename mesh_type>
 inline
 void
-pylith::feassemble::Quadrature<mesh_type>::computeGeometry(const double_array& coordinatesCell,
+pylith::feassemble::Quadrature<mesh_type>::computeGeometry(const scalar_array& coordinatesCell,
 							   const int cell) {
   assert(0 != _engine);
   _engine->computeGeometry(coordinatesCell, cell);  

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature0D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature0D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature0D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
 // ----------------------------------------------------------------------
 // Compute geometric quantities for a cell at quadrature points.
 void
-pylith::feassemble::Quadrature0D::computeGeometry(const double_array& coordinatesCell,
+pylith::feassemble::Quadrature0D::computeGeometry(const scalar_array& coordinatesCell,
 						  const int cell)
 { // computeGeometry
   const int cellDim = 0;
@@ -64,7 +64,7 @@
   assert(_quadRefCell.numBasis() == numBasis);
   assert(coordinatesCell.size() == numBasis*spaceDim);
 
-  const double_array& basisDerivRef = _quadRefCell.basisDerivRef();
+  const scalar_array& basisDerivRef = _quadRefCell.basisDerivRef();
 
   zero();
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature0D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature0D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature0D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -58,7 +58,7 @@
    * @param coordinatesCell Coordinates of cell's vertices.
    * @param cell Finite-element cell
    */
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,7 +52,7 @@
 // ----------------------------------------------------------------------
 // Compute geometric quantities for a cell at quadrature points.
 void
-pylith::feassemble::Quadrature1D::computeGeometry(const double_array& coordinatesCell,
+pylith::feassemble::Quadrature1D::computeGeometry(const scalar_array& coordinatesCell,
 						  const int cell)
 { // computeGeometry
   const int cellDim = 1;
@@ -61,9 +61,9 @@
   const int numQuadPts = _quadRefCell.numQuadPts();
   const int numBasis = _quadRefCell.numBasis();
 
-  const double_array& basis = _quadRefCell.basis();
-  const double_array& quadPtsRef = _quadRefCell.quadPtsRef();
-  const double_array& basisDerivRef = _quadRefCell.basisDerivRef();
+  const scalar_array& basis = _quadRefCell.basis();
+  const scalar_array& quadPtsRef = _quadRefCell.quadPtsRef();
+  const scalar_array& basisDerivRef = _quadRefCell.basisDerivRef();
   const CellGeometry& geometry = _quadRefCell.refGeometry();
 
   assert(_quadRefCell.cellDim() == cellDim);
@@ -94,7 +94,7 @@
 
     // Compute determinant of Jacobian at quadrature point
     // |J| = j00
-    const double det = _jacobian[iQuadPt];
+    const PylithScalar det = _jacobian[iQuadPt];
     _checkJacobianDet(det, cell);
     _jacobianDet[iQuadPt] = _jacobian[iQuadPt];
 #else

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
    * @param coordinatesCell Coordinates of cell's vertices.
    * @param cell Finite-element cell
    */
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell);
 
 // PRIVATE METHODS //////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,7 +52,7 @@
 // ----------------------------------------------------------------------
 // Compute geometric quantities for a cell at quadrature points.
 void
-pylith::feassemble::Quadrature1Din2D::computeGeometry(const double_array& coordinatesCell,
+pylith::feassemble::Quadrature1Din2D::computeGeometry(const scalar_array& coordinatesCell,
 						      const int cell)
 { // computeGeometry
   const int cellDim = 1;
@@ -61,9 +61,9 @@
   const int numQuadPts = _quadRefCell.numQuadPts();
   const int numBasis = _quadRefCell.numBasis();
 
-  const double_array& basis = _quadRefCell.basis();
-  const double_array& quadPtsRef = _quadRefCell.quadPtsRef();
-  const double_array& basisDerivRef = _quadRefCell.basisDerivRef();
+  const scalar_array& basis = _quadRefCell.basis();
+  const scalar_array& quadPtsRef = _quadRefCell.quadPtsRef();
+  const scalar_array& basisDerivRef = _quadRefCell.basisDerivRef();
   const CellGeometry& geometry = _quadRefCell.refGeometry();
 
   assert(_quadRefCell.cellDim() == cellDim);
@@ -81,7 +81,7 @@
     // x = sum[i=0,n-1] (Ni * xi)
     // y = sum[i=0,n-1] (Ni * yi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double valueBasis = basis[iQ+iBasis];
+      const PylithScalar valueBasis = basis[iQ+iBasis];
       for (int iDim=0; iDim < spaceDim; ++iDim)
 	_quadPts[iQuadPt*spaceDim+iDim] +=
 	  valueBasis * coordinatesCell[iBasis*spaceDim+iDim];
@@ -99,7 +99,7 @@
     // dx/dp = sum[i=0,n-1] (dNi/dp * xi)
     // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double deriv = basisDerivRef[iQ+iBasis];
+      const PylithScalar deriv = basisDerivRef[iQ+iBasis];
       for (int iDim=0; iDim < spaceDim; ++iDim)
 	_jacobian[iQuadPt*spaceDim+iDim] += 
 	  deriv * coordinatesCell[iBasis*spaceDim+iDim];
@@ -107,7 +107,7 @@
     
     // Compute determinant of Jacobian at quadrature point
     // |J| = sqrt(transpose(J) J)
-    double det = 0.0;
+    PylithScalar det = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       det += _jacobian[iQuadPt*spaceDim+iDim] * 
 	_jacobian[iQuadPt*spaceDim+iDim];

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
    * @param coordinatesCell Coordinates of cell's vertices.
    * @param cell Finite-element cell
    */
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,7 +52,7 @@
 // ----------------------------------------------------------------------
 // Compute geometric quantities for a cell at quadrature points.
 void
-pylith::feassemble::Quadrature1Din3D::computeGeometry(const double_array& coordinatesCell,
+pylith::feassemble::Quadrature1Din3D::computeGeometry(const scalar_array& coordinatesCell,
 						      const int cell)
 { // computeGeometry
   const int cellDim = 1;
@@ -61,9 +61,9 @@
   const int numQuadPts = _quadRefCell.numQuadPts();
   const int numBasis = _quadRefCell.numBasis();
 
-  const double_array& basis = _quadRefCell.basis();
-  const double_array& quadPtsRef = _quadRefCell.quadPtsRef();
-  const double_array& basisDerivRef = _quadRefCell.basisDerivRef();
+  const scalar_array& basis = _quadRefCell.basis();
+  const scalar_array& quadPtsRef = _quadRefCell.quadPtsRef();
+  const scalar_array& basisDerivRef = _quadRefCell.basisDerivRef();
   const CellGeometry& geometry = _quadRefCell.refGeometry();
 
   assert(_quadRefCell.cellDim() == cellDim);
@@ -82,7 +82,7 @@
     // y = sum[i=0,n-1] (Ni * yi)
     // z = sum[i=0,n-1] (Ni * zi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double valueBasis = basis[iQ+iBasis];
+      const PylithScalar valueBasis = basis[iQ+iBasis];
       for (int iDim=0; iDim < spaceDim; ++iDim)
 	_quadPts[iQuadPt*spaceDim+iDim] += 
 	  valueBasis * coordinatesCell[iBasis*spaceDim+iDim];
@@ -102,7 +102,7 @@
     // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
     // dz/dp = sum[i=0,n-1] (dNi/dp * zi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double deriv = basisDerivRef[iQ+iBasis];
+      const PylithScalar deriv = basisDerivRef[iQ+iBasis];
       for (int iDim=0; iDim < spaceDim; ++iDim)
 	_jacobian[iQuadPt*spaceDim+iDim] += 
 	  deriv * coordinatesCell[iBasis*spaceDim+iDim];
@@ -110,7 +110,7 @@
 
     // Compute determinant of Jacobian at quadrature point
     // |J| = sqrt(transpose(J) J)
-    double det = 0.0;
+    PylithScalar det = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       det += _jacobian[iQuadPt*spaceDim+iDim] * 
 	_jacobian[iQuadPt*spaceDim+iDim];

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature1Din3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
    * @param coordinatesCell Coordinates of cell's vertices.
    * @param cell Finite-element cell
    */
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,7 +52,7 @@
 // ----------------------------------------------------------------------
 // Compute geometric quantities for a cell at quadrature points.
 void
-pylith::feassemble::Quadrature2D::computeGeometry(const double_array& coordinatesCell,
+pylith::feassemble::Quadrature2D::computeGeometry(const scalar_array& coordinatesCell,
 						  const int cell)
 { // computeGeometry
   const int spaceDim = 2;
@@ -61,9 +61,9 @@
   const int numQuadPts = _quadRefCell.numQuadPts();
   const int numBasis = _quadRefCell.numBasis();
 
-  const double_array& basis = _quadRefCell.basis();
-  const double_array& quadPtsRef = _quadRefCell.quadPtsRef();
-  const double_array& basisDerivRef = _quadRefCell.basisDerivRef();
+  const scalar_array& basis = _quadRefCell.basis();
+  const scalar_array& quadPtsRef = _quadRefCell.quadPtsRef();
+  const scalar_array& basisDerivRef = _quadRefCell.basisDerivRef();
   const CellGeometry& geometry = _quadRefCell.refGeometry();
 
   assert(_quadRefCell.cellDim() == cellDim);
@@ -79,7 +79,7 @@
     // x = sum[i=0,n-1] (Ni * xi)
     // y = sum[i=0,n-1] (Ni * yi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double valueBasis = basis[iQuadPt*numBasis+iBasis];
+      const PylithScalar valueBasis = basis[iQuadPt*numBasis+iBasis];
       for (int iDim=0; iDim < spaceDim; ++iDim)
 	_quadPts[iQuadPt*spaceDim+iDim] += 
 	  valueBasis * coordinatesCell[iBasis*spaceDim+iDim];
@@ -100,7 +100,7 @@
     // dy/dq = sum[i=0,n-1] (dNi/dq * yi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis)
       for (int iCol=0; iCol < cellDim; ++iCol) {
-	const double deriv = 
+	const PylithScalar deriv = 
 	  basisDerivRef[iQuadPt*numBasis*spaceDim+iBasis*cellDim+iCol];
 	for (int iRow=0; iRow < spaceDim; ++iRow)
 	  _jacobian[iQuadPt*cellDim*spaceDim+iRow*cellDim+iCol] +=
@@ -114,7 +114,7 @@
     const int i01 = iJ + 0*spaceDim + 1;
     const int i10 = iJ + 1*spaceDim + 0;
     const int i11 = iJ + 1*spaceDim + 1;
-    const double det = 
+    const PylithScalar det = 
       _jacobian[i00]*_jacobian[i11] - 
       _jacobian[i01]*_jacobian[i10];
     _checkJacobianDet(det, cell);
@@ -131,7 +131,7 @@
 		      &coordinatesCell[0], &quadPtsRef[iQuadPt*cellDim], 
 		      spaceDim, 1);
     _checkJacobianDet(_jacobianDet[iQuadPt], cell);
-    const double det = _jacobianDet[iQuadPt];
+    const PylithScalar det = _jacobianDet[iQuadPt];
 #endif
 
     // Compute inverse of Jacobian at quadrature point

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
    * @param coordinatesCell Coordinates of cell's vertices.
    * @param cell Finite-element cell
    */
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2Din3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2Din3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
 // ----------------------------------------------------------------------
 // Compute geometric quantities for a cell at quadrature points.
 void
-pylith::feassemble::Quadrature2Din3D::computeGeometry(const double_array& coordinatesCell,
+pylith::feassemble::Quadrature2Din3D::computeGeometry(const scalar_array& coordinatesCell,
 						      const int cell)
 { // computeGeometry
   const int cellDim = 2;
@@ -63,11 +63,11 @@
   const int numQuadPts = _quadRefCell.numQuadPts();
   const int numBasis = _quadRefCell.numBasis();
 
-  const double_array& basis = _quadRefCell.basis();
-  const double_array& quadPtsRef = _quadRefCell.quadPtsRef();
-  const double_array& basisDerivRef = _quadRefCell.basisDerivRef();
+  const scalar_array& basis = _quadRefCell.basis();
+  const scalar_array& quadPtsRef = _quadRefCell.quadPtsRef();
+  const scalar_array& basisDerivRef = _quadRefCell.basisDerivRef();
   const CellGeometry& geometry = _quadRefCell.refGeometry();
-  const double minJacobian = _quadRefCell.minJacobian();
+  const PylithScalar minJacobian = _quadRefCell.minJacobian();
 
   assert(_quadRefCell.cellDim() == cellDim);
   assert(_quadRefCell.spaceDim() == spaceDim);
@@ -83,7 +83,7 @@
     // y = sum[i=0,n-1] (Ni * yi)
     // z = sum[i=0,n-1] (Ni * zi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double valueBasis = basis[iQuadPt*numBasis+iBasis];
+      const PylithScalar valueBasis = basis[iQuadPt*numBasis+iBasis];
       for (int iDim=0; iDim < spaceDim; ++iDim)
 	_quadPts[iQuadPt*spaceDim+iDim] += 
 	  valueBasis * coordinatesCell[iBasis*spaceDim+iDim];
@@ -107,7 +107,7 @@
     // dz/dq = sum[i=0,n-1] (dNi/dq * zi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis)
       for (int iCol=0; iCol < cellDim; ++iCol) {
-	const double deriv = 
+	const PylithScalar deriv = 
 	  basisDerivRef[iQuadPt*numBasis*cellDim+iBasis*cellDim+iCol];
 	for (int iRow=0; iRow < spaceDim; ++iRow)
 	  _jacobian[iQuadPt*cellDim*spaceDim+iRow*cellDim+iCol] +=
@@ -124,20 +124,20 @@
     const int i20 = iJ + 2*cellDim + 0;
     const int i21 = iJ + 2*cellDim + 1;
     // JJ = transpose(J) J 
-    const double jj00 = 
+    const PylithScalar jj00 = 
       _jacobian[i00]*_jacobian[i00] +
       _jacobian[i10]*_jacobian[i10] +
       _jacobian[i20]*_jacobian[i20];
-    const double jj10 =
+    const PylithScalar jj10 =
       _jacobian[i00]*_jacobian[i01] +
       _jacobian[i10]*_jacobian[i11] +
       _jacobian[i20]*_jacobian[i21];
-    const double jj01 = jj10;
-    const double jj11 = 
+    const PylithScalar jj01 = jj10;
+    const PylithScalar jj11 = 
       _jacobian[i01]*_jacobian[i01] +
       _jacobian[i11]*_jacobian[i11] +
       _jacobian[i21]*_jacobian[i21];
-    const double det = sqrt(jj00*jj11 - jj01*jj10);
+    const PylithScalar det = sqrt(jj00*jj11 - jj01*jj10);
     _checkJacobianDet(det, cell);
     _jacobianDet[iQuadPt] = det;
 #else
@@ -157,13 +157,13 @@
 #endif
     
     // Compute inverse of Jacobian at quadrature point
-    const double d01 = 
+    const PylithScalar d01 = 
       _jacobian[i00]*_jacobian[i11] - 
       _jacobian[i10]*_jacobian[i01];
-    const double d12 = 
+    const PylithScalar d12 = 
       _jacobian[i10]*_jacobian[i21] - 
       _jacobian[i20]*_jacobian[i11];
-    const double d02 = 
+    const PylithScalar d02 = 
       _jacobian[i00]*_jacobian[i21] - 
       _jacobian[i20]*_jacobian[i01];
     if (fabs(d01) > minJacobian) {

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2Din3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature2Din3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
    * @param coordinatesCell Coordinates of cell's vertices.
    * @param cell Finite-element cell
    */
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,7 +52,7 @@
 // ----------------------------------------------------------------------
 // Compute geometric quantities for a cell at quadrature points.
 void
-pylith::feassemble::Quadrature3D::computeGeometry(const double_array& coordinatesCell,
+pylith::feassemble::Quadrature3D::computeGeometry(const scalar_array& coordinatesCell,
 						  const int cell)
 { // computeGeometry
   const int spaceDim = 3;
@@ -63,9 +63,9 @@
   const int numQuadPts = _quadRefCell.numQuadPts();
   const int numBasis = _quadRefCell.numBasis();
 
-  const double_array& basis = _quadRefCell.basis();
-  const double_array& quadPtsRef = _quadRefCell.quadPtsRef();
-  const double_array& basisDerivRef = _quadRefCell.basisDerivRef();
+  const scalar_array& basis = _quadRefCell.basis();
+  const scalar_array& quadPtsRef = _quadRefCell.quadPtsRef();
+  const scalar_array& basisDerivRef = _quadRefCell.basisDerivRef();
   const CellGeometry& geometry = _quadRefCell.refGeometry();
 
   assert(numBasis*spaceDim == coordinatesCell.size());
@@ -80,7 +80,7 @@
     // y = sum[i=0,n-1] (Ni * yi)
     // z = sum[i=0,n-1] (Ni * zi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis) {
-      const double valueBasis = basis[iQuadPt*numBasis+iBasis];
+      const PylithScalar valueBasis = basis[iQuadPt*numBasis+iBasis];
       for (int iDim=0; iDim < spaceDim; ++iDim)
 	_quadPts[iQuadPt*spaceDim+iDim] += 
 	  valueBasis * coordinatesCell[iBasis*spaceDim+iDim];
@@ -107,7 +107,7 @@
     // dz/dr = sum[i=0,n-1] (dNi/dr * zi)
     for (int iBasis=0; iBasis < numBasis; ++iBasis)
       for (int iCol=0; iCol < cellDim; ++iCol) {
-	const double deriv = 
+	const PylithScalar deriv = 
 	  basisDerivRef[iQuadPt*numBasis*spaceDim+iBasis*cellDim+iCol];
 	for (int iRow=0; iRow < spaceDim; ++iRow)
 	  _jacobian[iQuadPt*cellDim*spaceDim+iRow*cellDim+iCol] += 
@@ -128,7 +128,7 @@
     const int i20 = iJ + 2*spaceDim + 0;
     const int i21 = iJ + 2*spaceDim + 1;
     const int i22 = iJ + 2*spaceDim + 2;
-    const double det = 
+    const PylithScalar det = 
       _jacobian[i00]*(_jacobian[i11]*_jacobian[i22] -
 		      _jacobian[i12]*_jacobian[i21]) -
       _jacobian[i01]*(_jacobian[i10]*_jacobian[i22] -
@@ -154,7 +154,7 @@
 		      &coordinatesCell[0], &quadPtsRef[iQuadPt*cellDim],
 		      spaceDim, 1);
     _checkJacobianDet(_jacobianDet[iQuadPt], cell);
-    const double det = _jacobianDet[iQuadPt];
+    const PylithScalar det = _jacobianDet[iQuadPt];
 #endif
     
     // Compute inverse of Jacobian at quadrature point

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/Quadrature3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
    * @param coordinatesCell Coordinates of cell's vertices.
    * @param cell Finite-element cell
    */
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -99,10 +99,10 @@
 // ----------------------------------------------------------------------
 // Check determinant of Jacobian against minimum allowable value
 void
-pylith::feassemble::QuadratureEngine::_checkJacobianDet(const double det,
+pylith::feassemble::QuadratureEngine::_checkJacobianDet(const PylithScalar det,
 							const int cell) const
 { // _checkJacobianDet
-  const double minJacobian = _quadRefCell.minJacobian();
+  const PylithScalar minJacobian = _quadRefCell.minJacobian();
   if (det < minJacobian) {
     std::ostringstream msg;
     msg << "Determinant of Jacobian (" << det << ") for cell " << cell

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,7 +27,7 @@
 
 // Include directives ---------------------------------------------------
 #include "feassemblefwd.hh" // forward declaration
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 // Quadrature0D ---------------------------------------------------------
 /// Abstract base class for quadrature computation engine.
@@ -63,26 +63,26 @@
    *
    * @returns Array of coordinates of quadrature points in cell
    */
-  const double_array& quadPts(void) const;
+  const scalar_array& quadPts(void) const;
 
   /** Get derivatives of basis fns evaluated at quadrature points.
    *
    * @returns Array of derivatives of basis fns evaluated at
    * quadrature points
    */
-  const double_array& basisDeriv(void) const;
+  const scalar_array& basisDeriv(void) const;
 
   /** Get Jacobians evaluated at quadrature points.
    *
    * @returns Array of Jacobian inverses evaluated at quadrature points.
    */
-  const double_array& jacobian(void) const;
+  const scalar_array& jacobian(void) const;
 
   /** Get determinants of Jacobian evaluated at quadrature points.
    *
    * @returns Array of determinants of Jacobian evaluated at quadrature pts
    */
-  const double_array& jacobianDet(void) const;
+  const scalar_array& jacobianDet(void) const;
 
   /// Allocate cell buffers.
   void initialize(void);
@@ -96,7 +96,7 @@
    * @param cell Finite-element cell
    */
   virtual
-  void computeGeometry(const double_array& coordinatesCell,
+  void computeGeometry(const scalar_array& coordinatesCell,
 		       const int cell) = 0;
 
 // PROTECTED METHODS ////////////////////////////////////////////////////
@@ -113,18 +113,18 @@
    * @param det Value of determinant of Jacobian
    * @param cell Label of finite-element cell
    */
-  void _checkJacobianDet(const double det,
+  void _checkJacobianDet(const PylithScalar det,
 			 const int cell) const;
 
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
   /** Buffers for cell data */
-  double_array _quadPts; ///< Coordinates of quad pts.
-  double_array _jacobian; ///< Jacobian at quad pts;
-  double_array _jacobianDet; ///< |J| at quad pts.
-  double_array _jacobianInv; /// Inverse of Jacobian at quad pts.
-  double_array _basisDeriv; ///< Deriv. of basis fns at quad pts.
+  scalar_array _quadPts; ///< Coordinates of quad pts.
+  scalar_array _jacobian; ///< Jacobian at quad pts;
+  scalar_array _jacobianDet; ///< |J| at quad pts.
+  scalar_array _jacobianInv; /// Inverse of Jacobian at quad pts.
+  scalar_array _basisDeriv; ///< Deriv. of basis fns at quad pts.
 
   const QuadratureRefCell& _quadRefCell;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureEngine.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,28 +22,28 @@
 
 // Get coordinates of quadrature points in cell (NOT reference cell).
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::QuadratureEngine::quadPts(void) const {
   return _quadPts;
 }
 
 // Get derivatives of basis fns evaluated at quadrature points.
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::QuadratureEngine::basisDeriv(void) const {
   return _basisDeriv;
 }
 
 // Get Jacobians evaluated at quadrature points.
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::QuadratureEngine::jacobian(void) const {
   return _jacobian;
 }
 
 // Get determinants of Jacobian evaluated at quadrature points.
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::QuadratureEngine::jacobianDet(void) const {
   return _jacobianDet;
 }

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -76,17 +76,17 @@
 // Set basis functions and their derivatives and coordinates and
 //   weights of the quadrature points.
 void
-pylith::feassemble::QuadratureRefCell::initialize(const double* basis,
+pylith::feassemble::QuadratureRefCell::initialize(const PylithScalar* basis,
 						  const int numQuadPts1,
 						  const int numBasis1,
-						  const double* basisDerivRef,
+						  const PylithScalar* basisDerivRef,
 						  const int numQuadPts2,
 						  const int numBasis2,
 						  const int cellDim2,
-						  const double* quadPtsRef,
+						  const PylithScalar* quadPtsRef,
 						  const int numQuadPts3,
 						  const int cellDim3,
-						  const double* quadWts,
+						  const PylithScalar* quadWts,
 						  const int numQuadPts4,
 						  const int spaceDim)
 { // initialize

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -29,7 +29,7 @@
 // Include directives ---------------------------------------------------
 #include "feassemblefwd.hh" // forward declarations
 
-#include "pylith/utils/array.hh" // HASA double_array
+#include "pylith/utils/array.hh" // HASA scalar_array
 
 // Quadrature -----------------------------------------------------------
 /** @brief Object with basic quadrature information for the reference
@@ -100,17 +100,17 @@
    *
    * @param spaceDim Number of dimensions in coordinates of cell vertices
    */
-  void initialize(const double* basis,
+  void initialize(const PylithScalar* basis,
 		  const int numQuadPts1,
 		  const int numBasis1,
-		  const double* basisDerivRef,
+		  const PylithScalar* basisDerivRef,
 		  const int numQuadPts2,
 		  const int numBasis2,
 		  const int cellDim2,
-		  const double* quadPtsRef,
+		  const PylithScalar* quadPtsRef,
 		  const int numQuadPts3,
 		  const int cellDim3,
-		  const double* quadWts,
+		  const PylithScalar* quadWts,
 		  const int numQuadPts4,
 		  const int spaceDim);
 
@@ -130,37 +130,37 @@
    *
    * @param tolerance Minimum allowable value for Jacobian
    */
-  void minJacobian(const double min);
+  void minJacobian(const PylithScalar min);
 
   /** Get minimum allowable determinant of Jacobian.
    *
    * @returns Minimum allowable value for Jacobian
    */
-  double minJacobian(void) const;
+  PylithScalar minJacobian(void) const;
 
   /** Get coordinates of quadrature points in reference cell.
    *
    * @returns Array of coordinates of quadrature points in reference cell.
    */
-  const double_array& quadPtsRef(void) const;
+  const scalar_array& quadPtsRef(void) const;
 
   /** Get weights of quadrature points.
    *
    * @returns Weights of quadrature points
    */
-  const double_array& quadWts(void) const;
+  const scalar_array& quadWts(void) const;
 
   /** Get basis fns evaluated at quadrature points.
    *
    * @returns Array of basis fns evaluated at quadrature points
    */
-  const double_array& basis(void) const;
+  const scalar_array& basis(void) const;
 
   /** Get derivates of basis fns evaluated at quadrature points.
    *
    * @returns Array of derivates of basis fns evaluated at quadrature points
    */
-  const double_array& basisDerivRef(void) const;
+  const scalar_array& basisDerivRef(void) const;
 
   /** Get number of dimensions in reference cell.
    *
@@ -198,7 +198,7 @@
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
-  double _minJacobian; ///< Minium allowable Jacobian determinant
+  PylithScalar _minJacobian; ///< Minium allowable Jacobian determinant
   
   /** Array of coordinates of quadrature points in reference cell.
    *
@@ -210,7 +210,7 @@
    * size = numQuadPts * cellDim
    * index = iQuadPts*cellDim + iDim
    */
-  double_array _quadPtsRef;
+  scalar_array _quadPtsRef;
 
   /** Array of weights of quadrature points.
    *
@@ -218,7 +218,7 @@
    * size = numQuadPts
    * index = iQuadPt
    */
-  double_array _quadWts;
+  scalar_array _quadWts;
 
   /** Array of basis functions evaluated at the quadrature points.
    *
@@ -228,7 +228,7 @@
    * size = numQuadPts * numBasis
    * index = iQuadPt*numBasis + iBasis
    */
-  double_array _basis;
+  scalar_array _basis;
 
   /** Array of basis function derivatives evaluated at the quadrature
    * points, where derivatives are with respect to cell's local
@@ -240,7 +240,7 @@
    * size = numQuadPts * numBasis * cellDim
    * index = iQuadPt*numBasis*cellDim + iBasis*cellDim + iDim
    */
-  double_array _basisDerivRef;
+  scalar_array _basisDerivRef;
 
   int _cellDim; ///< Number of dimensions in reference cell
   int _numBasis; ///< Number of basis functions (and vertices) for cell

Modified: short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/feassemble/QuadratureRefCell.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 // Get minimum allowable Jacobian.
 inline
-double
+PylithScalar
 pylith::feassemble::QuadratureRefCell::minJacobian(void) const {
   return _minJacobian;
 }
@@ -30,34 +30,34 @@
 // Set minimum allowable Jacobian.
 inline
 void
-pylith::feassemble::QuadratureRefCell::minJacobian(const double min) {
+pylith::feassemble::QuadratureRefCell::minJacobian(const PylithScalar min) {
   _minJacobian = min;
 }
 
 // Get coordinates of quadrature points in reference cell.
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::QuadratureRefCell::quadPtsRef(void) const {
   return _quadPtsRef;
 }
 
 // Get weights of quadrature points.
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::QuadratureRefCell::quadWts(void) const {
   return _quadWts;
 }
 
 // Get basis fns evaluated at quadrature points.
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::QuadratureRefCell::basis(void) const {
   return _basis;
 }
 
 // Get derivates of basis fns evaluated at quadrature points.
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::feassemble::QuadratureRefCell::basisDerivRef(void) const {
   return _basisDerivRef;
 }

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/FieldsNew.hh" // USES FieldsNew
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
-#include "pylith/utils/array.hh" // USES double_array, std::vector
+#include "pylith/utils/array.hh" // USES scalar_array, std::vector
 
 #include "spatialdata/spatialdb/SpatialDB.hh" // USES SpatialDB
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -120,9 +120,9 @@
   const int spaceDim = cs->spaceDim();
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
 
-  double_array coordsVertex(spaceDim);
+  scalar_array coordsVertex(spaceDim);
   const ALE::Obj<RealSection>& coordinates =
     faultSieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -143,12 +143,12 @@
   const ALE::Obj<SubRealUniformSection>& fieldsSection = 
     _fieldsPropsStateVars->section();
   assert(!fieldsSection.isNull());
-  double_array fieldsVertex(fieldsFiberDim);
+  scalar_array fieldsVertex(fieldsFiberDim);
 
   // Create arrays for querying.
   const int numDBProperties = _metadata.numDBProperties();
-  double_array propertiesDBQuery(numDBProperties);
-  double_array propertiesVertex(_propsFiberDim);
+  scalar_array propertiesDBQuery(numDBProperties);
+  scalar_array propertiesVertex(_propsFiberDim);
 
   // Setup database for querying for physical properties
   assert(_dbProperties);
@@ -197,8 +197,8 @@
 
     // Create arrays for querying
     const int numDBStateVars = _metadata.numDBStateVars();
-    double_array stateVarsDBQuery(numDBStateVars);
-    double_array stateVarsVertex(_varsFiberDim);
+    scalar_array stateVarsDBQuery(numDBStateVars);
+    scalar_array stateVarsVertex(_varsFiberDim);
     
     // Setup database for querying for initial state variables
     _dbInitialState->open();
@@ -304,19 +304,19 @@
 
 // ----------------------------------------------------------------------
 // Compute friction at vertex.
-double
-pylith::friction::FrictionModel::calcFriction(const double slip,
-                                              const double slipRate,
-                                              const double normalTraction)
+PylithScalar
+pylith::friction::FrictionModel::calcFriction(const PylithScalar slip,
+                                              const PylithScalar slipRate,
+                                              const PylithScalar normalTraction)
 { // calcFriction
   assert(_fieldsPropsStateVars);
 
   assert(_propsFiberDim+_varsFiberDim == _propsStateVarsVertex.size());
-  const double* propertiesVertex = &_propsStateVarsVertex[0];
-  const double* stateVarsVertex = (_varsFiberDim > 0) ?
+  const PylithScalar* propertiesVertex = &_propsStateVarsVertex[0];
+  const PylithScalar* stateVarsVertex = (_varsFiberDim > 0) ?
     &_propsStateVarsVertex[_propsFiberDim] : 0;
 
-  const double friction =
+  const PylithScalar friction =
     _calcFriction(slip, slipRate, normalTraction,
 		  propertiesVertex, _propsFiberDim,
 		  stateVarsVertex, _varsFiberDim);
@@ -327,9 +327,9 @@
 // ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
-pylith::friction::FrictionModel::updateStateVars(const double slip,
-						 const double slipRate,
-						 const double normalTraction,
+pylith::friction::FrictionModel::updateStateVars(const PylithScalar slip,
+						 const PylithScalar slipRate,
+						 const PylithScalar normalTraction,
 						 const int vertex)
 { // updateStateVars
   assert(_fieldsPropsStateVars);
@@ -341,8 +341,8 @@
     _fieldsPropsStateVars->section();
   assert(!fieldsSection.isNull());
 
-  const double* propertiesVertex = &_propsStateVarsVertex[0];
-  double* stateVarsVertex = &_propsStateVarsVertex[_propsFiberDim];
+  const PylithScalar* propertiesVertex = &_propsStateVarsVertex[0];
+  PylithScalar* stateVarsVertex = &_propsStateVarsVertex[_propsFiberDim];
   
   _updateStateVars(slip, slipRate, normalTraction,
 		   &stateVarsVertex[0], _varsFiberDim,
@@ -356,12 +356,12 @@
 // ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
-pylith::friction::FrictionModel::_updateStateVars(const double slip,
-    const double slipRate,
-    const double normalTraction,
-    double* const stateVars,
+pylith::friction::FrictionModel::_updateStateVars(const PylithScalar slip,
+    const PylithScalar slipRate,
+    const PylithScalar normalTraction,
+    PylithScalar* const stateVars,
     const int numStateVars,
-    const double* properties,
+    const PylithScalar* properties,
     const int numProperties)
 { // _updateStateVars
 } // _updateStateVars
@@ -379,7 +379,7 @@
   assert(_propsFiberDim >= 0);
   
   // Determine scales for each physical property.
-  double_array propertiesVertex(_propsFiberDim);
+  scalar_array propertiesVertex(_propsFiberDim);
   for (int i=0; i < _propsFiberDim; ++i)
     propertiesVertex[i] = 1.0;
   _dimProperties(&propertiesVertex[0], propertiesVertex.size());
@@ -392,7 +392,7 @@
   assert(_varsFiberDim >= 0);
   
   // Determine scales for each state variable.
-  double_array stateVarsVertex(_varsFiberDim);
+  scalar_array stateVarsVertex(_varsFiberDim);
   for (int i=0; i < _varsFiberDim; ++i)
     stateVarsVertex[i] = 1.0;
   _dimStateVars(&stateVarsVertex[0], stateVarsVertex.size());

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -82,13 +82,13 @@
    * @param dt Current time step.
    */
   virtual
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Get current time step.
    *
    * @returns Current time step.
    */
-  double timeStep(void) const;
+  PylithScalar timeStep(void) const;
 
   /** Set database for physical property parameters.
    *
@@ -164,9 +164,9 @@
    *
    * @returns Friction (magnitude of shear traction) at vertex.
    */
-  double calcFriction(const double slip,
-                      const double slipRate,
-                      const double normalTraction);
+  PylithScalar calcFriction(const PylithScalar slip,
+                      const PylithScalar slipRate,
+                      const PylithScalar normalTraction);
   
   /** Compute friction at vertex.
    *
@@ -178,9 +178,9 @@
    * @param normalTraction Normal traction at location.
    * @param vertex Finite-element vertex on friction interface.
    */
-  void updateStateVars(const double slip,
-		       const double slipRate,
-		       const double normalTraction,
+  void updateStateVars(const PylithScalar slip,
+		       const PylithScalar slipRate,
+		       const PylithScalar normalTraction,
 		       const int vertex);
   
   // PROTECTED METHODS //////////////////////////////////////////////////
@@ -194,8 +194,8 @@
    * @param dbValues Array of database values.
    */
   virtual
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues) const = 0;
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues) const = 0;
 
   /** Nondimensionalize properties.
    *
@@ -203,7 +203,7 @@
    * @param nvalues Number of values.
    */
   virtual
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const = 0;
 
   /** Dimensionalize properties.
@@ -212,7 +212,7 @@
    * @param nvalues Number of values.
    */
   virtual
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const = 0;
 
   /** Compute initial state variables from values in spatial database.
@@ -221,8 +221,8 @@
    * @param dbValues Array of database values.
    */
   virtual
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues) const;
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues) const;
 
   /** Nondimensionalize state variables.
    *
@@ -230,7 +230,7 @@
    * @param nvalues Number of values.
    */
   virtual
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
 			   const int nvalues) const;
   
   /** Dimensionalize state variables.
@@ -239,7 +239,7 @@
    * @param nvalues Number of values.
    */
   virtual
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
 			const int nvalues) const;
 
   /** Compute friction from properties and state variables.
@@ -253,12 +253,12 @@
    * @param numStateVars Number of state variables.
    */
   virtual
-  double _calcFriction(const double slip,
-		       const double slipRate,
-		       const double normalTraction,
-		       const double* properties,
+  PylithScalar _calcFriction(const PylithScalar slip,
+		       const PylithScalar slipRate,
+		       const PylithScalar normalTraction,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars) = 0;
 
   /** Update state variables (for next time step).
@@ -272,12 +272,12 @@
    * @param numProperties Number of properties.
    */
   virtual
-  void _updateStateVars(const double slip,
-			const double slipRate,
-			const double normalTraction,
-			double* const stateVars,
+  void _updateStateVars(const PylithScalar slip,
+			const PylithScalar slipRate,
+			const PylithScalar normalTraction,
+			PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -289,7 +289,7 @@
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
-  double _dt; ///< Current time step
+  PylithScalar _dt; ///< Current time step
 
   spatialdata::units::Nondimensional* _normalizer; ///< Nondimensionalizer
   
@@ -312,7 +312,7 @@
   topology::FieldsNew<topology::SubMesh>* _fieldsPropsStateVars;
 
   /// Buffer for properties and state variables at vertex.
-  double_array _propsStateVarsVertex;
+  scalar_array _propsStateVarsVertex;
 
   int _propsFiberDim; ///< Number of properties per point.
   int _varsFiberDim; ///< Number of state variables per point.

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -51,13 +51,13 @@
 // Set current time step.
 inline
 void
-pylith::friction::FrictionModel::timeStep(const double dt) {
+pylith::friction::FrictionModel::timeStep(const PylithScalar dt) {
   _dt = dt;
 }
 
 // Get current time step.
 inline
-double
+PylithScalar
 pylith::friction::FrictionModel::timeStep(void) const {
   return _dt;
 } // timeStep
@@ -65,21 +65,21 @@
 // Compute initial state variables from values in spatial database.
 inline
 void
-pylith::friction::FrictionModel::_dbToStateVars(double* const stateValues,
-					    const double_array& dbValues) const
+pylith::friction::FrictionModel::_dbToStateVars(PylithScalar* const stateValues,
+					    const scalar_array& dbValues) const
 {}
 
 // Nondimensionalize state variables.
 inline
 void
-pylith::friction::FrictionModel::_nondimStateVars(double* const values,
+pylith::friction::FrictionModel::_nondimStateVars(PylithScalar* const values,
 					      const int nvalues) const
 {}
   
 // Dimensionalize state variables.
 inline
 void
-pylith::friction::FrictionModel::_dimStateVars(double* const values,
+pylith::friction::FrictionModel::_dimStateVars(PylithScalar* const values,
 					   const int nvalues) const
 {}
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/RateStateAgeing.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/RateStateAgeing.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/RateStateAgeing.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/materials/Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -135,19 +135,19 @@
 // Compute properties from values in spatial database.
 void
 pylith::friction::RateStateAgeing::_dbToProperties(
-					   double* const propValues,
-					   const double_array& dbValues) const
+					   PylithScalar* const propValues,
+					   const scalar_array& dbValues) const
 { // _dbToProperties
   assert(propValues);
   const int numDBValues = dbValues.size();
   assert(_RateStateAgeing::numDBProperties == numDBValues);
 
-  const double frictionCoef = dbValues[db_coef];
-  const double slipRate0 = dbValues[db_slipRate0];
-  const double dc = dbValues[db_L];
-  const double a = dbValues[db_a];
-  const double b = dbValues[db_b];
-  const double cohesion = dbValues[db_cohesion];
+  const PylithScalar frictionCoef = dbValues[db_coef];
+  const PylithScalar slipRate0 = dbValues[db_slipRate0];
+  const PylithScalar dc = dbValues[db_L];
+  const PylithScalar a = dbValues[db_a];
+  const PylithScalar b = dbValues[db_b];
+  const PylithScalar cohesion = dbValues[db_cohesion];
  
   if (frictionCoef < 0.0) {
     std::ostringstream msg;
@@ -193,16 +193,16 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::friction::RateStateAgeing::_nondimProperties(double* const values,
+pylith::friction::RateStateAgeing::_nondimProperties(PylithScalar* const values,
 						    const int nvalues) const
 { // _nondimProperties
   assert(_normalizer);
   assert(values);
   assert(nvalues == _RateStateAgeing::numProperties);
 
-  const double lengthScale = _normalizer->lengthScale();
-  const double timeScale = _normalizer->timeScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_slipRate0] /= lengthScale / timeScale;
   values[p_L] /= lengthScale;
@@ -212,16 +212,16 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::friction::RateStateAgeing::_dimProperties(double* const values,
+pylith::friction::RateStateAgeing::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(_normalizer);
   assert(values);
   assert(nvalues == _RateStateAgeing::numProperties);
 
-  const double lengthScale = _normalizer->lengthScale();
-  const double timeScale = _normalizer->timeScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_slipRate0] *= lengthScale / timeScale;
   values[p_L] *= lengthScale;
@@ -232,14 +232,14 @@
 // Compute state variables from values in spatial database.
 void
 pylith::friction::RateStateAgeing::_dbToStateVars(
-					   double* const stateValues,
-					   const double_array& dbValues) const
+					   PylithScalar* const stateValues,
+					   const scalar_array& dbValues) const
 { // _dbToStateVars
   assert(stateValues);
   const int numDBValues = dbValues.size();
   assert(_RateStateAgeing::numDBStateVars == numDBValues);
 
-  const double stateVariable = dbValues[db_state];
+  const PylithScalar stateVariable = dbValues[db_state];
  
   stateValues[s_state] = stateVariable;
 } // _dbToStateVars
@@ -247,14 +247,14 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize state variables.
 void
-pylith::friction::RateStateAgeing::_nondimStateVars(double* const values,
+pylith::friction::RateStateAgeing::_nondimStateVars(PylithScalar* const values,
 						    const int nvalues) const
 { // _nondimStateVars
   assert(_normalizer);
   assert(values);
   assert(nvalues == _RateStateAgeing::numStateVars);
 
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
 
   values[s_state] /= timeScale;
 } // _nondimStateVars
@@ -262,27 +262,27 @@
 // ----------------------------------------------------------------------
 // Dimensionalize state variables.
 void
-pylith::friction::RateStateAgeing::_dimStateVars(double* const values,
+pylith::friction::RateStateAgeing::_dimStateVars(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimStateVars
   assert(_normalizer);
   assert(values);
   assert(nvalues == _RateStateAgeing::numStateVars);
 
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
 
   values[s_state] *= timeScale;
 } // _dimStateVars
 
 // ----------------------------------------------------------------------
 // Compute friction from properties and state variables.
-double
-pylith::friction::RateStateAgeing::_calcFriction(const double slip,
-						const double slipRate,
-						const double normalTraction,
-						const double* properties,
+PylithScalar
+pylith::friction::RateStateAgeing::_calcFriction(const PylithScalar slip,
+						const PylithScalar slipRate,
+						const PylithScalar normalTraction,
+						const PylithScalar* properties,
 						const int numProperties,
-						const double* stateVars,
+						const PylithScalar* stateVars,
 						const int numStateVars)
 { // _calcFriction
   assert(properties);
@@ -290,27 +290,27 @@
   assert(numStateVars);
   assert(_RateStateAgeing::numStateVars == numStateVars);
 
-  double friction = 0.0;
-  double mu_f = 0.0;
+  PylithScalar friction = 0.0;
+  PylithScalar mu_f = 0.0;
   if (normalTraction <= 0.0) {
     // if fault is in compression
 
     // regularized rate and state equation
-    const double f0 = properties[p_coef];
+    const PylithScalar f0 = properties[p_coef];
 
     // Since regulatized friction -> 0 as slipRate -> 0, limit slip
     // rate to some minimum value
-    const double slipRateEff = std::max(1.0e-12, slipRate);
+    const PylithScalar slipRateEff = std::max(PylithScalar(1.0e-12), slipRate);
 
-    const double slipRate0 = properties[p_slipRate0];
-    const double a = properties[p_a];
+    const PylithScalar slipRate0 = properties[p_slipRate0];
+    const PylithScalar a = properties[p_a];
 
-    const double theta = stateVars[s_state];
-    const double L = properties[p_L];
-    const double b = properties[p_b];
-    const double bLnTerm = b * log(slipRate0 * theta / L);
-    const double expTerm = exp((f0 + bLnTerm)/a);
-    const double sinhArg = 0.5 * slipRateEff / slipRate0 * expTerm;
+    const PylithScalar theta = stateVars[s_state];
+    const PylithScalar L = properties[p_L];
+    const PylithScalar b = properties[p_b];
+    const PylithScalar bLnTerm = b * log(slipRate0 * theta / L);
+    const PylithScalar expTerm = exp((f0 + bLnTerm)/a);
+    const PylithScalar sinhArg = 0.5 * slipRateEff / slipRate0 * expTerm;
 
     mu_f = a * asinh(sinhArg);
     friction = -mu_f * normalTraction + properties[p_cohesion];
@@ -324,12 +324,12 @@
 // ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
-pylith::friction::RateStateAgeing::_updateStateVars(const double slip,
-						  const double slipRate,
-						  const double normalTraction,
-						  double* const stateVars,
+pylith::friction::RateStateAgeing::_updateStateVars(const PylithScalar slip,
+						  const PylithScalar slipRate,
+						  const PylithScalar normalTraction,
+						  PylithScalar* const stateVars,
 						  const int numStateVars,
-						  const double* properties,
+						  const PylithScalar* properties,
 						  const int numProperties)
 { // _updateStateVars
   assert(properties);
@@ -358,15 +358,15 @@
 
   // Since regulatized friction -> 0 as slipRate -> 0, limit slip
   // rate to some minimum value
-  const double slipRateEff = std::max(1.0e-12, slipRate);
+  const PylithScalar slipRateEff = std::max(PylithScalar(1.0e-12), slipRate);
 
-  const double dt = _dt;
-  const double thetaTVertex = stateVars[s_state];
-  const double L = properties[p_L];
-  const double vDtL = slipRateEff * dt / L;
-  const double expTerm = exp(-vDtL);
+  const PylithScalar dt = _dt;
+  const PylithScalar thetaTVertex = stateVars[s_state];
+  const PylithScalar L = properties[p_L];
+  const PylithScalar vDtL = slipRateEff * dt / L;
+  const PylithScalar expTerm = exp(-vDtL);
 
-  double thetaTpdtVertex = 0.0;
+  PylithScalar thetaTpdtVertex = 0.0;
   if (vDtL > 1.0e-20) {
     thetaTpdtVertex = thetaTVertex * expTerm + L / slipRateEff * (1 - expTerm);
     PetscLogFlops(7);

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/RateStateAgeing.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/RateStateAgeing.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/RateStateAgeing.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -68,15 +68,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues) const;
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues) const;
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -84,7 +84,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute friction from properties and state variables.
@@ -97,15 +97,15 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues) const;
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues) const;
 
   /** Nondimensionalize state variables.
    *
    * @param values Array of initial state values.
    * @param nvalues Number of values.
    */
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
 			   const int nvalues) const;
   
   /** Dimensionalize state variables.
@@ -113,7 +113,7 @@
    * @param values Array of initial state values.
    * @param nvalues Number of values.
    */
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
 			const int nvalues) const;
 
   /** Compute friction from properties and state variables.
@@ -126,12 +126,12 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  double _calcFriction(const double slip,
-		       const double slipRate,
-		       const double normalTraction,
-		       const double* properties,
+  PylithScalar _calcFriction(const PylithScalar slip,
+		       const PylithScalar slipRate,
+		       const PylithScalar normalTraction,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars);
 
   /** Update state variables (for next time step).
@@ -144,12 +144,12 @@
    * @param properties Properties at location.
    * @param numProperties Number of properties.
    */
-  void _updateStateVars(const double slip,
-			const double slipRate,
-			const double normalTraction,
-			double* const stateVars,
+  void _updateStateVars(const PylithScalar slip,
+			const PylithScalar slipRate,
+			const PylithScalar normalTraction,
+			PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/SlipWeakening.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/SlipWeakening.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/SlipWeakening.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/materials/Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -127,17 +127,17 @@
 // Compute properties from values in spatial database.
 void
 pylith::friction::SlipWeakening::_dbToProperties(
-					   double* const propValues,
-					   const double_array& dbValues) const
+					   PylithScalar* const propValues,
+					   const scalar_array& dbValues) const
 { // _dbToProperties
   assert(propValues);
   const int numDBValues = dbValues.size();
   assert(_SlipWeakening::numDBProperties == numDBValues);
 
-  const double db_static = dbValues[db_coefS];
-  const double db_dynamic = dbValues[db_coefD];
-  const double db_do = dbValues[db_d0];
-  const double db_c = dbValues[db_cohesion];
+  const PylithScalar db_static = dbValues[db_coefS];
+  const PylithScalar db_dynamic = dbValues[db_coefD];
+  const PylithScalar db_do = dbValues[db_d0];
+  const PylithScalar db_c = dbValues[db_cohesion];
 
   if (db_static < 0.0) {
     std::ostringstream msg;
@@ -173,15 +173,15 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::friction::SlipWeakening::_nondimProperties(double* const values,
+pylith::friction::SlipWeakening::_nondimProperties(PylithScalar* const values,
 						    const int nvalues) const
 { // _nondimProperties
   assert(_normalizer);
   assert(values);
   assert(nvalues == _SlipWeakening::numProperties);
 
-  const double lengthScale = _normalizer->lengthScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_d0] /= lengthScale;
   values[p_cohesion] /= pressureScale;
@@ -190,15 +190,15 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::friction::SlipWeakening::_dimProperties(double* const values,
+pylith::friction::SlipWeakening::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(_normalizer);
   assert(values);
   assert(nvalues == _SlipWeakening::numProperties);
 
-  const double lengthScale = _normalizer->lengthScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_d0] *= lengthScale;
   values[p_cohesion] *= pressureScale;
@@ -208,15 +208,15 @@
 // Compute state variables from values in spatial database.
 void
 pylith::friction::SlipWeakening::_dbToStateVars(
-					   double* const stateValues,
-					   const double_array& dbValues) const
+					   PylithScalar* const stateValues,
+					   const scalar_array& dbValues) const
 { // _dbToStateVars
   assert(stateValues);
   const int numDBValues = dbValues.size();
   assert(_SlipWeakening::numDBStateVars == numDBValues);
 
-  const double cumulativeSlip = dbValues[db_slipCum];
-  const double previousSlip = dbValues[db_slipPrev];
+  const PylithScalar cumulativeSlip = dbValues[db_slipCum];
+  const PylithScalar previousSlip = dbValues[db_slipPrev];
  
   stateValues[s_slipCum] = cumulativeSlip;
   stateValues[s_slipPrev] = previousSlip;
@@ -225,14 +225,14 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize state variables.
 void
-pylith::friction::SlipWeakening::_nondimStateVars(double* const values,
+pylith::friction::SlipWeakening::_nondimStateVars(PylithScalar* const values,
 						  const int nvalues) const
 { // _nondimStateVars
   assert(_normalizer);
   assert(values);
   assert(nvalues == _SlipWeakening::numStateVars);
 
-  const double lengthScale = _normalizer->lengthScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
 
   values[s_slipCum] /= lengthScale;
   values[s_slipPrev] /= lengthScale;
@@ -241,14 +241,14 @@
 // ----------------------------------------------------------------------
 // Dimensionalize state variables.
 void
-pylith::friction::SlipWeakening::_dimStateVars(double* const values,
+pylith::friction::SlipWeakening::_dimStateVars(PylithScalar* const values,
 					       const int nvalues) const
 { // _dimStateVars
   assert(_normalizer);
   assert(values);
   assert(nvalues == _SlipWeakening::numStateVars);
 
-  const double lengthScale = _normalizer->lengthScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
 
   values[s_slipCum] *= lengthScale;
   values[s_slipPrev] *= lengthScale;
@@ -256,13 +256,13 @@
 
 // ----------------------------------------------------------------------
 // Compute friction from properties and state variables.
-double
-pylith::friction::SlipWeakening::_calcFriction(const double slip,
-						const double slipRate,
-						const double normalTraction,
-						const double* properties,
+PylithScalar
+pylith::friction::SlipWeakening::_calcFriction(const PylithScalar slip,
+						const PylithScalar slipRate,
+						const PylithScalar normalTraction,
+						const PylithScalar* properties,
 						const int numProperties,
-						const double* stateVars,
+						const PylithScalar* stateVars,
 						const int numStateVars)
 { // _calcFriction
   assert(properties);
@@ -270,8 +270,8 @@
   assert(stateVars);
   assert(_SlipWeakening::numStateVars == numStateVars);
 
-  double friction = 0.0;
-  double mu_f = 0.0;
+  PylithScalar friction = 0.0;
+  PylithScalar mu_f = 0.0;
   if (normalTraction <= 0.0) {
     // if fault is in compression
     if (stateVars[s_slipCum] < properties[p_d0]) {
@@ -293,12 +293,12 @@
 // ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
-pylith::friction::SlipWeakening::_updateStateVars(const double slip,
-						  const double slipRate,
-						  const double normalTraction,
-						  double* const stateVars,
+pylith::friction::SlipWeakening::_updateStateVars(const PylithScalar slip,
+						  const PylithScalar slipRate,
+						  const PylithScalar normalTraction,
+						  PylithScalar* const stateVars,
 						  const int numStateVars,
-						  const double* properties,
+						  const PylithScalar* properties,
 						  const int numProperties)
 { // _updateStateVars
   assert(properties);
@@ -306,9 +306,9 @@
   assert(stateVars);
   assert(_SlipWeakening::numStateVars == numStateVars);
 
-  const double tolerance = 1.0e-12;
+  const PylithScalar tolerance = 1.0e-12;
   if (slipRate > tolerance) {
-    const double slipPrev = stateVars[s_slipPrev];
+    const PylithScalar slipPrev = stateVars[s_slipPrev];
 
     stateVars[s_slipPrev] = stateVars[s_slipCum];
     stateVars[s_slipCum] += fabs(slip - slipPrev);

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/SlipWeakening.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/SlipWeakening.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/SlipWeakening.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,15 +57,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues) const;
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues) const;
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -73,7 +73,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute friction from properties and state variables.
@@ -86,15 +86,15 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues) const;
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues) const;
 
   /** Nondimensionalize state variables.
    *
    * @param values Array of initial state values.
    * @param nvalues Number of values.
    */
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
 			   const int nvalues) const;
   
   /** Dimensionalize state variables.
@@ -102,7 +102,7 @@
    * @param values Array of initial state values.
    * @param nvalues Number of values.
    */
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
 			const int nvalues) const;
 
   /** Compute friction from properties and state variables.
@@ -115,12 +115,12 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  double _calcFriction(const double slip,
-		       const double slipRate,
-		       const double normalTraction,
-		       const double* properties,
+  PylithScalar _calcFriction(const PylithScalar slip,
+		       const PylithScalar slipRate,
+		       const PylithScalar normalTraction,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars);
 
   /** Update state variables (for next time step).
@@ -133,12 +133,12 @@
    * @param properties Properties at location.
    * @param numProperties Number of properties.
    */
-  void _updateStateVars(const double slip,
-      const double slipRate,
-      const double normalTraction,
-      double* const stateVars,
+  void _updateStateVars(const PylithScalar slip,
+      const PylithScalar slipRate,
+      const PylithScalar normalTraction,
+      PylithScalar* const stateVars,
       const int numStateVars,
-      const double* properties,
+      const PylithScalar* properties,
       const int numProperties);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/StaticFriction.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/StaticFriction.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/StaticFriction.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/materials/Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -89,15 +89,15 @@
 // Compute properties from values in spatial database.
 void
 pylith::friction::StaticFriction::_dbToProperties(
-					   double* const propValues,
-					   const double_array& dbValues) const
+					   PylithScalar* const propValues,
+					   const scalar_array& dbValues) const
 { // _dbToProperties
   assert(propValues);
   const int numDBValues = dbValues.size();
   assert(_StaticFriction::numDBProperties == numDBValues);
 
-  const double coef = dbValues[db_coef];
-  const double cohesion = dbValues[db_cohesion];
+  const PylithScalar coef = dbValues[db_coef];
+  const PylithScalar cohesion = dbValues[db_cohesion];
  
   if (coef < 0.0) {
     std::ostringstream msg;
@@ -114,14 +114,14 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::friction::StaticFriction::_nondimProperties(double* const values,
+pylith::friction::StaticFriction::_nondimProperties(PylithScalar* const values,
 						    const int nvalues) const
 { // _nondimProperties
   assert(_normalizer);
   assert(values);
   assert(nvalues == _StaticFriction::numProperties);
 
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_cohesion] /= pressureScale;
 } // _nondimProperties
@@ -129,34 +129,34 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::friction::StaticFriction::_dimProperties(double* const values,
+pylith::friction::StaticFriction::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(_normalizer);
   assert(values);
   assert(nvalues == _StaticFriction::numProperties);
 
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_cohesion] *= pressureScale;
 } // _dimProperties
 
 // ----------------------------------------------------------------------
 // Compute friction from properties and state variables.
-double
-pylith::friction::StaticFriction::_calcFriction(const double slip,
-						const double slipRate,
-						const double normalTraction,
-						const double* properties,
+PylithScalar
+pylith::friction::StaticFriction::_calcFriction(const PylithScalar slip,
+						const PylithScalar slipRate,
+						const PylithScalar normalTraction,
+						const PylithScalar* properties,
 						const int numProperties,
-						const double* stateVars,
+						const PylithScalar* stateVars,
 						const int numStateVars)
 { // _calcFriction
   assert(properties);
   assert(_StaticFriction::numProperties == numProperties);
   assert(0 == numStateVars);
 
-  const double friction = (normalTraction <= 0.0) ?
+  const PylithScalar friction = (normalTraction <= 0.0) ?
     -properties[p_coef] * normalTraction + properties[p_cohesion]: 
     0.0;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/StaticFriction.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/StaticFriction.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/StaticFriction.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,15 +57,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues) const;
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues) const;
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -73,7 +73,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute friction from properties and state variables.
@@ -86,12 +86,12 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  double _calcFriction(const double slip,
-		       const double slipRate,
-		       const double normalTraction,
-		       const double* properties,
+  PylithScalar _calcFriction(const PylithScalar slip,
+		       const PylithScalar slipRate,
+		       const PylithScalar normalTraction,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/TimeWeakening.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/TimeWeakening.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/TimeWeakening.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/materials/Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -121,17 +121,17 @@
 // Compute properties from values in spatial database.
 void
 pylith::friction::TimeWeakening::_dbToProperties(
-					   double* const propValues,
-					   const double_array& dbValues) const
+					   PylithScalar* const propValues,
+					   const scalar_array& dbValues) const
 { // _dbToProperties
   assert(propValues);
   const int numDBValues = dbValues.size();
   assert(_TimeWeakening::numDBProperties == numDBValues);
 
-  const double db_static = dbValues[db_coefS];
-  const double db_dynamic = dbValues[db_coefD];
-  const double db_To = dbValues[db_Tc];
-  const double db_c = dbValues[db_cohesion];
+  const PylithScalar db_static = dbValues[db_coefS];
+  const PylithScalar db_dynamic = dbValues[db_coefD];
+  const PylithScalar db_To = dbValues[db_Tc];
+  const PylithScalar db_c = dbValues[db_cohesion];
 
   if (db_static < 0.0) {
     std::ostringstream msg;
@@ -167,15 +167,15 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::friction::TimeWeakening::_nondimProperties(double* const values,
+pylith::friction::TimeWeakening::_nondimProperties(PylithScalar* const values,
 						    const int nvalues) const
 { // _nondimProperties
   assert(_normalizer);
   assert(values);
   assert(nvalues == _TimeWeakening::numProperties);
 
-  const double timeScale = _normalizer->timeScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_Tc] /= timeScale;
   values[p_cohesion] /= pressureScale;
@@ -184,15 +184,15 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::friction::TimeWeakening::_dimProperties(double* const values,
+pylith::friction::TimeWeakening::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(_normalizer);
   assert(values);
   assert(nvalues == _TimeWeakening::numProperties);
 
-  const double timeScale = _normalizer->timeScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_Tc] *= timeScale;
   values[p_cohesion] *= pressureScale;
@@ -202,14 +202,14 @@
 // Compute state variables from values in spatial database.
 void
 pylith::friction::TimeWeakening::_dbToStateVars(
-					   double* const stateValues,
-					   const double_array& dbValues) const
+					   PylithScalar* const stateValues,
+					   const scalar_array& dbValues) const
 { // _dbToStateVars
   assert(stateValues);
   const int numDBValues = dbValues.size();
   assert(_TimeWeakening::numDBStateVars == numDBValues);
 
-  const double timeElasped = dbValues[db_time];
+  const PylithScalar timeElasped = dbValues[db_time];
   
   stateValues[s_time] = timeElasped;
 } // _dbToStateVars
@@ -217,14 +217,14 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize state variables.
 void
-pylith::friction::TimeWeakening::_nondimStateVars(double* const values,
+pylith::friction::TimeWeakening::_nondimStateVars(PylithScalar* const values,
 						  const int nvalues) const
 { // _nondimStateVars
   assert(_normalizer);
   assert(values);
   assert(nvalues == _TimeWeakening::numStateVars);
 
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
 
   values[s_time] /= timeScale;
 } // _nondimStateVars
@@ -232,27 +232,27 @@
 // ----------------------------------------------------------------------
 // Dimensionalize state variables.
 void
-pylith::friction::TimeWeakening::_dimStateVars(double* const values,
+pylith::friction::TimeWeakening::_dimStateVars(PylithScalar* const values,
 					       const int nvalues) const
 { // _dimStateVars
   assert(_normalizer);
   assert(values);
   assert(nvalues == _TimeWeakening::numStateVars);
 
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
 
   values[s_time] *= timeScale;
 } // _dimStateVars
 
 // ----------------------------------------------------------------------
 // Compute friction from properties and state variables.
-double
-pylith::friction::TimeWeakening::_calcFriction(const double slip,
-						const double slipRate,
-						const double normalTraction,
-						const double* properties,
+PylithScalar
+pylith::friction::TimeWeakening::_calcFriction(const PylithScalar slip,
+						const PylithScalar slipRate,
+						const PylithScalar normalTraction,
+						const PylithScalar* properties,
 						const int numProperties,
-						const double* stateVars,
+						const PylithScalar* stateVars,
 						const int numStateVars)
 { // _calcFriction
   assert(properties);
@@ -260,8 +260,8 @@
   assert(numStateVars);
   assert(_TimeWeakening::numStateVars == numStateVars);
 
-  double friction = 0.0;
-  double mu_f = 0.0;
+  PylithScalar friction = 0.0;
+  PylithScalar mu_f = 0.0;
   if (normalTraction <= 0.0) {
     // if fault is in compression
     if (stateVars[s_time] < properties[p_Tc]) {
@@ -283,12 +283,12 @@
 // ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
-pylith::friction::TimeWeakening::_updateStateVars(const double slip,
-						  const double slipRate,
-						  const double normalTraction,
-						  double* const stateVars,
+pylith::friction::TimeWeakening::_updateStateVars(const PylithScalar slip,
+						  const PylithScalar slipRate,
+						  const PylithScalar normalTraction,
+						  PylithScalar* const stateVars,
 						  const int numStateVars,
-						  const double* properties,
+						  const PylithScalar* properties,
 						  const int numProperties)
 { // _updateStateVars
   assert(properties);
@@ -296,9 +296,9 @@
   assert(numStateVars);
   assert(_TimeWeakening::numStateVars == numStateVars);
 
-  const double tolerance = 1.0e-12;
+  const PylithScalar tolerance = 1.0e-12;
   if (slipRate > tolerance) {
-    const double dt = _dt;
+    const PylithScalar dt = _dt;
 
     stateVars[s_time] += dt;
   } else {

Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/TimeWeakening.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/TimeWeakening.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/TimeWeakening.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,15 +57,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues) const;
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues) const;
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -73,7 +73,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute friction from properties and state variables.
@@ -86,15 +86,15 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues) const;
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues) const;
 
   /** Nondimensionalize state variables.
    *
    * @param values Array of initial state values.
    * @param nvalues Number of values.
    */
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
 			   const int nvalues) const;
   
   /** Dimensionalize state variables.
@@ -102,7 +102,7 @@
    * @param values Array of initial state values.
    * @param nvalues Number of values.
    */
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
 			const int nvalues) const;
 
   /** Compute friction from properties and state variables.
@@ -115,12 +115,12 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  double _calcFriction(const double slip,
-		       const double slipRate,
-		       const double normalTraction,
-		       const double* properties,
+  PylithScalar _calcFriction(const PylithScalar slip,
+		       const PylithScalar slipRate,
+		       const PylithScalar normalTraction,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars);
 
   /** Update state variables (for next time step).
@@ -133,12 +133,12 @@
    * @param properties Properties at location.
    * @param numProperties Number of properties.
    */
-  void _updateStateVars(const double slip,
-      const double slipRate,
-      const double normalTraction,
-      double* const stateVars,
+  void _updateStateVars(const PylithScalar slip,
+      const PylithScalar slipRate,
+      const PylithScalar normalTraction,
+      PylithScalar* const stateVars,
       const int numStateVars,
-      const double* properties,
+      const PylithScalar* properties,
       const int numProperties);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -188,19 +188,19 @@
 // Compute properties from values in spatial database.
 void
 pylith::materials::DruckerPrager3D::_dbToProperties(
-				double* const propValues,
-				const double_array& dbValues)
+				PylithScalar* const propValues,
+				const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_DruckerPrager3D::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
-  const double frictionAngle = dbValues[db_frictionAngle];
-  const double cohesion = dbValues[db_cohesion];
-  const double dilatationAngle = dbValues[db_dilatationAngle];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
+  const PylithScalar frictionAngle = dbValues[db_frictionAngle];
+  const PylithScalar cohesion = dbValues[db_cohesion];
+  const PylithScalar dilatationAngle = dbValues[db_dilatationAngle];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0 || frictionAngle < 0.0
       || cohesion < 0.0 || dilatationAngle < 0.0
@@ -220,13 +220,13 @@
   if (fabs(frictionAngle - dilatationAngle) > 1.0e-6)
     _isJacobianSymmetric = false;
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
-  const double denomFriction = sqrt(3.0) * (3.0 - sin(frictionAngle));
-  const double denomDilatation = sqrt(3.0) * (3.0 - sin(dilatationAngle));
-  const double alphaYield = 2.0 * sin(frictionAngle)/denomFriction;
-  const double beta = 6.0 * cohesion * cos(frictionAngle)/denomFriction;
-  const double alphaFlow = 2.0 * sin(dilatationAngle)/denomDilatation;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar denomFriction = sqrt(3.0) * (3.0 - sin(frictionAngle));
+  const PylithScalar denomDilatation = sqrt(3.0) * (3.0 - sin(dilatationAngle));
+  const PylithScalar alphaYield = 2.0 * sin(frictionAngle)/denomFriction;
+  const PylithScalar beta = 6.0 * cohesion * cos(frictionAngle)/denomFriction;
+  const PylithScalar alphaFlow = 2.0 * sin(dilatationAngle)/denomDilatation;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -251,15 +251,15 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::DruckerPrager3D::_nondimProperties(double* const values,
+pylith::materials::DruckerPrager3D::_nondimProperties(PylithScalar* const values,
 					         const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
@@ -277,15 +277,15 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::DruckerPrager3D::_dimProperties(double* const values,
+pylith::materials::DruckerPrager3D::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
@@ -303,8 +303,8 @@
 // Compute initial state variables from values in spatial database.
 void
 pylith::materials::DruckerPrager3D::_dbToStateVars(
-				double* const stateValues,
-				const double_array& dbValues)
+				PylithScalar* const stateValues,
+				const scalar_array& dbValues)
 { // _dbToStateVars
   assert(0 != stateValues);
   const int numDBValues = dbValues.size();
@@ -314,7 +314,7 @@
   assert(totalSize == _numVarsQuadPt);
   assert(totalSize == numDBValues);
   memcpy(&stateValues[s_plasticStrain], &dbValues[db_plasticStrain],
-	 _tensorSize*sizeof(double));
+	 _tensorSize*sizeof(PylithScalar));
 
   PetscLogFlops(0);
 } // _dbToStateVars
@@ -322,7 +322,7 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize state variables.
 void
-pylith::materials::DruckerPrager3D::_nondimStateVars(double* const values,
+pylith::materials::DruckerPrager3D::_nondimStateVars(PylithScalar* const values,
 						const int nvalues) const
 { // _nondimStateVars
   assert(0 != _normalizer);
@@ -335,7 +335,7 @@
 // ----------------------------------------------------------------------
 // Dimensionalize state variables.
 void
-pylith::materials::DruckerPrager3D::_dimStateVars(double* const values,
+pylith::materials::DruckerPrager3D::_dimStateVars(PylithScalar* const values,
 					     const int nvalues) const
 { // _dimStateVars
   assert(0 != _normalizer);
@@ -348,10 +348,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::DruckerPrager3D::_calcDensity(double* const density,
-					    const double* properties,
+pylith::materials::DruckerPrager3D::_calcDensity(PylithScalar* const density,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* stateVars,
+					    const PylithScalar* stateVars,
 					    const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -363,11 +363,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::DruckerPrager3D::_stableTimeStepImplicit(
-				  const double* properties,
+				  const PylithScalar* properties,
 				  const int numProperties,
-				  const double* stateVars,
+				  const PylithScalar* stateVars,
 				  const int numStateVars) const
 { // _stableTimeStepImplicit
   assert(0 != properties);
@@ -376,7 +376,7 @@
   assert(_numVarsQuadPt == numStateVars);
   // It's unclear what to do for an elasto-plastic material, which has no
   // inherent time scale. For now, just set dtStable to a large value.
-  const double dtStable = pylith::PYLITH_MAXDOUBLE;
+  const PylithScalar dtStable = pylith::PYLITH_MAXDOUBLE;
   PetscLogFlops(0);
   return dtStable;
 } // _stableTimeStepImplicit
@@ -386,17 +386,17 @@
 // material.
 void
 pylith::materials::DruckerPrager3D::_calcStressElastic(
-				         double* const stress,
+				         PylithScalar* const stress,
 					 const int stressSize,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize,
 					 const bool computeStateVars)
 { // _calcStressElastic
@@ -413,19 +413,19 @@
   assert(0 != initialStrain);
   assert(_DruckerPrager3D::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double mu2 = 2.0 * mu;
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar mu2 = 2.0 * mu;
 
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e33 = totalStrain[2] - initialStrain[2];
-  const double e12 = totalStrain[3] - initialStrain[3];
-  const double e23 = totalStrain[4] - initialStrain[4];
-  const double e13 = totalStrain[5] - initialStrain[5];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e33 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e12 = totalStrain[3] - initialStrain[3];
+  const PylithScalar e23 = totalStrain[4] - initialStrain[4];
+  const PylithScalar e13 = totalStrain[5] - initialStrain[5];
   
-  const double traceStrainTpdt = e11 + e22 + e33;
-  const double s123 = lambda * traceStrainTpdt;
+  const PylithScalar traceStrainTpdt = e11 + e22 + e33;
+  const PylithScalar s123 = lambda * traceStrainTpdt;
 
   stress[0] = s123 + mu2*e11 + initialStress[0];
   stress[1] = s123 + mu2*e22 + initialStress[1];
@@ -442,17 +442,17 @@
 // material.
 void
 pylith::materials::DruckerPrager3D::_calcStressElastoplastic(
-					double* const stress,
+					PylithScalar* const stress,
 					const int stressSize,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize,
 					const bool computeStateVars)
 { // _calcStressElastoplastic
@@ -470,64 +470,64 @@
   assert(_DruckerPrager3D::tensorSize == initialStrainSize);
 
   const int tensorSize = _tensorSize;
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
     
   // We need to compute the plastic strain increment if state variables are
   // from previous time step.
   if (computeStateVars) {
 
-    const double alphaYield = properties[p_alphaYield];
-    const double beta = properties[p_beta];
-    const double alphaFlow = properties[p_alphaFlow];
-    const double mu2 = 2.0 * mu;
-    const double bulkModulus = lambda + mu2/3.0;
-    const double ae = 1.0/mu2;
-    const double am = 1.0/(3.0 * bulkModulus);
+    const PylithScalar alphaYield = properties[p_alphaYield];
+    const PylithScalar beta = properties[p_beta];
+    const PylithScalar alphaFlow = properties[p_alphaFlow];
+    const PylithScalar mu2 = 2.0 * mu;
+    const PylithScalar bulkModulus = lambda + mu2/3.0;
+    const PylithScalar ae = 1.0/mu2;
+    const PylithScalar am = 1.0/(3.0 * bulkModulus);
 
-    const double plasticStrainT[] = {stateVars[s_plasticStrain],
+    const PylithScalar plasticStrainT[] = {stateVars[s_plasticStrain],
 				     stateVars[s_plasticStrain + 1],
 				     stateVars[s_plasticStrain + 2],
 				     stateVars[s_plasticStrain + 3],
 				     stateVars[s_plasticStrain + 4],
 				     stateVars[s_plasticStrain + 5]};
-    const double meanPlasticStrainT = (plasticStrainT[0] +
+    const PylithScalar meanPlasticStrainT = (plasticStrainT[0] +
 				       plasticStrainT[1] +
 				       plasticStrainT[2])/3.0;
-    double devPlasticStrainT[tensorSize];
+    PylithScalar devPlasticStrainT[tensorSize];
     pylith::materials::ElasticMaterial::calcDeviatoric3D(devPlasticStrainT,
 							 plasticStrainT,
 							 meanPlasticStrainT);
 
-    const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+    const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
     // Initial stress values
-    const double meanStressInitial = (initialStress[0] +
+    const PylithScalar meanStressInitial = (initialStress[0] +
 				      initialStress[1] +
 				      initialStress[2])/3.0;
-    double devStressInitial[tensorSize];
+    PylithScalar devStressInitial[tensorSize];
     pylith::materials::ElasticMaterial::calcDeviatoric3D(devStressInitial,
 							 initialStress,
 							 meanStressInitial);
 
     // Initial strain values
-    const double meanStrainInitial = (initialStrain[0] +
+    const PylithScalar meanStrainInitial = (initialStrain[0] +
 				      initialStrain[1] +
 				      initialStrain[2])/3.0;
-    double devStrainInitial[tensorSize];
+    PylithScalar devStrainInitial[tensorSize];
     pylith::materials::ElasticMaterial::calcDeviatoric3D(devStrainInitial,
 							 initialStrain,
 							 meanStrainInitial);
 
     // Values for current time step
-    const double e11 = totalStrain[0];
-    const double e22 = totalStrain[1];
-    const double e33 = totalStrain[2];
-    const double meanStrainTpdt = (e11 + e22 + e33)/3.0;
-    const double meanStrainPPTpdt = meanStrainTpdt - meanPlasticStrainT -
+    const PylithScalar e11 = totalStrain[0];
+    const PylithScalar e22 = totalStrain[1];
+    const PylithScalar e33 = totalStrain[2];
+    const PylithScalar meanStrainTpdt = (e11 + e22 + e33)/3.0;
+    const PylithScalar meanStrainPPTpdt = meanStrainTpdt - meanPlasticStrainT -
       meanStrainInitial;
 
-    const double strainPPTpdt[] =
+    const PylithScalar strainPPTpdt[] =
       { totalStrain[0] - meanStrainTpdt - devPlasticStrainT[0] -
 	devStrainInitial[0],
 	totalStrain[1] - meanStrainTpdt - devPlasticStrainT[1] -
@@ -540,18 +540,18 @@
 
     // Compute trial elastic stresses and yield function to see if yield should
     // occur.
-    const double trialDevStress[] = { strainPPTpdt[0]/ae + devStressInitial[0],
+    const PylithScalar trialDevStress[] = { strainPPTpdt[0]/ae + devStressInitial[0],
 				      strainPPTpdt[1]/ae + devStressInitial[1],
 				      strainPPTpdt[2]/ae + devStressInitial[2],
 				      strainPPTpdt[3]/ae + devStressInitial[3],
 				      strainPPTpdt[4]/ae + devStressInitial[4],
 				      strainPPTpdt[5]/ae + devStressInitial[5]};
-    const double trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
-    const double stressInvar2 =
+    const PylithScalar trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
+    const PylithScalar stressInvar2 =
       sqrt(0.5 *
 	   pylith::materials::ElasticMaterial::scalarProduct3D(trialDevStress,
 							       trialDevStress));
-    const double yieldFunction = 3.0 * alphaYield * trialMeanStress +
+    const PylithScalar yieldFunction = 3.0 * alphaYield * trialMeanStress +
       stressInvar2 - beta;
 #if 0 // DEBUGGING
     std::cout << "Function _calcStressElastoPlastic: elastic" << std::endl;
@@ -565,24 +565,24 @@
 
     // If yield function is greater than zero, compute elastoplastic stress.
     if (yieldFunction >= 0.0) {
-      const double devStressInitialProd = 
+      const PylithScalar devStressInitialProd = 
 	pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							    devStressInitial);
-      const double strainPPTpdtProd =
+      const PylithScalar strainPPTpdtProd =
 	pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							    strainPPTpdt);
-      const double d =
+      const PylithScalar d =
 	sqrt(ae * ae * devStressInitialProd + 2.0 * ae *
 	   pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							       strainPPTpdt) +
 	     strainPPTpdtProd);
-      const double plasticMult = 2.0 * ae * am *
+      const PylithScalar plasticMult = 2.0 * ae * am *
 	(3.0 * alphaYield * meanStrainPPTpdt/am + d/(sqrt(2.0) * ae) - beta)/
 	(6.0 * alphaYield * alphaFlow * ae + am);
-      const double meanStressTpdt =
+      const PylithScalar meanStressTpdt =
 	(meanStrainPPTpdt - plasticMult * alphaFlow)/am + meanStressInitial;
-      double deltaDevPlasticStrain = 0.0;
-      double devStressTpdt = 0.0;
+      PylithScalar deltaDevPlasticStrain = 0.0;
+      PylithScalar devStressTpdt = 0.0;
       for (int iComp=0; iComp < tensorSize; ++iComp) {
 	deltaDevPlasticStrain = plasticMult *(strainPPTpdt[iComp] +
 					      ae * devStressInitial[iComp])/
@@ -596,7 +596,7 @@
 
     } else {
       // No plastic strain.
-      const double meanStressTpdt = meanStrainPPTpdt/am + meanStressInitial;
+      const PylithScalar meanStressTpdt = meanStrainPPTpdt/am + meanStressInitial;
       stress[0] = strainPPTpdt[0]/ae + devStressInitial[0] + meanStressTpdt; 
       stress[1] = strainPPTpdt[1]/ae + devStressInitial[1] + meanStressTpdt; 
       stress[2] = strainPPTpdt[2]/ae + devStressInitial[2] + meanStressTpdt; 
@@ -608,23 +608,23 @@
     // If state variables have already been updated, the plastic strain for the
     // time step has already been computed.
   } else {
-    const double mu2 = 2.0 * mu;
-    const double plasticStrainTpdt[] = {stateVars[s_plasticStrain],
+    const PylithScalar mu2 = 2.0 * mu;
+    const PylithScalar plasticStrainTpdt[] = {stateVars[s_plasticStrain],
 					stateVars[s_plasticStrain + 1],
 					stateVars[s_plasticStrain + 2],
 					stateVars[s_plasticStrain + 3],
 					stateVars[s_plasticStrain + 4],
 					stateVars[s_plasticStrain + 5]};
 
-    const double e11 = totalStrain[0] - plasticStrainTpdt[0] - initialStrain[0];
-    const double e22 = totalStrain[1] - plasticStrainTpdt[1] - initialStrain[1];
-    const double e33 = totalStrain[2] - plasticStrainTpdt[2] - initialStrain[2];
-    const double e12 = totalStrain[3] - plasticStrainTpdt[3] - initialStrain[3];
-    const double e23 = totalStrain[4] - plasticStrainTpdt[4] - initialStrain[4];
-    const double e13 = totalStrain[5] - plasticStrainTpdt[5] - initialStrain[5];
+    const PylithScalar e11 = totalStrain[0] - plasticStrainTpdt[0] - initialStrain[0];
+    const PylithScalar e22 = totalStrain[1] - plasticStrainTpdt[1] - initialStrain[1];
+    const PylithScalar e33 = totalStrain[2] - plasticStrainTpdt[2] - initialStrain[2];
+    const PylithScalar e12 = totalStrain[3] - plasticStrainTpdt[3] - initialStrain[3];
+    const PylithScalar e23 = totalStrain[4] - plasticStrainTpdt[4] - initialStrain[4];
+    const PylithScalar e13 = totalStrain[5] - plasticStrainTpdt[5] - initialStrain[5];
 
-    const double traceStrainTpdt = e11 + e22 + e33;
-    const double s123 = lambda * traceStrainTpdt;
+    const PylithScalar traceStrainTpdt = e11 + e22 + e33;
+    const PylithScalar s123 = lambda * traceStrainTpdt;
 
     stress[0] = s123 + mu2 * e11 + initialStress[0];
     stress[1] = s123 + mu2 * e22 + initialStress[1];
@@ -637,22 +637,22 @@
 
   } // else
 #if 0 // DEBUGGING
-  const double alphaYield = properties[p_alphaYield];
-  const double beta = properties[p_beta];
-  const double alphaFlow = properties[p_alphaFlow];
-  const double meanStressTest = (stress[0] + stress[1] + stress[2])/3.0;
-  const double devStressTest[] = { stress[0] - meanStressTest,
+  const PylithScalar alphaYield = properties[p_alphaYield];
+  const PylithScalar beta = properties[p_beta];
+  const PylithScalar alphaFlow = properties[p_alphaFlow];
+  const PylithScalar meanStressTest = (stress[0] + stress[1] + stress[2])/3.0;
+  const PylithScalar devStressTest[] = { stress[0] - meanStressTest,
 				   stress[1] - meanStressTest,
 				   stress[2] - meanStressTest,
 				   stress[3],
 				   stress[4],
 				   stress[5]};
-  const double stressInvar2Test =
+  const PylithScalar stressInvar2Test =
     sqrt(0.5 *
 	 pylith::materials::ElasticMaterial::scalarProduct3D(devStressTest,
 							     devStressTest));
   
-  const double yieldFunctionTest = 3.0 * alphaYield * meanStressTest +
+  const PylithScalar yieldFunctionTest = 3.0 * alphaYield * meanStressTest +
       stressInvar2Test - beta;
   std::cout << "Function _calcStressElastoPlastic: end" << std::endl;
   std::cout << "  alphaYield:        " << alphaYield << std::endl;
@@ -668,17 +668,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::DruckerPrager3D::_calcElasticConstsElastic(
-				         double* const elasticConsts,
+				         PylithScalar* const elasticConsts,
 					 const int numElasticConsts,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize)
 { // _calcElasticConstsElastic
   assert(0 != elasticConsts);
@@ -694,11 +694,11 @@
   assert(0 != initialStrain);
   assert(_DruckerPrager3D::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
 
   elasticConsts[ 0] = lambda2mu; // C1111
   elasticConsts[ 1] = lambda; // C1122
@@ -745,17 +745,17 @@
 // as an elastoplastic material.
 void
 pylith::materials::DruckerPrager3D::_calcElasticConstsElastoplastic(
-				         double* const elasticConsts,
+				         PylithScalar* const elasticConsts,
 					 const int numElasticConsts,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize)
 { // _calcElasticConstsElastoplastic
   assert(0 != elasticConsts);
@@ -774,59 +774,59 @@
   // Duplicate functionality of _calcStressElastoplastic
   // Get properties
   const int tensorSize = _tensorSize;
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double alphaYield = properties[p_alphaYield];
-  const double beta = properties[p_beta];
-  const double alphaFlow = properties[p_alphaFlow];
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2/3.0;
-  const double ae = 1.0/mu2;
-  const double am = 1.0/(3.0 * bulkModulus);
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar alphaYield = properties[p_alphaYield];
+  const PylithScalar beta = properties[p_beta];
+  const PylithScalar alphaFlow = properties[p_alphaFlow];
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2/3.0;
+  const PylithScalar ae = 1.0/mu2;
+  const PylithScalar am = 1.0/(3.0 * bulkModulus);
   
   // Get state variables from previous time step
-  const double plasticStrainT[] = {stateVars[s_plasticStrain],
+  const PylithScalar plasticStrainT[] = {stateVars[s_plasticStrain],
 				   stateVars[s_plasticStrain + 1],
 				   stateVars[s_plasticStrain + 2],
 				   stateVars[s_plasticStrain + 3],
 				   stateVars[s_plasticStrain + 4],
 				   stateVars[s_plasticStrain + 5]};
-  const double meanPlasticStrainT = (plasticStrainT[0] +
+  const PylithScalar meanPlasticStrainT = (plasticStrainT[0] +
 				     plasticStrainT[1] +
 				     plasticStrainT[2])/3.0;
-  double devPlasticStrainT[tensorSize];
+  PylithScalar devPlasticStrainT[tensorSize];
   pylith::materials::ElasticMaterial::calcDeviatoric3D(devPlasticStrainT,
 						       plasticStrainT,
 						       meanPlasticStrainT);
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
   // Initial stress values
-  const double meanStressInitial = (initialStress[0] +
+  const PylithScalar meanStressInitial = (initialStress[0] +
 				    initialStress[1] +
 				    initialStress[2])/3.0;
-  double devStressInitial[tensorSize];
+  PylithScalar devStressInitial[tensorSize];
   pylith::materials::ElasticMaterial::calcDeviatoric3D(devStressInitial,
 						       initialStress,
 						       meanStressInitial);
 
   // Initial strain values
-  const double meanStrainInitial = (initialStrain[0] +
+  const PylithScalar meanStrainInitial = (initialStrain[0] +
 				    initialStrain[1] +
 				    initialStrain[2])/3.0;
-  double devStrainInitial[tensorSize];
+  PylithScalar devStrainInitial[tensorSize];
   pylith::materials::ElasticMaterial::calcDeviatoric3D(devStrainInitial,
 						       initialStrain,
 						       meanStrainInitial);
 
   // Values for current time step
-  const double meanStrainTpdt = (totalStrain[0] +
+  const PylithScalar meanStrainTpdt = (totalStrain[0] +
 				 totalStrain[1] +
 				 totalStrain[2])/3.0;
-  const double meanStrainPPTpdt = meanStrainTpdt - meanPlasticStrainT -
+  const PylithScalar meanStrainPPTpdt = meanStrainTpdt - meanPlasticStrainT -
     meanStrainInitial;
   
-  const double strainPPTpdt[] =
+  const PylithScalar strainPPTpdt[] =
     { totalStrain[0] - meanStrainTpdt - devPlasticStrainT[0] -
       devStrainInitial[0],
       totalStrain[1] - meanStrainTpdt - devPlasticStrainT[1] -
@@ -839,18 +839,18 @@
   
   // Compute trial elastic stresses and yield function to see if yield should
   // occur.
-  const double trialDevStress[] = { strainPPTpdt[0]/ae + devStressInitial[0],
+  const PylithScalar trialDevStress[] = { strainPPTpdt[0]/ae + devStressInitial[0],
 				    strainPPTpdt[1]/ae + devStressInitial[1],
 				    strainPPTpdt[2]/ae + devStressInitial[2],
 				    strainPPTpdt[3]/ae + devStressInitial[3],
 				    strainPPTpdt[4]/ae + devStressInitial[4],
 				    strainPPTpdt[5]/ae + devStressInitial[5]};
-  const double trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
-  const double stressInvar2 =
+  const PylithScalar trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
+  const PylithScalar stressInvar2 =
     sqrt(0.5 *
 	 pylith::materials::ElasticMaterial::scalarProduct3D(trialDevStress,
 							     trialDevStress));
-  const double yieldFunction = 3.0 * alphaYield * trialMeanStress +
+  const PylithScalar yieldFunction = 3.0 * alphaYield * trialMeanStress +
     stressInvar2 - beta;
 #if 0 // DEBUGGING
   std::cout << "Function _calcElasticConstsElastoPlastic:" << std::endl;
@@ -865,46 +865,46 @@
   // If yield function is greater than zero, compute elastoplastic stress and
   // corresponding tangent matrix.
   if (yieldFunction >= 0.0) {
-    const double devStressInitialProd = 
+    const PylithScalar devStressInitialProd = 
       pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							  devStressInitial);
-    const double strainPPTpdtProd =
+    const PylithScalar strainPPTpdtProd =
       pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							  strainPPTpdt);
-    const double d = 
+    const PylithScalar d = 
       sqrt(ae * ae * devStressInitialProd + 2.0 * ae *
 	   pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							       strainPPTpdt) +
 	   strainPPTpdtProd);
-    const double plasticFac = 2.0 * ae * am/
+    const PylithScalar plasticFac = 2.0 * ae * am/
       (6.0 * alphaYield * alphaFlow * ae + am);
-    const double meanStrainFac = 3.0 * alphaYield/am;
-    const double dFac = 1.0/(sqrt(2.0) * ae);
-    const double plasticMult = plasticFac *
+    const PylithScalar meanStrainFac = 3.0 * alphaYield/am;
+    const PylithScalar dFac = 1.0/(sqrt(2.0) * ae);
+    const PylithScalar plasticMult = plasticFac *
       (meanStrainFac * meanStrainPPTpdt + dFac * d - beta);
 
     // Define some constants, vectors, and matrices.
-    const double third = 1.0/3.0;
-    const double dEdEpsilon[6][6] = {
+    const PylithScalar third = 1.0/3.0;
+    const PylithScalar dEdEpsilon[6][6] = {
       { 2.0 * third,      -third,      -third, 0.0, 0.0, 0.0},
       {      -third, 2.0 * third,      -third, 0.0, 0.0, 0.0},
       {      -third,      -third, 2.0 * third, 0.0, 0.0, 0.0},
       {         0.0,         0.0,         0.0, 1.0, 0.0, 0.0},
       {         0.0,         0.0,         0.0, 0.0, 1.0, 0.0},
       {         0.0,         0.0,         0.0, 0.0, 0.0, 1.0}};
-    const double vec1[] = {strainPPTpdt[0] + ae * devStressInitial[0],
+    const PylithScalar vec1[] = {strainPPTpdt[0] + ae * devStressInitial[0],
 			   strainPPTpdt[1] + ae * devStressInitial[1],
 			   strainPPTpdt[2] + ae * devStressInitial[2],
 			   strainPPTpdt[3] + ae * devStressInitial[3],
 			   strainPPTpdt[4] + ae * devStressInitial[4],
 			   strainPPTpdt[5] + ae * devStressInitial[5]};
-    const double dDdEpsilon[] = {vec1[0]/d,
+    const PylithScalar dDdEpsilon[] = {vec1[0]/d,
 				 vec1[1]/d,
 				 vec1[2]/d,
 				 2.0 * vec1[3]/d,
 				 2.0 * vec1[4]/d,
 				 2.0 * vec1[5]/d};
-    const double dLambdadEpsilon[] = {
+    const PylithScalar dLambdadEpsilon[] = {
       plasticFac * (alphaYield/am + dFac * dDdEpsilon[0]),
       plasticFac * (alphaYield/am + dFac * dDdEpsilon[1]),
       plasticFac * (alphaYield/am + dFac * dDdEpsilon[2]),
@@ -912,8 +912,8 @@
       plasticFac * (                dFac * dDdEpsilon[4]),
       plasticFac * (                dFac * dDdEpsilon[5])};
     
-    const double dFac2 = 1.0/(sqrt(2.0) * d);
-    double dDeltaEdEpsilon = 0.0;
+    const PylithScalar dFac2 = 1.0/(sqrt(2.0) * d);
+    PylithScalar dDeltaEdEpsilon = 0.0;
 
     // Compute elasticity matrix.
     for (int iComp=0; iComp < tensorSize; ++iComp) {
@@ -934,7 +934,7 @@
 
   } else {
     // No plastic strain.
-    const double lambda2mu = lambda + mu2;
+    const PylithScalar lambda2mu = lambda + mu2;
     elasticConsts[ 0] = lambda2mu; // C1111
     elasticConsts[ 1] = lambda; // C1122
     elasticConsts[ 2] = lambda; // C1133
@@ -981,15 +981,15 @@
 // Update state variables.
 void
 pylith::materials::DruckerPrager3D::_updateStateVarsElastic(
-				    double* const stateVars,
+				    PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize)
 { // _updateStateVarsElastic
   assert(0 != stateVars);
@@ -1014,15 +1014,15 @@
 // Update state variables.
 void
 pylith::materials::DruckerPrager3D::_updateStateVarsElastoplastic(
-				    double* const stateVars,
+				    PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize)
 { // _updateStateVarsElastoplastic
   assert(0 != stateVars);
@@ -1042,59 +1042,59 @@
   // since otherwise we would have to redo a lot of calculations.
 
   const int tensorSize = _tensorSize;
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double alphaYield = properties[p_alphaYield];
-  const double beta = properties[p_beta];
-  const double alphaFlow = properties[p_alphaFlow];
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2/3.0;
-  const double ae = 1.0/mu2;
-  const double am = 1.0/(3.0 * bulkModulus);
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar alphaYield = properties[p_alphaYield];
+  const PylithScalar beta = properties[p_beta];
+  const PylithScalar alphaFlow = properties[p_alphaFlow];
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2/3.0;
+  const PylithScalar ae = 1.0/mu2;
+  const PylithScalar am = 1.0/(3.0 * bulkModulus);
 
-  const double plasticStrainT[] = {stateVars[s_plasticStrain],
+  const PylithScalar plasticStrainT[] = {stateVars[s_plasticStrain],
 				   stateVars[s_plasticStrain + 1],
 				   stateVars[s_plasticStrain + 2],
 				   stateVars[s_plasticStrain + 3],
 				   stateVars[s_plasticStrain + 4],
 				   stateVars[s_plasticStrain + 5]};
-  const double meanPlasticStrainT = (plasticStrainT[0] +
+  const PylithScalar meanPlasticStrainT = (plasticStrainT[0] +
 				     plasticStrainT[1] +
 				     plasticStrainT[2])/3.0;
-  double devPlasticStrainT[tensorSize];
+  PylithScalar devPlasticStrainT[tensorSize];
   pylith::materials::ElasticMaterial::calcDeviatoric3D(devPlasticStrainT,
 						       plasticStrainT,
 						       meanPlasticStrainT);
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
   // Initial stress values
-  const double meanStressInitial = (initialStress[0] +
+  const PylithScalar meanStressInitial = (initialStress[0] +
 				    initialStress[1] +
 				    initialStress[2])/3.0;
-  double devStressInitial[tensorSize];
+  PylithScalar devStressInitial[tensorSize];
   pylith::materials::ElasticMaterial::calcDeviatoric3D(devStressInitial,
 						       initialStress,
 						       meanStressInitial);
 
   // Initial strain values
-  const double meanStrainInitial = (initialStrain[0] +
+  const PylithScalar meanStrainInitial = (initialStrain[0] +
 				    initialStrain[1] +
 				    initialStrain[2])/3.0;
-  double devStrainInitial[tensorSize];
+  PylithScalar devStrainInitial[tensorSize];
   pylith::materials::ElasticMaterial::calcDeviatoric3D(devStrainInitial,
 						       initialStrain,
 						       meanStrainInitial);
 
   // Values for current time step
-  const double e11 = totalStrain[0];
-  const double e22 = totalStrain[1];
-  const double e33 = totalStrain[2];
-  const double meanStrainTpdt = (e11 + e22 + e33)/3.0;
-  const double meanStrainPPTpdt = meanStrainTpdt - meanPlasticStrainT -
+  const PylithScalar e11 = totalStrain[0];
+  const PylithScalar e22 = totalStrain[1];
+  const PylithScalar e33 = totalStrain[2];
+  const PylithScalar meanStrainTpdt = (e11 + e22 + e33)/3.0;
+  const PylithScalar meanStrainPPTpdt = meanStrainTpdt - meanPlasticStrainT -
     meanStrainInitial;
 
-  const double strainPPTpdt[] =
+  const PylithScalar strainPPTpdt[] =
     { totalStrain[0] - meanStrainTpdt - devPlasticStrainT[0] -
       devStrainInitial[0],
       totalStrain[1] - meanStrainTpdt - devPlasticStrainT[1] -
@@ -1107,18 +1107,18 @@
 
   // Compute trial elastic stresses and yield function to see if yield should
   // occur.
-  const double trialDevStress[] = { strainPPTpdt[0]/ae + devStressInitial[0],
+  const PylithScalar trialDevStress[] = { strainPPTpdt[0]/ae + devStressInitial[0],
 				    strainPPTpdt[1]/ae + devStressInitial[1],
 				    strainPPTpdt[2]/ae + devStressInitial[2],
 				    strainPPTpdt[3]/ae + devStressInitial[3],
 				    strainPPTpdt[4]/ae + devStressInitial[4],
 				    strainPPTpdt[5]/ae + devStressInitial[5]};
-  const double trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
-  const double stressInvar2 =
+  const PylithScalar trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
+  const PylithScalar stressInvar2 =
     sqrt(0.5 *
 	 pylith::materials::ElasticMaterial::scalarProduct3D(trialDevStress,
 							     trialDevStress));
-  const double yieldFunction = 3.0 * alphaYield * trialMeanStress +
+  const PylithScalar yieldFunction = 3.0 * alphaYield * trialMeanStress +
     stressInvar2 - beta;
 #if 0 // DEBUGGING
   std::cout << "Function _updateStateVarsElastoPlastic:" << std::endl;
@@ -1133,22 +1133,22 @@
   // If yield function is greater than zero, compute plastic strains.
   // Otherwise, plastic strains remain the same.
   if (yieldFunction >= 0.0) {
-    const double devStressInitialProd = 
+    const PylithScalar devStressInitialProd = 
       pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							  devStressInitial);
-    const double strainPPTpdtProd =
+    const PylithScalar strainPPTpdtProd =
       pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							  strainPPTpdt);
-    const double d =
+    const PylithScalar d =
       sqrt(ae * ae * devStressInitialProd + 2.0 * ae *
 	   pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							       strainPPTpdt) +
 	   strainPPTpdtProd);
-    const double plasticMult = 2.0 * ae * am *
+    const PylithScalar plasticMult = 2.0 * ae * am *
       (3.0 * alphaYield * meanStrainPPTpdt/am + d/(sqrt(2.0) * ae) - beta)/
       (6.0 * alphaYield * alphaFlow * ae + am);
-    const double deltaMeanPlasticStrain = plasticMult * alphaFlow;
-    double deltaDevPlasticStrain = 0.0;
+    const PylithScalar deltaMeanPlasticStrain = plasticMult * alphaFlow;
+    PylithScalar deltaDevPlasticStrain = 0.0;
     for (int iComp=0; iComp < tensorSize; ++iComp) {
       deltaDevPlasticStrain = plasticMult *(strainPPTpdt[iComp] +
 					    ae * devStressInitial[iComp])/

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -56,7 +56,7 @@
    *
    * @param dt Current time step.
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -76,15 +76,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -92,7 +92,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute initial state variables from values in spatial database.
@@ -100,15 +100,15 @@
    * @param stateValues Array of state variable values.
    * @param dbValues Array of database values.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues);
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues);
 
   /** Nondimensionalize state variables..
    *
    * @param values Array of state variables.
    * @param nvalues Number of values.
    */
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
 			const int nvalues) const;
 
   /** Dimensionalize state variables.
@@ -116,7 +116,7 @@
    * @param values Array of state variables.
    * @param nvalues Number of values.
    */
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
 		     const int nvalues) const;
 
   /** Compute density from properties.
@@ -127,10 +127,10 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -152,17 +152,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -181,17 +181,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-		          const double* initialStress,
+		          const PylithScalar* initialStress,
 		          const int initialStressSize,
-		          const double* initialStrain,
+		          const PylithScalar* initialStrain,
 		          const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -203,9 +203,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   /** Update state variables (for next time step).
@@ -221,15 +221,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVars(double* const stateVars,
+  void _updateStateVars(PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* totalStrain,
+			const PylithScalar* totalStrain,
 			const int strainSize,
-			const double* initialStress,
+			const PylithScalar* initialStress,
 			const int initialStressSize,
-			const double* initialStrain,
+			const PylithScalar* initialStrain,
 			const int initialStrainSize);
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
@@ -237,46 +237,46 @@
 
   /// Member prototype for _calcStress()
   typedef void (pylith::materials::DruckerPrager3D::*calcStress_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
      const bool);
 
   /// Member prototype for _calcElasticConsts()
   typedef void (pylith::materials::DruckerPrager3D::*calcElasticConsts_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   /// Member prototype for _updateStateVars()
   typedef void (pylith::materials::DruckerPrager3D::*updateStateVars_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -298,17 +298,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressElastic(double* const stress,
+  void _calcStressElastic(PylithScalar* const stress,
 			  const int stressSize,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize,
 			  const bool computeStateVars);
 
@@ -328,17 +328,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressElastoplastic(double* const stress,
+  void _calcStressElastoplastic(PylithScalar* const stress,
 				const int stressSize,
-				const double* properties,
+				const PylithScalar* properties,
 				const int numProperties,
-				const double* stateVars,
+				const PylithScalar* stateVars,
 				const int numStateVars,
-				const double* totalStrain,
+				const PylithScalar* totalStrain,
 				const int strainSize,
-				const double* initialStress,
+				const PylithScalar* initialStress,
 				const int initialStressSize,
-				const double* initialStrain,
+				const PylithScalar* initialStrain,
 				const int initialStrainSize,
 				const bool computeStateVars);
 
@@ -358,17 +358,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsElastic(double* const elasticConsts,
+  void _calcElasticConstsElastic(PylithScalar* const elasticConsts,
 				 const int numElasticConsts,
-				 const double* properties,
+				 const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars,
-				 const double* totalStrain,
+				 const PylithScalar* totalStrain,
 				 const int strainSize,
-				 const double* initialStress,
+				 const PylithScalar* initialStress,
 				 const int initialStressSize,
-				 const double* initialStrain,
+				 const PylithScalar* initialStrain,
 				 const int initialStrainSize);
 
   /** Compute derivatives of elasticity matrix from properties as an
@@ -387,17 +387,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsElastoplastic(double* const elasticConsts,
+  void _calcElasticConstsElastoplastic(PylithScalar* const elasticConsts,
 				       const int numElasticConsts,
-				       const double* properties,
+				       const PylithScalar* properties,
 				       const int numProperties,
-				       const double* stateVars,
+				       const PylithScalar* stateVars,
 				       const int numStateVars,
-				       const double* totalStrain,
+				       const PylithScalar* totalStrain,
 				       const int strainSize,
-				       const double* initialStress,
+				       const PylithScalar* initialStress,
 				       const int initialStressSize,
-				       const double* initialStrain,
+				       const PylithScalar* initialStrain,
 				       const int initialStrainSize);
   
   /** Update state variables after solve as an elastic material.
@@ -413,15 +413,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsElastic(double* const stateVars,
+  void _updateStateVarsElastic(PylithScalar* const stateVars,
 			       const int numStateVars,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize);
 
   /** Update state variables after solve as an elastoplastic material.
@@ -433,15 +433,15 @@
    * @param initialState Initial state values.
    * @param initialStateSize Size of initial state array.
    */
-  void _updateStateVarsElastoplastic(double* const stateVars,
+  void _updateStateVarsElastoplastic(PylithScalar* const stateVars,
 				     const int numStateVars,
-				     const double* properties,
+				     const PylithScalar* properties,
 				     const int numProperties,
-				     const double* totalStrain,
+				     const PylithScalar* totalStrain,
 				     const int strainSize,
-				     const double* initialStress,
+				     const PylithScalar* initialStress,
 				     const int initialStressSize,
-				     const double* initialStrain,
+				     const PylithScalar* initialStrain,
 				     const int initialStrainSize);
 
   /** Compute scalar product, assuming vector form of a tensor.
@@ -450,23 +450,23 @@
    * @param tensor2 Second tensor.
    */
   /*
-  double _scalarProduct(const double* tensor1,
-			const double* tensor2) const;
+  PylithScalar _scalarProduct(const PylithScalar* tensor1,
+			const PylithScalar* tensor2) const;
   */
 
   /** Compute tensor mean, assuming vector form of a tensor.
    *
    * @param vec Tensor represented as a vector.
    */
-  double _calcMean(const double* vec) const;
+  PylithScalar _calcMean(const PylithScalar* vec) const;
 
   /** Compute deviatoric components, assuming vector form of a tensor.
    *
    * @param vec Tensor represented as a vector.
    * @param vecMean Tensor mean.
    */
-  double _calcDeviatoric(const double* vec,
-			 const double vecMean) const;
+  PylithScalar _calcDeviatoric(const PylithScalar* vec,
+			 const PylithScalar vecMean) const;
 
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/DruckerPrager3D.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -26,7 +26,7 @@
 // Set current time step.
 inline
 void
-pylith::materials::DruckerPrager3D::timeStep(const double dt) {
+pylith::materials::DruckerPrager3D::timeStep(const PylithScalar dt) {
   // Not sure what to do here.  If we are using full Newton the Jacobian will
   // always need reforming, but SNES may opt not to reform it sometimes.
   _needNewJacobian = true;
@@ -36,17 +36,17 @@
 // Compute stress tensor from parameters.
 inline
 void
-pylith::materials::DruckerPrager3D::_calcStress(double* const stress,
+pylith::materials::DruckerPrager3D::_calcStress(PylithScalar* const stress,
 						const int stressSize,
-						const double* properties,
+						const PylithScalar* properties,
 						const int numProperties,
-						const double* stateVars,
+						const PylithScalar* stateVars,
 						const int numStateVars,
-						const double* totalStrain,
+						const PylithScalar* totalStrain,
 						const int strainSize,
-						const double* initialStress,
+						const PylithScalar* initialStress,
 						const int initialStressSize,
-						const double* initialStrain,
+						const PylithScalar* initialStrain,
 						const int initialStrainSize,
 						const bool computeStateVars)
 {
@@ -64,17 +64,17 @@
 inline
 void
 pylith::materials::DruckerPrager3D::_calcElasticConsts(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 {
   assert(0 != _calcElasticConstsFn);
@@ -90,15 +90,15 @@
 inline
 void
 pylith::materials::DruckerPrager3D::_updateStateVars(
-					double* const stateVars,
+					PylithScalar* const stateVars,
 					const int numStateVars,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 {
   assert(0 != _updateStateVarsFn);

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/EffectiveStress.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/EffectiveStress.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/EffectiveStress.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -53,8 +53,8 @@
    */
   template<typename material_type>
   static
-  double calculate(const double effStressInitialGuess,
-		   const double stressScale,
+  PylithScalar calculate(const PylithScalar effStressInitialGuess,
+		   const PylithScalar stressScale,
 		   material_type* const material);
 
   // PRIVATE METHODS /////////////////////////////////////////////////////
@@ -69,8 +69,8 @@
    */
   template<typename material_type>
   static
-  void _bracket(double* px1,
-		double* px2,
+  void _bracket(PylithScalar* px1,
+		PylithScalar* px2,
 		material_type* const material);
 
   /** Solve for effective stress using Newton's method with bisection.
@@ -83,8 +83,8 @@
    */
   template<typename material_type>
   static
-  double _search(double x1,
-		 double x2,
+  PylithScalar _search(PylithScalar x1,
+		 PylithScalar x2,
 		 material_type* const material);
 
 }; // class EffectiveStress

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/EffectiveStress.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/EffectiveStress.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/EffectiveStress.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,20 +27,20 @@
 // ----------------------------------------------------------------------
 // Get effective stress from initial guess.
 template<typename material_type>
-double
+PylithScalar
 pylith::materials::EffectiveStress::calculate(
-				 const double effStressInitialGuess,
-				 const double stressScale,
+				 const PylithScalar effStressInitialGuess,
+				 const PylithScalar stressScale,
 				 material_type* const material)
 { // getEffStress
   // Check parameters
   assert(effStressInitialGuess >= 0.0);
   // If initial guess is too low, use stress scale instead.
-  const double xMin = 1.0e-10;
+  const PylithScalar xMin = 1.0e-10;
 
   // Bracket the root.
-  double x1 = 0.0;
-  double x2 = 0.0;
+  PylithScalar x1 = 0.0;
+  PylithScalar x2 = 0.0;
   if (effStressInitialGuess > xMin) {
     x1 = effStressInitialGuess - 0.5 * effStressInitialGuess;
     x2 = effStressInitialGuess + 0.5 * effStressInitialGuess;
@@ -52,7 +52,7 @@
   _bracket(&x1, &x2, material);
 
   // Find effective stress using Newton's method with bisection.
-  const double effStress = _search(x1, x2, material);
+  const PylithScalar effStress = _search(x1, x2, material);
 
   PetscLogFlops(4); // Log flops
 
@@ -63,22 +63,22 @@
 // Bracket effective stress.
 template<typename material_type>
 void
-pylith::materials::EffectiveStress::_bracket(double* px1,
-					     double* px2,
+pylith::materials::EffectiveStress::_bracket(PylithScalar* px1,
+					     PylithScalar* px2,
 					     material_type* const material)
 { // _bracket
   // Arbitrary number of iterations to bracket the root
   const int maxIterations = 50;
 
   // Arbitrary factor by which to increase the brackets.
-  const double bracketFactor = 2;
+  const PylithScalar bracketFactor = 2;
   // Minimum allowed value for effective stress.
-  const double xMin = 0.0;
-  double x1 = *px1;
-  double x2 = *px2;
+  const PylithScalar xMin = 0.0;
+  PylithScalar x1 = *px1;
+  PylithScalar x2 = *px2;
 
-  double funcValue1 = material->effStressFunc(x1);
-  double funcValue2 = material->effStressFunc(x2);
+  PylithScalar funcValue1 = material->effStressFunc(x1);
+  PylithScalar funcValue2 = material->effStressFunc(x2);
 
   int iteration = 0;
   bool bracketed = false;
@@ -111,25 +111,25 @@
 // ----------------------------------------------------------------------
 // Find root using Newton's method with bisection.
 template<typename material_type>
-double
-pylith::materials::EffectiveStress::_search(const double x1,
-					    const double x2,
+PylithScalar
+pylith::materials::EffectiveStress::_search(const PylithScalar x1,
+					    const PylithScalar x2,
 					    material_type* const material)
 { // _search
   // Arbitrary number of iterations to find the root
   const int maxIterations = 100;
 
   // Desired accuracy for root. This is a bit arbitrary for now.
-  const double accuracy = 1.0e-10;
+  const PylithScalar accuracy = 1.0e-10;
 
   // Organize search so that effStressFunc(xLow) is less than zero.
-  double funcValueLow = material->effStressFunc(x1);
-  double funcValueHigh = material->effStressFunc(x2);
+  PylithScalar funcValueLow = material->effStressFunc(x1);
+  PylithScalar funcValueHigh = material->effStressFunc(x2);
   assert(funcValueLow * funcValueHigh <= 0.0);
 
-  double effStress = 0.0;
-  double xLow = 0.0;
-  double xHigh = 0.0;
+  PylithScalar effStress = 0.0;
+  PylithScalar xLow = 0.0;
+  PylithScalar xHigh = 0.0;
   bool converged = false;
 
   if (funcValueLow < 0.0) {
@@ -141,12 +141,12 @@
   } // if/else
 
   effStress = 0.5 * (x1 + x2);
-  double dxPrevious = fabs(x2 - x1);
-  double dx = dxPrevious;
-  double funcValue = 0.0;
-  double funcDeriv = 0.0;
-  double funcXHigh = 0.0;
-  double funcXLow = 0.0;
+  PylithScalar dxPrevious = fabs(x2 - x1);
+  PylithScalar dx = dxPrevious;
+  PylithScalar funcValue = 0.0;
+  PylithScalar funcDeriv = 0.0;
+  PylithScalar funcXHigh = 0.0;
+  PylithScalar funcXLow = 0.0;
   material->effStressFuncDerivFunc(&funcValue, &funcDeriv, effStress);
   int iteration = 0;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -108,16 +108,16 @@
 // Compute properties from values in spatial database.
 void
 pylith::materials::ElasticIsotropic3D::_dbToProperties(
-					   double* const propValues,
-					   const double_array& dbValues)
+					   PylithScalar* const propValues,
+					   const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_ElasticIsotropic3D::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
@@ -129,8 +129,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -151,15 +151,15 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::ElasticIsotropic3D::_nondimProperties(double* const values,
+pylith::materials::ElasticIsotropic3D::_nondimProperties(PylithScalar* const values,
 							 const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticIsotropic3D::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
@@ -174,15 +174,15 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::ElasticIsotropic3D::_dimProperties(double* const values,
+pylith::materials::ElasticIsotropic3D::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticIsotropic3D::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
@@ -197,17 +197,17 @@
 // ----------------------------------------------------------------------
 // Compute stress tensor at location from properties.
 void
-pylith::materials::ElasticIsotropic3D::_calcStress(double* const stress,
+pylith::materials::ElasticIsotropic3D::_calcStress(PylithScalar* const stress,
 						   const int stressSize,
-						   const double* properties,
+						   const PylithScalar* properties,
 						   const int numProperties,
-						   const double* stateVars,
+						   const PylithScalar* stateVars,
 						   const int numStateVars,
-						   const double* totalStrain,
+						   const PylithScalar* totalStrain,
 						   const int strainSize,
-						   const double* initialStress,
+						   const PylithScalar* initialStress,
 						   const int initialStressSize,
-						   const double* initialStrain,
+						   const PylithScalar* initialStrain,
 						   const int initialStrainSize,
 						   const bool computeStateVars)
 { // _calcStress
@@ -223,19 +223,19 @@
   assert(0 != initialStrain);
   assert(_ElasticIsotropic3D::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0*mu;
+  const PylithScalar mu2 = 2.0*mu;
 
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e33 = totalStrain[2] - initialStrain[2];
-  const double e12 = totalStrain[3] - initialStrain[3];
-  const double e23 = totalStrain[4] - initialStrain[4];
-  const double e13 = totalStrain[5] - initialStrain[5];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e33 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e12 = totalStrain[3] - initialStrain[3];
+  const PylithScalar e23 = totalStrain[4] - initialStrain[4];
+  const PylithScalar e13 = totalStrain[5] - initialStrain[5];
   
-  const double s123 = lambda * (e11 + e22 + e33);
+  const PylithScalar s123 = lambda * (e11 + e22 + e33);
 
   stress[0] = s123 + mu2*e11 + initialStress[0];
   stress[1] = s123 + mu2*e22 + initialStress[1];
@@ -251,17 +251,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::ElasticIsotropic3D::_calcElasticConsts(
-					     double* const elasticConsts,
+					     PylithScalar* const elasticConsts,
 					     const int numElasticConsts,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize)
 { // _calcElasticConsts
   assert(0 != elasticConsts);
@@ -276,11 +276,11 @@
   assert(0 != initialStrain);
   assert(_ElasticIsotropic3D::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
    
   elasticConsts[ 0] = lambda2mu; // C1111
   elasticConsts[ 1] = lambda; // C1122
@@ -324,7 +324,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticIsotropic3D::stableTimeStepImplicit(
 					const topology::Mesh& mesh) {
   return pylith::PYLITH_MAXDOUBLE;
@@ -332,11 +332,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticIsotropic3D::_stableTimeStepImplicit(
-				     const double* properties,
+				     const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -61,7 +61,7 @@
    * @param mesh Finite-element mesh.
    * @returns Time step
    */
-  double stableTimeStepImplicit(const topology::Mesh& mesh);
+  PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -74,15 +74,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -90,7 +90,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute density from properties.
@@ -99,10 +99,10 @@
    * @param properties Properties at location.
    * @param numProperties Number of properties.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -125,17 +125,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -154,17 +154,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -176,9 +176,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticIsotropic3D.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -25,10 +25,10 @@
 // Compute density at location from properties.
 inline
 void
-pylith::materials::ElasticIsotropic3D::_calcDensity(double* const density,
-						    const double* properties,
+pylith::materials::ElasticIsotropic3D::_calcDensity(PylithScalar* const density,
+						    const PylithScalar* properties,
 						    const int numProperties,
-						    const double* stateVars,
+						    const PylithScalar* stateVars,
 						    const int numStateVars)
 { // _calcDensity
   assert(0 != density);

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
-#include "pylith/utils/array.hh" // USES double_array, std::vector
+#include "pylith/utils/array.hh" // USES scalar_array, std::vector
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/spatialdb/SpatialDB.hh" // USES SpatialDB
@@ -141,8 +141,8 @@
 
 // ----------------------------------------------------------------------
 // Compute stress tensor for cell at quadrature points.
-const pylith::double_array&
-pylith::materials::ElasticMaterial::calcStress(const double_array& totalStrain,
+const pylith::scalar_array&
+pylith::materials::ElasticMaterial::calcStress(const scalar_array& totalStrain,
 					       const bool computeStateVars)
 { // calcStress
   const int numQuadPts = _numQuadPts;
@@ -170,9 +170,9 @@
 
 // ----------------------------------------------------------------------
 // Compute derivative of elasticity matrix for cell at quadrature points.
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::materials::ElasticMaterial::calcDerivElastic(
-					       const double_array& totalStrain)
+					       const scalar_array& totalStrain)
 { // calcDerivElastic
   const int numQuadPts = _numQuadPts;
   const int numPropsQuadPt = _numPropsQuadPt;
@@ -202,7 +202,7 @@
 // Update state variables (for next time step).
 void
 pylith::materials::ElasticMaterial::updateStateVars(
-					      const double_array& totalStrain,
+					      const scalar_array& totalStrain,
 					      const int cell)
 { // updateStateVars
   const int numQuadPts = _numQuadPts;
@@ -230,7 +230,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticMaterial::stableTimeStepImplicit(const topology::Mesh& mesh)
 { // stableTimeStepImplicit
   const int numQuadPts = _numQuadPts;
@@ -243,7 +243,7 @@
   assert(_initialStressCell.size() == numQuadPts*_tensorSize);
   assert(_initialStrainCell.size() == numQuadPts*_tensorSize);
 
-  double dtStable = pylith::PYLITH_MAXDOUBLE;
+  PylithScalar dtStable = pylith::PYLITH_MAXDOUBLE;
 
   // Get cells associated with material
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
@@ -260,7 +260,7 @@
     retrievePropsAndVars(*c_iter);
 
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-      const double dt = 
+      const PylithScalar dt = 
 	_stableTimeStepImplicit(&_propertiesCell[iQuad*numPropsQuadPt],
 				numPropsQuadPt,
 				&_stateVarsCell[iQuad*numVarsQuadPt],
@@ -323,7 +323,7 @@
   assert(!sieveMesh.isNull());
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates, 
@@ -332,8 +332,8 @@
 
   // Create arrays for querying
   const int tensorSize = _tensorSize;
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
-  double_array stressCell(numQuadPts*tensorSize);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array stressCell(numQuadPts*tensorSize);
 
   // Get cells associated with material
   const ALE::Obj<SieveMesh::label_sequence>& cells = 
@@ -388,8 +388,8 @@
     } // switch
   
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
        c_iter != cellsEnd;
@@ -404,7 +404,7 @@
 #endif
 
     // Dimensionalize coordinates for querying
-    const double_array& quadPtsNonDim = quadrature->quadPts();
+    const scalar_array& quadPtsNonDim = quadrature->quadPts();
     quadPtsGlobal = quadPtsNonDim;
     _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
 				lengthScale);
@@ -469,7 +469,7 @@
   assert(!sieveMesh.isNull());
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates, 
@@ -478,8 +478,8 @@
 
   // Create arrays for querying
   const int tensorSize = _tensorSize;
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
-  double_array strainCell(numQuadPts*tensorSize);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array strainCell(numQuadPts*tensorSize);
 
   // Get cells associated with material
   const ALE::Obj<SieveMesh::label_sequence>& cells = 
@@ -534,8 +534,8 @@
     } // switch
   
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
     
   for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
        c_iter != cellsEnd;
@@ -550,7 +550,7 @@
 #endif
 
     // Dimensionalize coordinates for querying
-    const double_array& quadPtsNonDim = quadrature->quadPts();
+    const scalar_array& quadPtsNonDim = quadrature->quadPts();
     quadPtsGlobal = quadPtsNonDim;
     _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
 				lengthScale);
@@ -585,15 +585,15 @@
 // Update stateVars (for next time step).
 void
 pylith::materials::ElasticMaterial::_updateStateVars(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVars
 } // _updateStateVars

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -65,9 +65,9 @@
    * @param vec Input tensor (as vector).
    * @param vecMean Tensor trace divided by spatial_dimension.
    */
-  void calcDeviatoric2D(double* const deviatoric,
-			const double* vec,
-			const double vecMean);
+  void calcDeviatoric2D(PylithScalar* const deviatoric,
+			const PylithScalar* vec,
+			const PylithScalar vecMean);
   
   /** Compute 3D deviatoric stress/strain from vector and mean value.
    *
@@ -75,25 +75,25 @@
    * @param vec Input tensor (as vector).
    * @param vecMean Tensor trace divided by spatial_dimension.
    */
-  void calcDeviatoric3D(double* const deviatoric,
-			const double* vec,
-			const double vecMean);
+  void calcDeviatoric3D(PylithScalar* const deviatoric,
+			const PylithScalar* vec,
+			const PylithScalar vecMean);
   
   /** Compute 2D scalar product of two tensors represented as vectors.
    *
    * @param tensor1 First tensor.
    * @param tensor2 Second tensor.
    */
-  double scalarProduct2D(const double* tensor1,
-			 const double* tensor2) const;
+  PylithScalar scalarProduct2D(const PylithScalar* tensor1,
+			 const PylithScalar* tensor2) const;
   
   /** Compute 3D scalar product of two tensors represented as vectors.
    *
    * @param tensor1 First tensor.
    * @param tensor2 Second tensor.
    */
-  double scalarProduct3D(const double* tensor1,
-			 const double* tensor2) const;
+  PylithScalar scalarProduct3D(const PylithScalar* tensor1,
+			 const PylithScalar* tensor2) const;
   
   /** Set database for initial stress state.
    *
@@ -130,7 +130,7 @@
    *
    * @returns Array of density values at cell's quadrature points.
    */
-  const double_array& calcDensity(void);
+  const scalar_array& calcDensity(void);
   
   /** Get stress tensor at quadrature points. If the state variables
    * are from the previous time step, then the computeStateVars flag
@@ -157,8 +157,8 @@
    *
    * @returns Array of stresses at cell's quadrature points.
    */
-  const double_array&
-  calcStress(const double_array& totalStrain,
+  const scalar_array&
+  calcStress(const scalar_array& totalStrain,
 	     const bool computeStateVars =false);
 
   /** Compute derivative of elasticity matrix for cell at quadrature points.
@@ -187,8 +187,8 @@
    * @param totalStrain Total strain tensor at quadrature points
    *    [numQuadPts][tensorSize]
    */
-  const double_array&
-  calcDerivElastic(const double_array& totalStrain);
+  const scalar_array&
+  calcDerivElastic(const scalar_array& totalStrain);
 
   /** Update state variables (for next time step).
    *
@@ -196,7 +196,7 @@
    *    [numQuadPts][tensorSize]
    * @param cell Finite element cell
    */
-  void updateStateVars(const double_array& totalStrain,
+  void updateStateVars(const scalar_array& totalStrain,
 		       const int cell);
 
   /** Get flag indicating whether material implements an empty
@@ -217,7 +217,7 @@
    * @returns Time step
    */
   virtual
-  double stableTimeStepImplicit(const topology::Mesh& mesh);
+  PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -245,10 +245,10 @@
    * @param numProperties Number of properties.
    */
   virtual
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars) = 0;
 
   /** Compute stress tensor from properties and state variables. If
@@ -272,17 +272,17 @@
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
   virtual
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars) = 0;
 
@@ -302,17 +302,17 @@
    * @param initialStrainSize Size of initial strain array.
    */
   virtual
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize) = 0;
 
   /** Update state variables (for next time step).
@@ -329,15 +329,15 @@
    * @param initialStrainSize Size of initial strain array.
    */
   virtual
-  void _updateStateVars(double* const stateVars,
+  void _updateStateVars(PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* totalStrain,
+			const PylithScalar* totalStrain,
 			const int strainSize,
-			const double* initialStress,
+			const PylithScalar* initialStress,
 			const int initialStressSize,
-			const double* initialStrain,
+			const PylithScalar* initialStrain,
 			const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -350,9 +350,9 @@
    * @returns Time step
    */
   virtual
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const = 0;
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -397,49 +397,49 @@
    * size = numQuadPts * numPropsQuadPt
    * index = iQuadPt * numPropsQuadPt + iPropQuadPt
    */
-  double_array _propertiesCell;
+  scalar_array _propertiesCell;
 
   /** State variables at quadrature points for current cell.
    *
    * size = numQuadPts * numVarsQuadPt
    * index = iQuadPt * numVarsQuadPt + iStateVar
    */
-  double_array _stateVarsCell;
+  scalar_array _stateVarsCell;
 
   /** Initial stress state for current cell.
    *
    * size = numQuadPts * tensorSize
    * index = iQuadPt * tensorSize + iComponent
    */
-  double_array _initialStressCell;
+  scalar_array _initialStressCell;
 
   /** Initial strain state for current cell.
    *
    * size = numQuadPts * tensorSize
    * index = iQuadPt * tensorSize + iComponent
    */
-  double_array _initialStrainCell;
+  scalar_array _initialStrainCell;
 
   /** Density value at quadrature points for current cell.
    *
    * size = numQuadPts
    * index = iQuadPt
    */
-  double_array _densityCell;
+  scalar_array _densityCell;
 
   /** Stress tensor at quadrature points for current cell.
    *
    * size = numQuadPts * tensorSize
    * index = iQuadPt * tensorSize + iStress
    */
-  double_array _stressCell;
+  scalar_array _stressCell;
 
   /** Elasticity matrix at quadrature points for current cell.
    *
    * size = numQuadPts * numElasticConsts
    * index = iQuadPt * numElasticConsts + iConstant
    */
-  double_array _elasticConstsCell;
+  scalar_array _elasticConstsCell;
 
   int _numQuadPts; ///< Number of quadrature points
   const int _numElasticConsts; ///< Number of elastic constants.

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticMaterial.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,9 +27,9 @@
 inline
 void
 pylith::materials::ElasticMaterial::calcDeviatoric2D(
-					double* const deviatoric,
-					const double* vec,
-					const double vecMean)
+					PylithScalar* const deviatoric,
+					const PylithScalar* vec,
+					const PylithScalar vecMean)
 {
   deviatoric[0] = vec[0] - vecMean;
   deviatoric[1] = vec[1] - vecMean;
@@ -41,9 +41,9 @@
 inline
 void
 pylith::materials::ElasticMaterial::calcDeviatoric3D(
-					double* const deviatoric,
-					const double* vec,
-					const double vecMean)
+					PylithScalar* const deviatoric,
+					const PylithScalar* vec,
+					const PylithScalar vecMean)
 {
   deviatoric[0] = vec[0] -vecMean;
   deviatoric[1] = vec[1] -vecMean;
@@ -57,11 +57,11 @@
 // Compute 2D scalar product of two tensors represented as vectors.
 // 6 FLOPs per call.
 inline
-double
-pylith::materials::ElasticMaterial::scalarProduct2D(const double* tensor1,
-						    const double* tensor2) const
+PylithScalar
+pylith::materials::ElasticMaterial::scalarProduct2D(const PylithScalar* tensor1,
+						    const PylithScalar* tensor2) const
 { // scalarProduct2D
-  const double scalarProduct = tensor1[0] * tensor2[0] +
+  const PylithScalar scalarProduct = tensor1[0] * tensor2[0] +
     tensor1[1] * tensor2[1] + 2.0 * tensor1[2] * tensor2[2];
   return scalarProduct;
 
@@ -71,11 +71,11 @@
 // Compute 3D scalar product of two tensors represented as vectors.
 // 12 FLOPs per call.
 inline
-double
-pylith::materials::ElasticMaterial::scalarProduct3D(const double* tensor1,
-						    const double* tensor2) const
+PylithScalar
+pylith::materials::ElasticMaterial::scalarProduct3D(const PylithScalar* tensor1,
+						    const PylithScalar* tensor2) const
 { // scalarProduct3D
-  const double scalarProduct = tensor1[0] * tensor2[0] +
+  const PylithScalar scalarProduct = tensor1[0] * tensor2[0] +
     tensor1[1] * tensor2[1] +
     tensor1[2] * tensor2[2] +
     2.0 * (tensor1[3] * tensor2[3] +
@@ -124,7 +124,7 @@
 // ----------------------------------------------------------------------
 // Compute density for cell at quadrature points.
 inline
-const pylith::double_array&
+const pylith::scalar_array&
 pylith::materials::ElasticMaterial::calcDensity(void)
 { // calcDensity
   const int numQuadPts = _numQuadPts;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -108,16 +108,16 @@
 // Compute parameters from values in spatial database.
 void
 pylith::materials::ElasticPlaneStrain::_dbToProperties(
-				          double* const propValues,
-                                          const double_array& dbValues)
+				          PylithScalar* const propValues,
+                                          const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_ElasticPlaneStrain::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
@@ -129,8 +129,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -151,15 +151,15 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::ElasticPlaneStrain::_nondimProperties(double* const values,
+pylith::materials::ElasticPlaneStrain::_nondimProperties(PylithScalar* const values,
 							 const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticPlaneStrain::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
@@ -174,15 +174,15 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::ElasticPlaneStrain::_dimProperties(double* const values,
+pylith::materials::ElasticPlaneStrain::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticPlaneStrain::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
@@ -197,10 +197,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::ElasticPlaneStrain::_calcDensity(double* const density,
-						    const double* properties,
+pylith::materials::ElasticPlaneStrain::_calcDensity(PylithScalar* const density,
+						    const PylithScalar* properties,
 						    const int numProperties,
-						    const double* stateVars,
+						    const PylithScalar* stateVars,
 						    const int numStateVars)
 { // calcDensity
   assert(0 != density);
@@ -214,17 +214,17 @@
 // ----------------------------------------------------------------------
 // Compute stress tensor at location from properties.
 void
-pylith::materials::ElasticPlaneStrain::_calcStress(double* const stress,
+pylith::materials::ElasticPlaneStrain::_calcStress(PylithScalar* const stress,
 						   const int stressSize,
-						   const double* properties,
+						   const PylithScalar* properties,
 						   const int numProperties,
-						   const double* stateVars,
+						   const PylithScalar* stateVars,
 						   const int numStateVars,
-						   const double* totalStrain,
+						   const PylithScalar* totalStrain,
 						   const int strainSize,
-						   const double* initialStress,
+						   const PylithScalar* initialStress,
 						   const int initialStressSize,
-						   const double* initialStrain,
+						   const PylithScalar* initialStrain,
 						   const int initialStrainSize,
 						   const bool computeStateVars)
 { // _calcStress
@@ -240,17 +240,17 @@
   assert(0 != initialStrain);
   assert(_ElasticPlaneStrain::tensorSize == initialStrainSize);
 
-  const double density = properties[p_density];
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0*mu;
+  const PylithScalar mu2 = 2.0*mu;
 
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e12 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e12 = totalStrain[2] - initialStrain[2];
 
-  const double s12 = lambda * (e11 + e22);
+  const PylithScalar s12 = lambda * (e11 + e22);
 
   stress[0] = s12 + mu2*e11 + initialStress[0];
   stress[1] = s12 + mu2*e22 + initialStress[1];
@@ -263,17 +263,17 @@
 // Compute elastic constants at location from properties.
 void
 pylith::materials::ElasticPlaneStrain::_calcElasticConsts(
-					     double* const elasticConsts,
+					     PylithScalar* const elasticConsts,
 					     const int numElasticConsts,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize)
 { // calcElasticConsts
   assert(0 != elasticConsts);
@@ -288,12 +288,12 @@
   assert(0 != initialStrain);
   assert(_ElasticPlaneStrain::tensorSize == initialStrainSize);
  
-  const double density = properties[p_density];
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
    
   elasticConsts[0] = lambda2mu; // C1111
   elasticConsts[1] = lambda; // C1122
@@ -310,7 +310,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticPlaneStrain::stableTimeStepImplicit(
 					const topology::Mesh& mesh) {
   return pylith::PYLITH_MAXDOUBLE;
@@ -318,11 +318,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticPlaneStrain::_stableTimeStepImplicit(
-				     const double* properties,
+				     const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -61,7 +61,7 @@
    * @param mesh Finite-element mesh.
    * @returns Time step
    */
-  double stableTimeStepImplicit(const topology::Mesh& mesh);
+  PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -74,15 +74,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -90,7 +90,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute density from properties.
@@ -99,10 +99,10 @@
    * @param properties Properties at location.
    * @param numProperties Number of properties.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -125,17 +125,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -154,17 +154,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -176,9 +176,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -108,16 +108,16 @@
 // Compute parameters from values in spatial database.
 void
 pylith::materials::ElasticPlaneStress::_dbToProperties(
-					  double* propValues,
-					  const double_array& dbValues)
+					  PylithScalar* propValues,
+					  const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_ElasticPlaneStress::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
@@ -129,8 +129,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -151,15 +151,15 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::ElasticPlaneStress::_nondimProperties(double* const values,
+pylith::materials::ElasticPlaneStress::_nondimProperties(PylithScalar* const values,
 							 const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticPlaneStress::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
@@ -174,15 +174,15 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::ElasticPlaneStress::_dimProperties(double* const values,
+pylith::materials::ElasticPlaneStress::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticPlaneStress::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
@@ -197,10 +197,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::ElasticPlaneStress::_calcDensity(double* const density,
-						    const double* properties,
+pylith::materials::ElasticPlaneStress::_calcDensity(PylithScalar* const density,
+						    const PylithScalar* properties,
 						    const int numProperties,
-						    const double* stateVars,
+						    const PylithScalar* stateVars,
 						    const int numStateVars)
 { // calcDensity
   assert(0 != density);
@@ -214,17 +214,17 @@
 // ----------------------------------------------------------------------
 // Compute stress tensor at location from properties.
 void
-pylith::materials::ElasticPlaneStress::_calcStress(double* const stress,
+pylith::materials::ElasticPlaneStress::_calcStress(PylithScalar* const stress,
 						   const int stressSize,
-						   const double* properties,
+						   const PylithScalar* properties,
 						   const int numProperties,
-						   const double* stateVars,
+						   const PylithScalar* stateVars,
 						   const int numStateVars,
-						   const double* totalStrain,
+						   const PylithScalar* totalStrain,
 						   const int strainSize,
-						   const double* initialStress,
+						   const PylithScalar* initialStress,
 						   const int initialStressSize,
-						   const double* initialStrain,
+						   const PylithScalar* initialStrain,
 						   const int initialStrainSize,
 						   const bool computeStateVars)
 { // _calcStress
@@ -240,17 +240,17 @@
   assert(0 != initialStrain);
   assert(_ElasticPlaneStress::tensorSize == initialStrainSize);
 
-  const double density = properties[p_density];
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
-  const double lambdamu = lambda + mu;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
+  const PylithScalar lambdamu = lambda + mu;
   
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e12 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e12 = totalStrain[2] - initialStrain[2];
 
   stress[0] = 
     (2.0*mu2*lambdamu * e11 + mu2*lambda * e22) / lambda2mu + initialStress[0];
@@ -265,17 +265,17 @@
 // Compute density at location from properties.
 void
 pylith::materials::ElasticPlaneStress::_calcElasticConsts(
-					     double* const elasticConsts,
+					     PylithScalar* const elasticConsts,
 					     const int numElasticConsts,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize)
 { // calcElasticConsts
   assert(0 != elasticConsts);
@@ -290,13 +290,13 @@
   assert(0 != initialStrain);
   assert(_ElasticPlaneStress::tensorSize == initialStrainSize);
  
-  const double density = properties[p_density];
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
-  const double c11 = 2.0 * mu2 * (lambda + mu) / lambda2mu;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
+  const PylithScalar c11 = 2.0 * mu2 * (lambda + mu) / lambda2mu;
 
   elasticConsts[0] = c11; // C1111
   elasticConsts[1] = mu2 * lambda / lambda2mu; // C1122
@@ -313,7 +313,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticPlaneStress::stableTimeStepImplicit(
 					const topology::Mesh& mesh) {
   return pylith::PYLITH_MAXDOUBLE;
@@ -321,11 +321,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticPlaneStress::_stableTimeStepImplicit(
-				     const double* properties,
+				     const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticPlaneStress.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,7 +63,7 @@
    * @param mesh Finite-element mesh.
    * @returns Time step
    */
-  double stableTimeStepImplicit(const topology::Mesh& mesh);
+  PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -76,15 +76,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -92,7 +92,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute density from properties.
@@ -101,10 +101,10 @@
    * @param properties Properties at location.
    * @param numProperties Number of properties.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -127,17 +127,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -156,17 +156,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -178,9 +178,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -108,16 +108,16 @@
 // Compute parameters from values in spatial database.
 void
 pylith::materials::ElasticStrain1D::_dbToProperties(
-					    double* const propValues,
-					    const double_array& dbValues)
+					    PylithScalar* const propValues,
+					    const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_ElasticStrain1D::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
@@ -129,8 +129,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -151,15 +151,15 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::ElasticStrain1D::_nondimProperties(double* const values,
+pylith::materials::ElasticStrain1D::_nondimProperties(PylithScalar* const values,
 							 const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticStrain1D::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
@@ -174,15 +174,15 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::ElasticStrain1D::_dimProperties(double* const values,
+pylith::materials::ElasticStrain1D::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticStrain1D::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
@@ -197,10 +197,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::ElasticStrain1D::_calcDensity(double* const density,
-						 const double* properties,
+pylith::materials::ElasticStrain1D::_calcDensity(PylithScalar* const density,
+						 const PylithScalar* properties,
 						 const int numProperties,
-						 const double* stateVars,
+						 const PylithScalar* stateVars,
 						 const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -214,17 +214,17 @@
 // ----------------------------------------------------------------------
 // Compute stress tensor at location from properties.
 void
-pylith::materials::ElasticStrain1D::_calcStress(double* const stress,
+pylith::materials::ElasticStrain1D::_calcStress(PylithScalar* const stress,
 						const int stressSize,
-						const double* properties,
+						const PylithScalar* properties,
 						const int numProperties,
-						const double* stateVars,
+						const PylithScalar* stateVars,
 						const int numStateVars,
-						const double* totalStrain,
+						const PylithScalar* totalStrain,
 						const int strainSize,
-						const double* initialStress,
+						const PylithScalar* initialStress,
 						const int initialStressSize,
-						const double* initialStrain,
+						const PylithScalar* initialStrain,
 						const int initialStrainSize,
 						const bool computeStateVars)
 { // _calcStress
@@ -240,11 +240,11 @@
   assert(0 != initialStrain);
   assert(_ElasticStrain1D::tensorSize == initialStrainSize);
 
-  const double density = properties[p_density];
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
   stress[0] = (lambda + 2.0*mu) * e11 + initialStress[0];
 
   PetscLogFlops(5);
@@ -254,17 +254,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::ElasticStrain1D::_calcElasticConsts(
-					     double* const elasticConsts,
+					     PylithScalar* const elasticConsts,
 					     const int numElasticConsts,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize)
 { // _calcElasticConsts
   assert(0 != elasticConsts);
@@ -279,9 +279,9 @@
   assert(0 != initialStrain);
   assert(_ElasticStrain1D::tensorSize == initialStrainSize);
  
-  const double density = properties[p_density];
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
   elasticConsts[0] = lambda + 2.0*mu;
 
@@ -290,7 +290,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticStrain1D::stableTimeStepImplicit(
 					const topology::Mesh& mesh) {
   return pylith::PYLITH_MAXDOUBLE;
@@ -298,11 +298,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticStrain1D::_stableTimeStepImplicit(
-					      const double* properties,
+					      const PylithScalar* properties,
 					      const int numProperties,
-					      const double* stateVars,
+					      const PylithScalar* stateVars,
 					      const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStrain1D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -62,7 +62,7 @@
    * @param mesh Finite-element mesh.
    * @returns Time step
    */
-  double stableTimeStepImplicit(const topology::Mesh& mesh);
+  PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -75,15 +75,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -91,7 +91,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute density from properties.
@@ -100,10 +100,10 @@
    * @param properties Properties at location.
    * @param numProperties Number of properties.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -126,17 +126,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -155,17 +155,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -177,9 +177,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -108,16 +108,16 @@
 // Compute parameters from values in spatial database.
 void
 pylith::materials::ElasticStress1D::_dbToProperties(
-					    double* const propValues,
-					    const double_array& dbValues)
+					    PylithScalar* const propValues,
+					    const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_ElasticStress1D::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
@@ -129,8 +129,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -151,15 +151,15 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::ElasticStress1D::_nondimProperties(double* const values,
+pylith::materials::ElasticStress1D::_nondimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticStress1D::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
@@ -174,15 +174,15 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::ElasticStress1D::_dimProperties(double* const values,
+pylith::materials::ElasticStress1D::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _ElasticStress1D::numProperties);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
 
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
@@ -197,10 +197,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::ElasticStress1D::_calcDensity(double* const density,
-						 const double* properties,
+pylith::materials::ElasticStress1D::_calcDensity(PylithScalar* const density,
+						 const PylithScalar* properties,
 						 const int numProperties,
-						 const double* stateVars,
+						 const PylithScalar* stateVars,
 						 const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -214,17 +214,17 @@
 // ----------------------------------------------------------------------
 // Compute stress tensor at location from properties.
 void
-pylith::materials::ElasticStress1D::_calcStress(double* const stress,
+pylith::materials::ElasticStress1D::_calcStress(PylithScalar* const stress,
 						const int stressSize,
-						const double* properties,
+						const PylithScalar* properties,
 						const int numProperties,
-						const double* stateVars,
+						const PylithScalar* stateVars,
 						const int numStateVars,
-						const double* totalStrain,
+						const PylithScalar* totalStrain,
 						const int strainSize,
-						const double* initialStress,
+						const PylithScalar* initialStress,
 						const int initialStressSize,
-						const double* initialStrain,
+						const PylithScalar* initialStrain,
 						const int initialStrainSize,
 						const bool computeStateVars)
 { // _calcStress
@@ -240,11 +240,11 @@
   assert(0 != initialStrain);
   assert(_ElasticStress1D::tensorSize == initialStrainSize);
 
-  const double density = properties[p_density];
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
   stress[0] = mu * (3.0*lambda+2.0*mu) / (lambda + mu) * e11 + initialStress[0];
 
   PetscLogFlops(9);
@@ -254,17 +254,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::ElasticStress1D::_calcElasticConsts(
-					     double* const elasticConsts,
+					     PylithScalar* const elasticConsts,
 					     const int numElasticConsts,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize)
 { // _calcElasticConsts
   assert(0 != elasticConsts);
@@ -279,9 +279,9 @@
   assert(0 != initialStrain);
   assert(_ElasticStress1D::tensorSize == initialStrainSize);
  
-  const double density = properties[p_density];
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
   elasticConsts[0] = mu * (3.0*lambda+2.0*mu) / (lambda + mu);
 
@@ -290,7 +290,7 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticStress1D::stableTimeStepImplicit(
 					const topology::Mesh& mesh) {
   return pylith::PYLITH_MAXDOUBLE;
@@ -298,11 +298,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::ElasticStress1D::_stableTimeStepImplicit(
-					      const double* properties,
+					      const PylithScalar* properties,
 					      const int numProperties,
-					      const double* stateVars,
+					      const PylithScalar* stateVars,
 					      const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ElasticStress1D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,7 +63,7 @@
    * @param mesh Finite-element mesh.
    * @returns Time step
    */
-  double stableTimeStepImplicit(const topology::Mesh& mesh);
+  PylithScalar stableTimeStepImplicit(const topology::Mesh& mesh);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -76,15 +76,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -92,7 +92,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute density from properties.
@@ -101,10 +101,10 @@
    * @param properties Properties at location.
    * @param numProperties Number of properties.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -127,17 +127,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -156,17 +156,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -178,9 +178,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "ViscoelasticMaxwell.hh" // USES computeVisStrain
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -236,16 +236,16 @@
 // Compute parameters from values in spatial database.
 void
 pylith::materials::GenMaxwellIsotropic3D::_dbToProperties(
-					    double* const propValues,
-					    const double_array& dbValues)
+					    PylithScalar* const propValues,
+					    const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_GenMaxwellIsotropic3D::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
   const int numMaxwellModels = _GenMaxwellIsotropic3D::numMaxwellModels;
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
@@ -258,8 +258,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -275,7 +275,7 @@
   propValues[p_muEff] = mu;
   propValues[p_lambdaEff] = lambda;
 
-  double visFrac = 0.0;
+  PylithScalar visFrac = 0.0;
   for (int imodel = 0; imodel < numMaxwellModels; ++imodel) 
     visFrac += dbValues[db_shearRatio + imodel];
   if (visFrac > 1.0) {
@@ -291,10 +291,10 @@
 
   // Loop over number of Maxwell models.
   for (int imodel =0; imodel < numMaxwellModels; ++imodel) {
-    double muRatio = dbValues[db_shearRatio + imodel];
-    double viscosity = dbValues[db_viscosity + imodel];
-    double muFac = muRatio*mu;
-    double maxwellTime = pylith::PYLITH_MAXDOUBLE;
+    PylithScalar muRatio = dbValues[db_shearRatio + imodel];
+    PylithScalar viscosity = dbValues[db_viscosity + imodel];
+    PylithScalar muFac = muRatio*mu;
+    PylithScalar maxwellTime = pylith::PYLITH_MAXDOUBLE;
     if (muFac > 0.0)
       maxwellTime = viscosity / muFac;
     if (muRatio < 0.0 || viscosity < 0.0 || muFac < 0.0 || maxwellTime < 0.0) {
@@ -316,16 +316,16 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::GenMaxwellIsotropic3D::_nondimProperties(double* const values,
+pylith::materials::GenMaxwellIsotropic3D::_nondimProperties(PylithScalar* const values,
 							 const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
   values[p_muEff] = 
@@ -342,16 +342,16 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::GenMaxwellIsotropic3D::_dimProperties(double* const values,
+pylith::materials::GenMaxwellIsotropic3D::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
   values[p_muEff] = 
@@ -369,8 +369,8 @@
 // Compute initial state variables from values in spatial database.
 void
 pylith::materials::GenMaxwellIsotropic3D::_dbToStateVars(
-					double* const stateValues,
-					const double_array& dbValues)
+					PylithScalar* const stateValues,
+					const scalar_array& dbValues)
 { // _dbToStateVars
   assert(0 != stateValues);
   const int numDBValues = dbValues.size();
@@ -389,10 +389,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::GenMaxwellIsotropic3D::_calcDensity(double* const density,
-						    const double* properties,
+pylith::materials::GenMaxwellIsotropic3D::_calcDensity(PylithScalar* const density,
+						    const PylithScalar* properties,
 						    const int numProperties,
-						    const double* stateVars,
+						    const PylithScalar* stateVars,
 						    const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -407,17 +407,17 @@
 // material.
 void
 pylith::materials::GenMaxwellIsotropic3D::_calcStressElastic(
-					     double* const stress,
+					     PylithScalar* const stress,
 					     const int stressSize,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize,
 					     const bool computeStateVars)
 { // _calcStressElastic
@@ -434,19 +434,19 @@
   assert(0 != initialStrain);
   assert(_GenMaxwellIsotropic3D::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_muEff];
-  const double lambda = properties[p_lambdaEff];
-  const double mu2 = 2.0 * mu;
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
+  const PylithScalar mu2 = 2.0 * mu;
 
   // :TODO: Need to consider initial state variables????
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e33 = totalStrain[2] - initialStrain[2];
-  const double e12 = totalStrain[3] - initialStrain[3];
-  const double e23 = totalStrain[4] - initialStrain[4];
-  const double e13 = totalStrain[5] - initialStrain[5];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e33 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e12 = totalStrain[3] - initialStrain[3];
+  const PylithScalar e23 = totalStrain[4] - initialStrain[4];
+  const PylithScalar e13 = totalStrain[5] - initialStrain[5];
   
-  const double s123 = lambda * (e11 + e22 + e33);
+  const PylithScalar s123 = lambda * (e11 + e22 + e33);
 
   stress[0] = s123 + mu2*e11 + initialStress[0];
   stress[1] = s123 + mu2*e22 + initialStress[1];
@@ -464,17 +464,17 @@
 // material.
 void
 pylith::materials::GenMaxwellIsotropic3D::_calcStressViscoelastic(
-					     double* const stress,
+					     PylithScalar* const stress,
 					     const int stressSize,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize,
 					     const bool computeStateVars)
 { // _calcStressViscoelastic
@@ -494,29 +494,29 @@
   const int numMaxwellModels = _GenMaxwellIsotropic3D::numMaxwellModels;
   const int tensorSize = _tensorSize;
 
-  const double mu = properties[p_muEff];
-  const double lambda = properties[p_lambdaEff];
-  const double muRatio[numMaxwellModels] = {
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
+  const PylithScalar muRatio[numMaxwellModels] = {
     properties[p_shearRatio  ],
     properties[p_shearRatio+1],
     properties[p_shearRatio+2]
   };
 
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2/3.0;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2/3.0;
 
   // Initial stress and strain values
-  const double meanStrainInitial =
+  const PylithScalar meanStrainInitial =
     (initialStrain[0] + initialStrain[1] + initialStrain[2])/3.0;
-  const double meanStressInitial =
+  const PylithScalar meanStressInitial =
     (initialStress[0] + initialStress[1] + initialStress[2])/3.0;
-  const double devStrainInitial[] = {initialStrain[0] - meanStrainInitial,
+  const PylithScalar devStrainInitial[] = {initialStrain[0] - meanStrainInitial,
 				     initialStrain[1] - meanStrainInitial,
 				     initialStrain[2] - meanStrainInitial,
 				     initialStrain[3],
 				     initialStrain[4],
 				     initialStrain[5]};
-  const double devStressInitial[] = {initialStress[0] - meanStressInitial,
+  const PylithScalar devStressInitial[] = {initialStress[0] - meanStressInitial,
 				     initialStress[1] - meanStressInitial,
 				     initialStress[2] - meanStressInitial,
 				     initialStress[3],
@@ -524,20 +524,20 @@
 				     initialStress[5]};
   // :TODO: Need to determine how to incorporate state variables
   // Mean stress and strain for time t + dt
-  const double meanStrainTpdt = (totalStrain[0] +
+  const PylithScalar meanStrainTpdt = (totalStrain[0] +
 				 totalStrain[1] +
 				 totalStrain[2]) / 3.0;
   
-  const double meanStressTpdt = 3.0 * bulkModulus *
+  const PylithScalar meanStressTpdt = 3.0 * bulkModulus *
     (meanStrainTpdt - meanStrainInitial) + meanStressInitial;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
-  double visFrac = 0.0;
+  PylithScalar visFrac = 0.0;
   for (int imodel=0; imodel < numMaxwellModels; ++imodel) 
     visFrac += muRatio[imodel];
   assert(visFrac <= 1.0);
-  const double elasFrac = 1.0 - visFrac;
+  const PylithScalar elasFrac = 1.0 - visFrac;
 
   PetscLogFlops(23 + numMaxwellModels);
 
@@ -559,8 +559,8 @@
   } // else
 
   // Compute new stresses
-  double devStrainTpdt = 0.0;
-  double devStressTpdt = 0.0;
+  PylithScalar devStrainTpdt = 0.0;
+  PylithScalar devStressTpdt = 0.0;
   for (int iComp=0; iComp < tensorSize; ++iComp) {
     devStrainTpdt = totalStrain[iComp] - diag[iComp] * meanStrainTpdt -
       devStrainInitial[iComp];
@@ -581,17 +581,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::GenMaxwellIsotropic3D::_calcElasticConstsElastic(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 { // _calcElasticConstsElastic
   assert(0 != elasticConsts);
@@ -607,11 +607,11 @@
   assert(0 != initialStrain);
   assert(_GenMaxwellIsotropic3D::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_muEff];
-  const double lambda = properties[p_lambdaEff];
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
 
   elasticConsts[ 0] = lambda2mu; // C1111
   elasticConsts[ 1] = lambda; // C1122
@@ -658,17 +658,17 @@
 // as a viscoelastic material.
 void
 pylith::materials::GenMaxwellIsotropic3D::_calcElasticConstsViscoelastic(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 { // _calcElasticConstsViscoelastic
   assert(0 != elasticConsts);
@@ -686,18 +686,18 @@
 
   const int numMaxwellModels = _GenMaxwellIsotropic3D::numMaxwellModels;
 
-  const double mu = properties[p_muEff];
-  const double lambda = properties[p_lambdaEff];
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2 / 3.0;
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2 / 3.0;
 
   // Compute viscous contribution.
-  double visFac = 0.0;
-  double visFrac = 0.0;
-  double shearRatio = 0.0;
+  PylithScalar visFac = 0.0;
+  PylithScalar visFrac = 0.0;
+  PylithScalar shearRatio = 0.0;
   for (int imodel = 0; imodel < numMaxwellModels; ++imodel) {
     shearRatio = properties[p_shearRatio + imodel];
-    double maxwellTime = pylith::PYLITH_MAXDOUBLE;
+    PylithScalar maxwellTime = pylith::PYLITH_MAXDOUBLE;
     visFrac += shearRatio;
     if (shearRatio != 0.0) {
       maxwellTime = properties[p_maxwellTime + imodel];
@@ -705,8 +705,8 @@
 	shearRatio*ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
     } // if
   } // for
-  double elasFrac = 1.0 - visFrac;
-  double shearFac = elasFrac + visFac;
+  PylithScalar elasFrac = 1.0 - visFrac;
+  PylithScalar shearFac = elasFrac + visFac;
 
   elasticConsts[ 0] = bulkModulus + 4.0*mu/3.0 * shearFac; // C1111
   elasticConsts[ 1] = bulkModulus - 2.0*mu/3.0 * shearFac; // C1122
@@ -762,15 +762,15 @@
 // Update state variables.
 void
 pylith::materials::GenMaxwellIsotropic3D::_updateStateVarsElastic(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVarsElastic
   assert(0 != stateVars);
@@ -786,24 +786,24 @@
 
   const int tensorSize = _tensorSize;
 
-  const double strainTpdt[] = {totalStrain[0] - initialStrain[0],
+  const PylithScalar strainTpdt[] = {totalStrain[0] - initialStrain[0],
 			       totalStrain[1] - initialStrain[1],
 			       totalStrain[2] - initialStrain[2],
 			       totalStrain[3] - initialStrain[3],
 			       totalStrain[4] - initialStrain[4],
 			       totalStrain[5] - initialStrain[5]};
-  const double meanStrainTpdt =
+  const PylithScalar meanStrainTpdt =
     (strainTpdt[0] + strainTpdt[1] + strainTpdt[2])/3.0;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
   // Update total strain
   for (int iComp=0; iComp < tensorSize; ++iComp)
     stateVars[s_totalStrain+iComp] = totalStrain[iComp];
 
   // Initialize all viscous strains to deviatoric elastic strains.
-  double devStrain = 0.0;
-  double shearRatio = 0.0;
+  PylithScalar devStrain = 0.0;
+  PylithScalar shearRatio = 0.0;
   for (int iComp=0; iComp < tensorSize; ++iComp) {
     devStrain = strainTpdt[iComp] - diag[iComp] * meanStrainTpdt;
     // Maxwell model 1
@@ -822,15 +822,15 @@
 // Update state variables.
 void
 pylith::materials::GenMaxwellIsotropic3D::_updateStateVarsViscoelastic(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVarsViscoelastic
   assert(0 != stateVars);
@@ -870,11 +870,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::GenMaxwellIsotropic3D::_stableTimeStepImplicit(
-					   const double* properties,
+					   const PylithScalar* properties,
 					   const int numProperties,
-					   const double* stateVars,
+					   const PylithScalar* stateVars,
 					   const int numStateVars) const
 { // _stableTimeStepImplicit
   assert(0 != properties);
@@ -882,12 +882,12 @@
   assert(0 != stateVars);
   assert(_numVarsQuadPt == numStateVars);
 
-  double dtStable = pylith::PYLITH_MAXDOUBLE;
+  PylithScalar dtStable = pylith::PYLITH_MAXDOUBLE;
 
   const int numMaxwellModels = _GenMaxwellIsotropic3D::numMaxwellModels;
   for (int i=0; i < numMaxwellModels; ++i) {
-    const double maxwellTime = properties[p_maxwellTime+i];
-    const double dt = 0.2*maxwellTime;
+    const PylithScalar maxwellTime = properties[p_maxwellTime+i];
+    const PylithScalar dt = 0.2*maxwellTime;
     if (dt < dtStable)
       dtStable = dt;
   } // for
@@ -900,15 +900,15 @@
 // Compute viscous strain for current time step.
 void
 pylith::materials::GenMaxwellIsotropic3D::_computeStateVars(
-					       const double* stateVars,
+					       const PylithScalar* stateVars,
 					       const int numStateVars,
-					       const double* properties,
+					       const PylithScalar* properties,
 					       const int numProperties,
-					       const double* totalStrain,
+					       const PylithScalar* totalStrain,
 					       const int strainSize,
-					       const double* initialStress,
+					       const PylithScalar* initialStress,
 					       const int initialStressSize,
-					       const double* initialStrain,
+					       const PylithScalar* initialStrain,
 					       const int initialStrainSize)
 { // _computeStateVars
   assert(0 != stateVars);
@@ -925,23 +925,23 @@
   const int tensorSize = _tensorSize;
   const int numMaxwellModels = _GenMaxwellIsotropic3D::numMaxwellModels;
 
-  const double muRatio[numMaxwellModels] = {
+  const PylithScalar muRatio[numMaxwellModels] = {
     properties[p_shearRatio  ],
     properties[p_shearRatio+1],
     properties[p_shearRatio+2]
   };
-  const double maxwellTime[numMaxwellModels] = {
+  const PylithScalar maxwellTime[numMaxwellModels] = {
     properties[p_maxwellTime  ],
     properties[p_maxwellTime+1],
     properties[p_maxwellTime+2]
   };
 
   // :TODO: Need to account for initial values for state variables
-  const double meanStrainTpdt =
+  const PylithScalar meanStrainTpdt =
     (totalStrain[0] + totalStrain[1] + totalStrain[2])/3.0;
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
-  const double meanStrainT = 
+  const PylithScalar meanStrainT = 
     ( stateVars[s_totalStrain+0] +
       stateVars[s_totalStrain+1] +
       stateVars[s_totalStrain+2] ) / 3.0;
@@ -949,16 +949,16 @@
   PetscLogFlops(6);
 
   // Compute Prony series terms
-  double_array dq(numMaxwellModels);
+  scalar_array dq(numMaxwellModels);
   dq = 0.0;
   for (int i=0; i < numMaxwellModels; ++i)
     if (muRatio[i] != 0.0)
       dq[i] = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime[i]);
 
   // Compute new viscous strains
-  double devStrainTpdt = 0.0;
-  double devStrainT = 0.0;
-  double deltaStrain = 0.0;
+  PylithScalar devStrainTpdt = 0.0;
+  PylithScalar devStrainT = 0.0;
+  PylithScalar deltaStrain = 0.0;
   
   for (int iComp=0; iComp < tensorSize; ++iComp) {
     devStrainTpdt = totalStrain[iComp] - diag[iComp] * meanStrainTpdt;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -67,7 +67,7 @@
    *
    * @param dt Current time step.
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -86,15 +86,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -102,7 +102,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute initial state variables from values in spatial database.
@@ -110,8 +110,8 @@
    * @param stateValues Array of state variable values.
    * @param dbValues Array of database values.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues);
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues);
 
   // Note: We do not need to dimensionalize or nondimensionalize state
   // variables because there are strains, which are dimensionless.
@@ -125,10 +125,10 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -150,17 +150,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -179,17 +179,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-		          const double* initialStress,
+		          const PylithScalar* initialStress,
 		          const int initialStressSize,
-		          const double* initialStrain,
+		          const PylithScalar* initialStrain,
 		          const int initialStrainSize);
 
   /** Update state variables (for next time step).
@@ -205,15 +205,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVars(double* const stateVars,
+  void _updateStateVars(PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* totalStrain,
+			const PylithScalar* totalStrain,
 			const int strainSize,
-			const double* initialStress,
+			const PylithScalar* initialStress,
 			const int initialStressSize,
-			const double* initialStrain,
+			const PylithScalar* initialStrain,
 			const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -225,9 +225,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
@@ -235,46 +235,46 @@
 
   /// Member prototype for _calcStress()
   typedef void (pylith::materials::GenMaxwellIsotropic3D::*calcStress_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
      const bool);
 
   /// Member prototype for _calcElasticConsts()
   typedef void (pylith::materials::GenMaxwellIsotropic3D::*calcElasticConsts_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   /// Member prototype for _updateStateVars()
   typedef void (pylith::materials::GenMaxwellIsotropic3D::*updateStateVars_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -296,17 +296,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressElastic(double* const stress,
+  void _calcStressElastic(PylithScalar* const stress,
 			  const int stressSize,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize,
 			  const bool computeStateVars);
 
@@ -326,17 +326,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressViscoelastic(double* const stress,
+  void _calcStressViscoelastic(PylithScalar* const stress,
 			       const int stressSize,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* stateVars,
+			       const PylithScalar* stateVars,
 			       const int numStateVars,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize,
 			       const bool computeStateVars);
 
@@ -356,17 +356,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsElastic(double* const elasticConsts,
+  void _calcElasticConstsElastic(PylithScalar* const elasticConsts,
 				 const int numElasticConsts,
-				 const double* properties,
+				 const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars,
-				 const double* totalStrain,
+				 const PylithScalar* totalStrain,
 				 const int strainSize,
-				 const double* initialStress,
+				 const PylithScalar* initialStress,
 				 const int initialStressSize,
-				 const double* initialStrain,
+				 const PylithScalar* initialStrain,
 				 const int initialStrainSize);
 
   /** Compute derivatives of elasticity matrix from properties as a
@@ -385,17 +385,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsViscoelastic(double* const elasticConsts,
+  void _calcElasticConstsViscoelastic(PylithScalar* const elasticConsts,
 				      const int numElasticConsts,
-				      const double* properties,
+				      const PylithScalar* properties,
 				      const int numProperties,
-				      const double* stateVars,
+				      const PylithScalar* stateVars,
 				      const int numStateVars,
-				      const double* totalStrain,
+				      const PylithScalar* totalStrain,
 				      const int strainSize,
-				      const double* initialStress,
+				      const PylithScalar* initialStress,
 				      const int initialStressSize,
-				      const double* initialStrain,
+				      const PylithScalar* initialStrain,
 				      const int initialStrainSize);
 
   /** Update state variables after solve as an elastic material.
@@ -411,15 +411,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsElastic(double* const stateVars,
+  void _updateStateVarsElastic(PylithScalar* const stateVars,
 			       const int numStateVars,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize);
 
   /** Update state variables after solve as a viscoelastic material.
@@ -435,15 +435,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsViscoelastic(double* const stateVars,
+  void _updateStateVarsViscoelastic(PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize);
 
   /** Compute viscous strains (state variables) for the current time
@@ -460,22 +460,22 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _computeStateVars(const double* stateVars,
+  void _computeStateVars(const PylithScalar* stateVars,
 			 const int numStateVars,
-			 const double* properties,
+			 const PylithScalar* properties,
 			 const int numProperties,
-			 const double* totalStrain,
+			 const PylithScalar* totalStrain,
 			 const int strainSize,
-			 const double* initialStress,
+			 const PylithScalar* initialStress,
 			 const int initialStressSize,
-			 const double* initialStrain,
+			 const PylithScalar* initialStrain,
 			 const int initialStrainSize);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 
   /// Viscous strain array.
-  double_array _viscousStrain;
+  scalar_array _viscousStrain;
 
   /// Method to use for _calcElasticConsts().
   calcElasticConsts_fn_type _calcElasticConstsFn;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -26,7 +26,7 @@
 // Set current time step.
 inline
 void
-pylith::materials::GenMaxwellIsotropic3D::timeStep(const double dt) {
+pylith::materials::GenMaxwellIsotropic3D::timeStep(const PylithScalar dt) {
   // Jacobian needs to be reformed if the time step size changes.
   if (_dt > 0.0 && dt != _dt)
     _needNewJacobian = true;
@@ -37,17 +37,17 @@
 inline
 void
 pylith::materials::GenMaxwellIsotropic3D::_calcStress(
-					      double* const stress,
+					      PylithScalar* const stress,
 					      const int stressSize,
-					      const double* properties,
+					      const PylithScalar* properties,
 					      const int numProperties,
-					      const double* stateVars,
+					      const PylithScalar* stateVars,
 					      const int numStateVars,
-					      const double* totalStrain,
+					      const PylithScalar* totalStrain,
 					      const int strainSize,
-					      const double* initialStress,
+					      const PylithScalar* initialStress,
 					      const int initialStressSize,
-					      const double* initialStrain,
+					      const PylithScalar* initialStrain,
 					      const int initialStrainSize,
 					      const bool computeStateVars) {
   assert(0 != _calcStressFn);
@@ -64,17 +64,17 @@
 inline
 void
 pylith::materials::GenMaxwellIsotropic3D::_calcElasticConsts(
-					      double* const elasticConsts,
+					      PylithScalar* const elasticConsts,
 					      const int numElasticConsts,
-					      const double* properties,
+					      const PylithScalar* properties,
 					      const int numProperties,
-					      const double* stateVars,
+					      const PylithScalar* stateVars,
 					      const int numStateVars,
-					      const double* totalStrain,
+					      const PylithScalar* totalStrain,
 					      const int strainSize,
-					      const double* initialStress,
+					      const PylithScalar* initialStress,
 					      const int initialStressSize,
-					      const double* initialStrain,
+					      const PylithScalar* initialStrain,
 					      const int initialStrainSize) {
   assert(0 != _calcElasticConstsFn);
   CALL_MEMBER_FN(*this, _calcElasticConstsFn)(elasticConsts, numElasticConsts,
@@ -89,15 +89,15 @@
 inline
 void
 pylith::materials::GenMaxwellIsotropic3D::_updateStateVars(
-					     double* const stateVars,
+					     PylithScalar* const stateVars,
 					     const int numStateVars,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize) {
   assert(0 != _updateStateVarsFn);
   CALL_MEMBER_FN(*this, _updateStateVarsFn)(stateVars, numStateVars,

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "ViscoelasticMaxwell.hh" // USES computeVisStrain
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -231,16 +231,16 @@
 // Compute parameters from values in spatial database.
 void
 pylith::materials::GenMaxwellPlaneStrain::_dbToProperties(
-					    double* const propValues,
-					    const double_array& dbValues)
+					    PylithScalar* const propValues,
+					    const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_GenMaxwellPlaneStrain::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
   const int numMaxwellModels = _GenMaxwellPlaneStrain::numMaxwellModels;
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
@@ -253,8 +253,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs * vs;
-  const double lambda = density * vp * vp - 2.0 * mu;
+  const PylithScalar mu = density * vs * vs;
+  const PylithScalar lambda = density * vp * vp - 2.0 * mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -270,7 +270,7 @@
   propValues[p_muEff] = mu;
   propValues[p_lambdaEff] = lambda;
 
-  double visFrac = 0.0;
+  PylithScalar visFrac = 0.0;
   for (int imodel = 0; imodel < numMaxwellModels; ++imodel) 
     visFrac += dbValues[db_shearRatio + imodel];
   if (visFrac > 1.0) {
@@ -286,10 +286,10 @@
 
   // Loop over number of Maxwell models.
   for (int imodel = 0; imodel < numMaxwellModels; ++imodel) {
-    double muRatio = dbValues[db_shearRatio + imodel];
-    double viscosity = dbValues[db_viscosity + imodel];
-    double muFac = muRatio * mu;
-    double maxwellTime = pylith::PYLITH_MAXDOUBLE;
+    PylithScalar muRatio = dbValues[db_shearRatio + imodel];
+    PylithScalar viscosity = dbValues[db_viscosity + imodel];
+    PylithScalar muFac = muRatio * mu;
+    PylithScalar maxwellTime = pylith::PYLITH_MAXDOUBLE;
     if (muFac > 0.0)
       maxwellTime = viscosity / muFac;
     if (muRatio < 0.0 || viscosity < 0.0 || muFac < 0.0 || maxwellTime < 0.0) {
@@ -311,16 +311,16 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::GenMaxwellPlaneStrain::_nondimProperties(double* const values,
+pylith::materials::GenMaxwellPlaneStrain::_nondimProperties(PylithScalar* const values,
 							 const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
   values[p_muEff] = 
@@ -337,16 +337,16 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::GenMaxwellPlaneStrain::_dimProperties(double* const values,
+pylith::materials::GenMaxwellPlaneStrain::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
   values[p_muEff] = 
@@ -364,8 +364,8 @@
 // Compute initial state variables from values in spatial database.
 void
 pylith::materials::GenMaxwellPlaneStrain::_dbToStateVars(
-					double* const stateValues,
-					const double_array& dbValues)
+					PylithScalar* const stateValues,
+					const scalar_array& dbValues)
 { // _dbToStateVars
   assert(0 != stateValues);
   const int numDBValues = dbValues.size();
@@ -385,14 +385,14 @@
 // Nondimensionalize state variables.
 void
 pylith::materials::GenMaxwellPlaneStrain::_nondimStateVars(
-		                            double* const values,
+		                            PylithScalar* const values,
 		                            const int nvalues) const
 { // _nondimStateVars
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numVarsQuadPt);
 
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
   _normalizer->nondimensionalize(&values[s_stressZZInitial], 1, pressureScale);
 
   PetscLogFlops(1);
@@ -402,14 +402,14 @@
 // Dimensionalize state variables.
 void
 pylith::materials::GenMaxwellPlaneStrain::_dimStateVars(
-						double* const values,
+						PylithScalar* const values,
 						const int nvalues) const
 { // _dimStateVars
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numVarsQuadPt);
 
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
   _normalizer->dimensionalize(&values[s_stressZZInitial], 1, pressureScale);
 
   PetscLogFlops(1);
@@ -418,10 +418,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::GenMaxwellPlaneStrain::_calcDensity(double* const density,
-						    const double* properties,
+pylith::materials::GenMaxwellPlaneStrain::_calcDensity(PylithScalar* const density,
+						    const PylithScalar* properties,
 						    const int numProperties,
-						    const double* stateVars,
+						    const PylithScalar* stateVars,
 						    const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -436,17 +436,17 @@
 // material.
 void
 pylith::materials::GenMaxwellPlaneStrain::_calcStressElastic(
-					     double* const stress,
+					     PylithScalar* const stress,
 					     const int stressSize,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize,
 					     const bool computeStateVars)
 { // _calcStressElastic
@@ -463,16 +463,16 @@
   assert(0 != initialStrain);
   assert(_GenMaxwellPlaneStrain::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_muEff];
-  const double lambda = properties[p_lambdaEff];
-  const double mu2 = 2.0 * mu;
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
+  const PylithScalar mu2 = 2.0 * mu;
 
   // :TODO: Need to consider initial state variables????
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e12 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e12 = totalStrain[2] - initialStrain[2];
   
-  const double s12 = lambda * (e11 + e22);
+  const PylithScalar s12 = lambda * (e11 + e22);
 
   stress[0] = s12 + mu2 * e11 + initialStress[0];
   stress[1] = s12 + mu2 * e22 + initialStress[1];
@@ -487,17 +487,17 @@
 // material.
 void
 pylith::materials::GenMaxwellPlaneStrain::_calcStressViscoelastic(
-					     double* const stress,
+					     PylithScalar* const stress,
 					     const int stressSize,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize,
 					     const bool computeStateVars)
 { // _calcStressViscoelastic
@@ -517,41 +517,41 @@
   const int numMaxwellModels = _GenMaxwellPlaneStrain::numMaxwellModels;
   const int tensorSize = _GenMaxwellPlaneStrain::tensorSize;
 
-  const double mu = properties[p_muEff];
-  const double lambda = properties[p_lambdaEff];
-  const double muRatio[numMaxwellModels] = {
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
+  const PylithScalar muRatio[numMaxwellModels] = {
     properties[p_shearRatio  ],
     properties[p_shearRatio+1],
     properties[p_shearRatio+2]
   };
-  const double stressZZInitial = stateVars[s_stressZZInitial];
+  const PylithScalar stressZZInitial = stateVars[s_stressZZInitial];
 
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2/3.0;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2/3.0;
 
   // Initial stress and strain values
-  const double meanStrainInitial = (initialStrain[0] + initialStrain[1]) / 3.0;
-  const double meanStressInitial = (initialStress[0] + initialStress[1] +
+  const PylithScalar meanStrainInitial = (initialStrain[0] + initialStrain[1]) / 3.0;
+  const PylithScalar meanStressInitial = (initialStress[0] + initialStress[1] +
 				    stressZZInitial) / 3.0;
-  const double devStrainInitial[] = {initialStrain[0] - meanStrainInitial,
+  const PylithScalar devStrainInitial[] = {initialStrain[0] - meanStrainInitial,
 				     initialStrain[1] - meanStrainInitial,
 				     initialStrain[2]};
-  const double devStressInitial[] = {initialStress[0] - meanStressInitial,
+  const PylithScalar devStressInitial[] = {initialStress[0] - meanStressInitial,
 				     initialStress[1] - meanStressInitial,
 				     initialStress[2]};
 
   // Mean stress and strain for t + dt
-  const double meanStrainTpdt = (totalStrain[0] + totalStrain[1]) / 3.0;
-  const double meanStressTpdt = 3.0 * bulkModulus *
+  const PylithScalar meanStrainTpdt = (totalStrain[0] + totalStrain[1]) / 3.0;
+  const PylithScalar meanStressTpdt = 3.0 * bulkModulus *
     (meanStrainTpdt - meanStrainInitial) + meanStressInitial;
 
-  const double diag[] = { 1.0, 1.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 0.0 };
   
-  double visFrac = 0.0;
+  PylithScalar visFrac = 0.0;
   for (int imodel=0; imodel < numMaxwellModels; ++imodel) 
     visFrac += muRatio[imodel];
   assert(visFrac <= 1.0);
-  const double elasFrac = 1.0 - visFrac;
+  const PylithScalar elasFrac = 1.0 - visFrac;
 
   PetscLogFlops(18 + numMaxwellModels);
 
@@ -573,8 +573,8 @@
   } // else
 
   // Compute new stresses
-  double devStrainTpdt = 0.0;
-  double devStressTpdt = 0.0;
+  PylithScalar devStrainTpdt = 0.0;
+  PylithScalar devStressTpdt = 0.0;
   const int visIndex[] = {0, 1, 3};
   for (int iComp=0; iComp < tensorSize; ++iComp) {
     devStrainTpdt = totalStrain[iComp] - diag[iComp] * meanStrainTpdt -
@@ -596,17 +596,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::GenMaxwellPlaneStrain::_calcElasticConstsElastic(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 { // _calcElasticConstsElastic
   assert(0 != elasticConsts);
@@ -622,11 +622,11 @@
   assert(0 != initialStrain);
   assert(_GenMaxwellPlaneStrain::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_muEff];
-  const double lambda = properties[p_lambdaEff];
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
 
   elasticConsts[ 0] = lambda2mu; // C1111
   elasticConsts[ 1] = lambda; // C1122
@@ -646,17 +646,17 @@
 // as a viscoelastic material.
 void
 pylith::materials::GenMaxwellPlaneStrain::_calcElasticConstsViscoelastic(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 { // _calcElasticConstsViscoelastic
   assert(0 != elasticConsts);
@@ -674,18 +674,18 @@
 
   const int numMaxwellModels = _GenMaxwellPlaneStrain::numMaxwellModels;
 
-  const double mu = properties[p_muEff];
-  const double lambda = properties[p_lambdaEff];
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2 / 3.0;
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2 / 3.0;
 
   // Compute viscous contribution.
-  double visFac = 0.0;
-  double visFrac = 0.0;
-  double shearRatio = 0.0;
+  PylithScalar visFac = 0.0;
+  PylithScalar visFrac = 0.0;
+  PylithScalar shearRatio = 0.0;
   for (int imodel = 0; imodel < numMaxwellModels; ++imodel) {
     shearRatio = properties[p_shearRatio + imodel];
-    double maxwellTime = pylith::PYLITH_MAXDOUBLE;
+    PylithScalar maxwellTime = pylith::PYLITH_MAXDOUBLE;
     visFrac += shearRatio;
     if (shearRatio != 0.0) {
       maxwellTime = properties[p_maxwellTime + imodel];
@@ -693,8 +693,8 @@
 	shearRatio * ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
     } // if
   } // for
-  double elasFrac = 1.0 - visFrac;
-  double shearFac = elasFrac + visFac;
+  PylithScalar elasFrac = 1.0 - visFrac;
+  PylithScalar shearFac = elasFrac + visFac;
 
   elasticConsts[ 0] = bulkModulus + 4.0 * mu / 3.0 * shearFac; // C1111
   elasticConsts[ 1] = bulkModulus - 2.0 * mu / 3.0 * shearFac; // C1122
@@ -713,15 +713,15 @@
 // Update state variables.
 void
 pylith::materials::GenMaxwellPlaneStrain::_updateStateVarsElastic(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVarsElastic
   assert(0 != stateVars);
@@ -737,21 +737,21 @@
 
   const int tensorSize = _tensorSize;
 
-  const double strainTpdt[] = {totalStrain[0] - initialStrain[0],
+  const PylithScalar strainTpdt[] = {totalStrain[0] - initialStrain[0],
 			       totalStrain[1] - initialStrain[1],
 			       0.0,
 			       totalStrain[2] - initialStrain[2]};
-  const double meanStrainTpdt = (strainTpdt[0] + strainTpdt[1])/3.0;
+  const PylithScalar meanStrainTpdt = (strainTpdt[0] + strainTpdt[1])/3.0;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0};
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0};
 
   // Update total strain
   for (int iComp=0; iComp < tensorSize; ++iComp)
     stateVars[s_totalStrain+iComp] = totalStrain[iComp];
 
   // Initialize all viscous strains to deviatoric elastic strains.
-  double devStrain = 0.0;
-  double shearRatio = 0.0;
+  PylithScalar devStrain = 0.0;
+  PylithScalar shearRatio = 0.0;
   for (int iComp=0; iComp < 4; ++iComp) {
     devStrain = strainTpdt[iComp] - diag[iComp] * meanStrainTpdt;
     // Maxwell model 1
@@ -770,15 +770,15 @@
 // Update state variables.
 void
 pylith::materials::GenMaxwellPlaneStrain::_updateStateVarsViscoelastic(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVarsViscoelastic
   assert(0 != stateVars);
@@ -818,11 +818,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::GenMaxwellPlaneStrain::_stableTimeStepImplicit(
-					   const double* properties,
+					   const PylithScalar* properties,
 					   const int numProperties,
-					   const double* stateVars,
+					   const PylithScalar* stateVars,
 					   const int numStateVars) const
 { // _stableTimeStepImplicit
   assert(0 != properties);
@@ -830,12 +830,12 @@
   assert(0 != stateVars);
   assert(_numVarsQuadPt == numStateVars);
 
-  double dtStable = pylith::PYLITH_MAXDOUBLE;
+  PylithScalar dtStable = pylith::PYLITH_MAXDOUBLE;
 
   const int numMaxwellModels = _GenMaxwellPlaneStrain::numMaxwellModels;
   for (int i=0; i < numMaxwellModels; ++i) {
-    const double maxwellTime = properties[p_maxwellTime+i];
-    const double dt = 0.2*maxwellTime;
+    const PylithScalar maxwellTime = properties[p_maxwellTime+i];
+    const PylithScalar dt = 0.2*maxwellTime;
     if (dt < dtStable)
       dtStable = dt;
   } // for
@@ -848,15 +848,15 @@
 // Compute viscous strain for current time step.
 void
 pylith::materials::GenMaxwellPlaneStrain::_computeStateVars(
-					       const double* stateVars,
+					       const PylithScalar* stateVars,
 					       const int numStateVars,
-					       const double* properties,
+					       const PylithScalar* properties,
 					       const int numProperties,
-					       const double* totalStrain,
+					       const PylithScalar* totalStrain,
 					       const int strainSize,
-					       const double* initialStress,
+					       const PylithScalar* initialStress,
 					       const int initialStressSize,
-					       const double* initialStrain,
+					       const PylithScalar* initialStrain,
 					       const int initialStrainSize)
 { // _computeStateVars
   assert(0 != stateVars);
@@ -873,44 +873,44 @@
   const int tensorSize = _tensorSize;
   const int numMaxwellModels = _GenMaxwellPlaneStrain::numMaxwellModels;
 
-  const double muRatio[numMaxwellModels] = {
+  const PylithScalar muRatio[numMaxwellModels] = {
     properties[p_shearRatio  ],
     properties[p_shearRatio+1],
     properties[p_shearRatio+2]
   };
-  const double maxwellTime[numMaxwellModels] = {
+  const PylithScalar maxwellTime[numMaxwellModels] = {
     properties[p_maxwellTime  ],
     properties[p_maxwellTime+1],
     properties[p_maxwellTime+2]
   };
 
-  const double strainTpdt[] = {totalStrain[0],
+  const PylithScalar strainTpdt[] = {totalStrain[0],
 			       totalStrain[1],
 			       0.0,
 			       totalStrain[2]};
-  const double strainT[] = {stateVars[s_totalStrain+0],
+  const PylithScalar strainT[] = {stateVars[s_totalStrain+0],
 			    stateVars[s_totalStrain+1],
 			    0.0,
 			    stateVars[s_totalStrain+2]};
   
-  const double meanStrainTpdt = (strainTpdt[0] + strainTpdt[1])/3.0;
-  const double meanStrainT = (strainT[0] + strainT[1]) / 3.0;
+  const PylithScalar meanStrainTpdt = (strainTpdt[0] + strainTpdt[1])/3.0;
+  const PylithScalar meanStrainT = (strainT[0] + strainT[1]) / 3.0;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0 };
 
   PetscLogFlops(4);
 
   // Compute Prony series terms
-  double_array dq(numMaxwellModels);
+  scalar_array dq(numMaxwellModels);
   dq = 0.0;
   for (int i=0; i < numMaxwellModels; ++i)
     if (muRatio[i] != 0.0)
       dq[i] = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime[i]);
 
   // Compute new viscous strains
-  double devStrainTpdt = 0.0;
-  double devStrainT = 0.0;
-  double deltaStrain = 0.0;
+  PylithScalar devStrainTpdt = 0.0;
+  PylithScalar devStrainT = 0.0;
+  PylithScalar deltaStrain = 0.0;
   
   for (int iComp=0; iComp < 4; ++iComp) {
     devStrainTpdt = strainTpdt[iComp] - diag[iComp] * meanStrainTpdt;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -65,7 +65,7 @@
    *
    * @param dt Current time step.
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -84,15 +84,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -100,7 +100,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute initial state variables from values in spatial database.
@@ -108,15 +108,15 @@
    * @param stateValues Array of state variable values.
    * @param dbValues Array of database values.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues);
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues);
 
   /** Nondimensionalize state variables..
    *
    * @param values Array of state variables.
    * @param nvalues Number of values.
    */
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
                         const int nvalues) const;
 
   /** Dimensionalize state variables.
@@ -124,7 +124,7 @@
    * @param values Array of state variables.
    * @param nvalues Number of values.
    */
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
                      const int nvalues) const;
 
   /** Compute density from properties.
@@ -135,10 +135,10 @@
    * @param stateVars Number of state variables.
    * @param numStateVars Number of state variables.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -160,17 +160,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -189,17 +189,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-		          const double* initialStress,
+		          const PylithScalar* initialStress,
 		          const int initialStressSize,
-		          const double* initialStrain,
+		          const PylithScalar* initialStrain,
 		          const int initialStrainSize);
 
   /** Update state variables (for next time step).
@@ -215,15 +215,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVars(double* const stateVars,
+  void _updateStateVars(PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* totalStrain,
+			const PylithScalar* totalStrain,
 			const int strainSize,
-			const double* initialStress,
+			const PylithScalar* initialStress,
 			const int initialStressSize,
-			const double* initialStrain,
+			const PylithScalar* initialStrain,
 			const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -235,9 +235,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
@@ -245,46 +245,46 @@
 
   /// Member prototype for _calcStress()
   typedef void (pylith::materials::GenMaxwellPlaneStrain::*calcStress_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
      const bool);
 
   /// Member prototype for _calcElasticConsts()
   typedef void (pylith::materials::GenMaxwellPlaneStrain::*calcElasticConsts_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   /// Member prototype for _updateStateVars()
   typedef void (pylith::materials::GenMaxwellPlaneStrain::*updateStateVars_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -306,17 +306,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressElastic(double* const stress,
+  void _calcStressElastic(PylithScalar* const stress,
 			  const int stressSize,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize,
 			  const bool computeStateVars);
 
@@ -336,17 +336,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressViscoelastic(double* const stress,
+  void _calcStressViscoelastic(PylithScalar* const stress,
 			       const int stressSize,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* stateVars,
+			       const PylithScalar* stateVars,
 			       const int numStateVars,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize,
 			       const bool computeStateVars);
 
@@ -366,17 +366,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsElastic(double* const elasticConsts,
+  void _calcElasticConstsElastic(PylithScalar* const elasticConsts,
 				 const int numElasticConsts,
-				 const double* properties,
+				 const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars,
-				 const double* totalStrain,
+				 const PylithScalar* totalStrain,
 				 const int strainSize,
-			         const double* initialStress,
+			         const PylithScalar* initialStress,
 			         const int initialStressSize,
-			         const double* initialStrain,
+			         const PylithScalar* initialStrain,
 			         const int initialStrainSize);
 
   /** Compute derivatives of elasticity matrix from properties as a
@@ -395,17 +395,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsViscoelastic(double* const elasticConsts,
+  void _calcElasticConstsViscoelastic(PylithScalar* const elasticConsts,
 				      const int numElasticConsts,
-				      const double* properties,
+				      const PylithScalar* properties,
 				      const int numProperties,
-				      const double* stateVars,
+				      const PylithScalar* stateVars,
 				      const int numStateVars,
-				      const double* totalStrain,
+				      const PylithScalar* totalStrain,
 				      const int strainSize,
-			              const double* initialStress,
+			              const PylithScalar* initialStress,
 			              const int initialStressSize,
-			              const double* initialStrain,
+			              const PylithScalar* initialStrain,
 			              const int initialStrainSize);
 
   /** Update state variables after solve as an elastic material.
@@ -421,15 +421,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsElastic(double* const stateVars,
+  void _updateStateVarsElastic(PylithScalar* const stateVars,
 			       const int numStateVars,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize);
 
   /** Update state variables after solve as a viscoelastic material.
@@ -445,15 +445,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsViscoelastic(double* const stateVars,
+  void _updateStateVarsViscoelastic(PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize);
 
   /** Compute viscous strains (state variables) for the current time
@@ -470,22 +470,22 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _computeStateVars(const double* stateVars,
+  void _computeStateVars(const PylithScalar* stateVars,
 			 const int numStateVars,
-			 const double* properties,
+			 const PylithScalar* properties,
 			 const int numProperties,
-			 const double* totalStrain,
+			 const PylithScalar* totalStrain,
 			 const int strainSize,
-			 const double* initialStress,
+			 const PylithScalar* initialStress,
 			 const int initialStressSize,
-			 const double* initialStrain,
+			 const PylithScalar* initialStrain,
 			 const int initialStrainSize);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 
   /// Viscous strain array.
-  double_array _viscousStrain;
+  scalar_array _viscousStrain;
 
   /// Method to use for _calcElasticConsts().
   calcElasticConsts_fn_type _calcElasticConstsFn;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -26,7 +26,7 @@
 // Set current time step.
 inline
 void
-pylith::materials::GenMaxwellPlaneStrain::timeStep(const double dt) {
+pylith::materials::GenMaxwellPlaneStrain::timeStep(const PylithScalar dt) {
   // Jacobian needs to be reformed if the time step size changes.
   if (_dt > 0.0 && dt != _dt)
     _needNewJacobian = true;
@@ -37,17 +37,17 @@
 inline
 void
 pylith::materials::GenMaxwellPlaneStrain::_calcStress(
-						double* const stress,
+						PylithScalar* const stress,
 						const int stressSize,
-						const double* properties,
+						const PylithScalar* properties,
 						const int numProperties,
-						const double* stateVars,
+						const PylithScalar* stateVars,
 						const int numStateVars,
-						const double* totalStrain,
+						const PylithScalar* totalStrain,
 						const int strainSize,
-						const double* initialStress,
+						const PylithScalar* initialStress,
 						const int initialStressSize,
-						const double* initialStrain,
+						const PylithScalar* initialStrain,
 						const int initialStrainSize,
 						const bool computeStateVars) {
   assert(0 != _calcStressFn);
@@ -64,17 +64,17 @@
 inline
 void
 pylith::materials::GenMaxwellPlaneStrain::_calcElasticConsts(
-						 double* const elasticConsts,
+						 PylithScalar* const elasticConsts,
 						 const int numElasticConsts,
-						 const double* properties,
+						 const PylithScalar* properties,
 						 const int numProperties,
-						 const double* stateVars,
+						 const PylithScalar* stateVars,
 						 const int numStateVars,
-						 const double* totalStrain,
+						 const PylithScalar* totalStrain,
 						 const int strainSize,
-						 const double* initialStress,
+						 const PylithScalar* initialStress,
 						 const int initialStressSize,
-						 const double* initialStrain,
+						 const PylithScalar* initialStrain,
 						 const int initialStrainSize) {
   assert(0 != _calcElasticConstsFn);
   CALL_MEMBER_FN(*this, _calcElasticConstsFn)(elasticConsts, numElasticConsts,
@@ -88,15 +88,15 @@
 // Update state variables after solve.
 inline
 void
-pylith::materials::GenMaxwellPlaneStrain::_updateStateVars(double* const stateVars,
+pylith::materials::GenMaxwellPlaneStrain::_updateStateVars(PylithScalar* const stateVars,
 						  const int numStateVars,
-						  const double* properties,
+						  const PylithScalar* properties,
 						  const int numProperties,
-						  const double* totalStrain,
+						  const PylithScalar* totalStrain,
 						  const int strainSize,
-						  const double* initialStress,
+						  const PylithScalar* initialStress,
 						  const int initialStressSize,
-						  const double* initialStrain,
+						  const PylithScalar* initialStrain,
 						  const int initialStrainSize) {
   assert(0 != _updateStateVarsFn);
   CALL_MEMBER_FN(*this, _updateStateVarsFn)(stateVars, numStateVars,

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "ViscoelasticMaxwell.hh" // USES computeVisStrain
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -277,16 +277,16 @@
 // Compute parameters from values in spatial database.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_dbToProperties(
-					    double* const propValues,
-					    const double_array& dbValues)
+					    PylithScalar* const propValues,
+					    const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_GenMaxwellQpQsIsotropic3D::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
   const int numMaxwellModels = _GenMaxwellQpQsIsotropic3D::numMaxwellModels;
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
@@ -299,8 +299,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double k = density * vp*vp - 4.0/3.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar k = density * vp*vp - 4.0/3.0*mu;
 
   if (k <= 0.0) {
     std::ostringstream msg;
@@ -316,7 +316,7 @@
   propValues[p_muEff] = mu;
   propValues[p_kEff] = k;
 
-  double visFrac = 0.0;
+  PylithScalar visFrac = 0.0;
   for (int imodel = 0; imodel < numMaxwellModels; ++imodel) 
     visFrac += dbValues[db_shearRatio + imodel];
   if (visFrac > 1.0) {
@@ -330,7 +330,7 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  double meanFrac = 0.0;
+  PylithScalar meanFrac = 0.0;
   for (int imodel = 0; imodel < numMaxwellModels; ++imodel) 
     meanFrac += dbValues[db_bulkRatio + imodel];
   if (meanFrac > 1.0) {
@@ -346,12 +346,12 @@
 
   // Loop over number of Maxwell models.
   for (int imodel=0; imodel < numMaxwellModels; ++imodel) {
-    double shearRatio = dbValues[db_shearRatio + imodel];
-    double bulkRatio = dbValues[db_bulkRatio + imodel];
-    double shearViscosity = dbValues[db_shearViscosity + imodel];
-    double bulkViscosity = dbValues[db_bulkViscosity + imodel];
-    double maxwellTimeShear = pylith::PYLITH_MAXDOUBLE;
-    double maxwellTimeBulk = pylith::PYLITH_MAXDOUBLE;
+    PylithScalar shearRatio = dbValues[db_shearRatio + imodel];
+    PylithScalar bulkRatio = dbValues[db_bulkRatio + imodel];
+    PylithScalar shearViscosity = dbValues[db_shearViscosity + imodel];
+    PylithScalar bulkViscosity = dbValues[db_bulkViscosity + imodel];
+    PylithScalar maxwellTimeShear = pylith::PYLITH_MAXDOUBLE;
+    PylithScalar maxwellTimeBulk = pylith::PYLITH_MAXDOUBLE;
     maxwellTimeShear = shearViscosity / mu;
     maxwellTimeBulk = bulkViscosity / k;
     if (shearRatio < 0.0 || shearViscosity < 0.0 || maxwellTimeShear < 0.0 || 
@@ -378,16 +378,16 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::GenMaxwellQpQsIsotropic3D::_nondimProperties(double* const values,
+pylith::materials::GenMaxwellQpQsIsotropic3D::_nondimProperties(PylithScalar* const values,
 								const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
 
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
@@ -408,16 +408,16 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::GenMaxwellQpQsIsotropic3D::_dimProperties(double* const values,
+pylith::materials::GenMaxwellQpQsIsotropic3D::_dimProperties(PylithScalar* const values,
 							     const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
 
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
@@ -439,8 +439,8 @@
 // Compute initial state variables from values in spatial database.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_dbToStateVars(
-					double* const stateValues,
-					const double_array& dbValues)
+					PylithScalar* const stateValues,
+					const scalar_array& dbValues)
 { // _dbToStateVars
   assert(0 != stateValues);
   const int numDBValues = dbValues.size();
@@ -461,10 +461,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::GenMaxwellQpQsIsotropic3D::_calcDensity(double* const density,
-						    const double* properties,
+pylith::materials::GenMaxwellQpQsIsotropic3D::_calcDensity(PylithScalar* const density,
+						    const PylithScalar* properties,
 						    const int numProperties,
-						    const double* stateVars,
+						    const PylithScalar* stateVars,
 						    const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -479,17 +479,17 @@
 // material.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_calcStressElastic(
-					     double* const stress,
+					     PylithScalar* const stress,
 					     const int stressSize,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize,
 					     const bool computeStateVars)
 { // _calcStressElastic
@@ -506,20 +506,20 @@
   assert(0 != initialStrain);
   assert(_GenMaxwellQpQsIsotropic3D::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_muEff];
-  const double k = properties[p_kEff];
-  const double mu2 = 2.0 * mu;
-  const double lambda = k - 2.0/3.0 * mu;
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar k = properties[p_kEff];
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda = k - 2.0/3.0 * mu;
 
   // :TODO: Need to consider initial state variables????
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e33 = totalStrain[2] - initialStrain[2];
-  const double e12 = totalStrain[3] - initialStrain[3];
-  const double e23 = totalStrain[4] - initialStrain[4];
-  const double e13 = totalStrain[5] - initialStrain[5];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e33 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e12 = totalStrain[3] - initialStrain[3];
+  const PylithScalar e23 = totalStrain[4] - initialStrain[4];
+  const PylithScalar e13 = totalStrain[5] - initialStrain[5];
   
-  const double s123 = lambda * (e11 + e22 + e33);
+  const PylithScalar s123 = lambda * (e11 + e22 + e33);
 
   stress[0] = s123 + mu2*e11 + initialStress[0];
   stress[1] = s123 + mu2*e22 + initialStress[1];
@@ -537,17 +537,17 @@
 // material.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_calcStressViscoelastic(
-					     double* const stress,
+					     PylithScalar* const stress,
 					     const int stressSize,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize,
 					     const bool computeStateVars)
 { // _calcStressViscoelastic
@@ -568,25 +568,25 @@
   const int numMaxwellModels = _GenMaxwellQpQsIsotropic3D::numMaxwellModels;
   const int tensorSize = _GenMaxwellQpQsIsotropic3D::tensorSize;
 
-  const double mu = properties[p_muEff];
-  const double bulkModulus = properties[p_kEff];
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar bulkModulus = properties[p_kEff];
 
-  const double mu2 = 2.0 * mu;
+  const PylithScalar mu2 = 2.0 * mu;
 
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e33 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e33 = totalStrain[2] - initialStrain[2];
   
-  const double e123 = e11 + e22 + e33;
-  const double meanStrainTpdt = e123 / 3.0;
+  const PylithScalar e123 = e11 + e22 + e33;
+  const PylithScalar meanStrainTpdt = e123 / 3.0;
 
-  double elasFracShear = 1.0;  // deviatoric (shear) component
-  double elasFracBulk = 1.0; // mean (bulk)  component
+  PylithScalar elasFracShear = 1.0;  // deviatoric (shear) component
+  PylithScalar elasFracBulk = 1.0; // mean (bulk)  component
   for (int imodel=0; imodel < numMaxwellModels; ++imodel) {
     elasFracShear -= properties[p_shearRatio+imodel];
     elasFracBulk -= properties[p_bulkRatio+imodel];
   } // for
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   assert(elasFracShear >= -tolerance);
   assert(elasFracBulk >= -tolerance);
   
@@ -612,16 +612,16 @@
 
 
   // Compute mean stresses.
-  double meanStrain = elasFracBulk * meanStrainTpdt;
+  PylithScalar meanStrain = elasFracBulk * meanStrainTpdt;
   for (int iModel=0; iModel < numMaxwellModels; ++iModel)
     meanStrain += _viscousMeanStrain[iModel];
-  const double meanStressTpdt = 3.0 * bulkModulus * meanStrain;
+  const PylithScalar meanStressTpdt = 3.0 * bulkModulus * meanStrain;
   
   // Compute stresses (mean + deviatoric)
   assert(6 == tensorSize);
-  const double diag[6] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[6] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
   for (int i=0; i < tensorSize; ++i) {
-    double devStrain = elasFracShear * 
+    PylithScalar devStrain = elasFracShear * 
       (totalStrain[i] - initialStrain[i] - diag[i]*meanStrainTpdt);
     for (int iModel=0; iModel < numMaxwellModels; ++iModel)
       devStrain += _viscousDevStrain[iModel*tensorSize+i];
@@ -635,17 +635,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_calcElasticConstsElastic(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 { // _calcElasticConstsElastic
   assert(0 != elasticConsts);
@@ -661,12 +661,12 @@
   assert(0 != initialStrain);
   assert(_GenMaxwellQpQsIsotropic3D::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_muEff];
-  const double k = properties[p_kEff];
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar k = properties[p_kEff];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = k + 4.0/3.0*mu;
-  const double lambda = k - 2.0/3.0*mu;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = k + 4.0/3.0*mu;
+  const PylithScalar lambda = k - 2.0/3.0*mu;
 
   elasticConsts[ 0] = lambda2mu; // C1111
   elasticConsts[ 1] = lambda; // C1122
@@ -713,17 +713,17 @@
 // as a viscoelastic material.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_calcElasticConstsViscoelastic(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 { // _calcElasticConstsViscoelastic
   assert(0 != elasticConsts);
@@ -743,37 +743,37 @@
   const int numMaxwellModels = _GenMaxwellQpQsIsotropic3D::numMaxwellModels;
   const int tensorSize = _GenMaxwellQpQsIsotropic3D::tensorSize;
 
-  const double mu = properties[p_muEff];
-  const double bulkModulus = properties[p_kEff];
-  const double mu2 = 2.0 * mu;
+  const PylithScalar mu = properties[p_muEff];
+  const PylithScalar bulkModulus = properties[p_kEff];
+  const PylithScalar mu2 = 2.0 * mu;
 
   // Compute viscous contribution. (deviatoric + mean)
-  double elasFracShear = 1.0;  // deviatoric (shear) component
-  double visFactorDev = 0.0;
-  double elasFracBulk = 1.0; // mean (bulk) component
-  double visFactorBulk = 0.0;
+  PylithScalar elasFracShear = 1.0;  // deviatoric (shear) component
+  PylithScalar visFactorDev = 0.0;
+  PylithScalar elasFracBulk = 1.0; // mean (bulk) component
+  PylithScalar visFactorBulk = 0.0;
   for (int iModel=0; iModel < numMaxwellModels; ++iModel) {
-    const double shearRatio = properties[p_shearRatio+iModel];
-    const double bulkRatio = properties[p_bulkRatio+iModel];
+    const PylithScalar shearRatio = properties[p_shearRatio+iModel];
+    const PylithScalar bulkRatio = properties[p_bulkRatio+iModel];
     elasFracShear -= shearRatio;
     elasFracBulk -= bulkRatio;
 
-    const double maxwellTimeShear = properties[p_maxwellTimeShear+iModel];
+    const PylithScalar maxwellTimeShear = properties[p_maxwellTimeShear+iModel];
     visFactorDev +=
       shearRatio*ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTimeShear);
-    const double maxwellTimeBulk = properties[p_maxwellTimeBulk+iModel];
+    const PylithScalar maxwellTimeBulk = properties[p_maxwellTimeBulk+iModel];
     visFactorBulk +=
       bulkRatio*ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTimeBulk);
   } // for
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   assert(elasFracShear >= -tolerance);
   assert(elasFracBulk >= -tolerance);
 
-  const double muEff = mu * (elasFracShear + visFactorDev);
-  const double kEff = bulkModulus * (elasFracBulk + visFactorBulk);
-  const double mu2Eff = 2.0*muEff;
-  const double lambda2muEff = kEff + 4.0/3.0*muEff;
-  const double lambdaEff = kEff - 2.0/3.0*muEff;
+  const PylithScalar muEff = mu * (elasFracShear + visFactorDev);
+  const PylithScalar kEff = bulkModulus * (elasFracBulk + visFactorBulk);
+  const PylithScalar mu2Eff = 2.0*muEff;
+  const PylithScalar lambda2muEff = kEff + 4.0/3.0*muEff;
+  const PylithScalar lambdaEff = kEff - 2.0/3.0*muEff;
 
   elasticConsts[ 0] = lambda2muEff; // C1111
   elasticConsts[ 1] = lambdaEff; // C1122
@@ -830,15 +830,15 @@
 // Update state variables.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_updateStateVarsElastic(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVarsElastic
   assert(0 != stateVars);
@@ -855,10 +855,10 @@
   const int tensorSize = _GenMaxwellQpQsIsotropic3D::tensorSize;
   const int numMaxwellModels = _GenMaxwellQpQsIsotropic3D::numMaxwellModels;
 
-  const double e11 = totalStrain[0];
-  const double e22 = totalStrain[1];
-  const double e33 = totalStrain[2];
-  const double meanStrainTpdt = (e11 + e22 + e33) / 3.0;
+  const PylithScalar e11 = totalStrain[0];
+  const PylithScalar e22 = totalStrain[1];
+  const PylithScalar e33 = totalStrain[2];
+  const PylithScalar meanStrainTpdt = (e11 + e22 + e33) / 3.0;
 
   // Update total strain
   for (int i=0; i < tensorSize; ++i)
@@ -868,10 +868,10 @@
 
   // Deviatoric viscous strains.
   assert(tensorSize == 6);
-  const double diag[6] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[6] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
   for (int iModel=0; iModel < numMaxwellModels; ++iModel)
     for (int i=0; i < tensorSize; ++i) {
-      const double devStrain = totalStrain[i] - diag[i]*meanStrainTpdt;
+      const PylithScalar devStrain = totalStrain[i] - diag[i]*meanStrainTpdt;
       stateVars[s_viscousDevStrain +iModel*tensorSize+i] = 
 	properties[p_shearRatio+iModel] * devStrain;
     } // for
@@ -890,15 +890,15 @@
 // Update state variables.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_updateStateVarsViscoelastic(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVarsViscoelastic
   assert(0 != stateVars);
@@ -940,11 +940,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::GenMaxwellQpQsIsotropic3D::_stableTimeStepImplicit(
-					   const double* properties,
+					   const PylithScalar* properties,
 					   const int numProperties,
-					   const double* stateVars,
+					   const PylithScalar* stateVars,
 					   const int numStateVars) const
 { // _stableTimeStepImplicit
   assert(0 != properties);
@@ -954,18 +954,18 @@
 
   const int numMaxwellModels = _GenMaxwellQpQsIsotropic3D::numMaxwellModels;
 
-  double dtStable = pylith::PYLITH_MAXDOUBLE;
+  PylithScalar dtStable = pylith::PYLITH_MAXDOUBLE;
 
   for (int i=0; i < numMaxwellModels; ++i) {
-    const double maxwellTime = properties[p_maxwellTimeShear+i];
-    const double dt = 0.2*maxwellTime;
+    const PylithScalar maxwellTime = properties[p_maxwellTimeShear+i];
+    const PylithScalar dt = 0.2*maxwellTime;
     if (dt < dtStable)
       dtStable = dt;
   } // for
 
   for (int i=0; i < numMaxwellModels; ++i) {
-    const double maxwellTime = properties[p_maxwellTimeBulk+i];
-    const double dt = 0.2*maxwellTime;
+    const PylithScalar maxwellTime = properties[p_maxwellTimeBulk+i];
+    const PylithScalar dt = 0.2*maxwellTime;
     if (dt < dtStable)
       dtStable = dt;
   } // for
@@ -977,15 +977,15 @@
 // Compute viscous strain for current time step.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_computeStateVars(
-					       const double* stateVars,
+					       const PylithScalar* stateVars,
 					       const int numStateVars,
-					       const double* properties,
+					       const PylithScalar* properties,
 					       const int numProperties,
-					       const double* totalStrain,
+					       const PylithScalar* totalStrain,
 					       const int strainSize,
-					       const double* initialStress,
+					       const PylithScalar* initialStress,
 					       const int initialStressSize,
-					       const double* initialStrain,
+					       const PylithScalar* initialStrain,
 					       const int initialStrainSize)
 { // _computeStateVars
   assert(0 != stateVars);
@@ -1005,12 +1005,12 @@
   // :TODO: Need to account for initial values for state variables
   // and the initial strain??
 
-  const double e11 = totalStrain[0];
-  const double e22 = totalStrain[1];
-  const double e33 = totalStrain[2];
-  const double meanStrainTpdt = (e11 + e22 + e33) / 3.0;
+  const PylithScalar e11 = totalStrain[0];
+  const PylithScalar e22 = totalStrain[1];
+  const PylithScalar e33 = totalStrain[2];
+  const PylithScalar meanStrainTpdt = (e11 + e22 + e33) / 3.0;
 
-  const double meanStrainT = 
+  const PylithScalar meanStrainT = 
     ( stateVars[s_totalStrain+0] +
       stateVars[s_totalStrain+1] +
       stateVars[s_totalStrain+2] ) / 3.0;
@@ -1020,16 +1020,16 @@
   // Deviatoric viscous strains.
 
   assert(6 == tensorSize);
-  const double diag[6] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[6] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
   for (int iModel=0; iModel < numMaxwellModels; ++iModel) {
 
-    const double dq = 
+    const PylithScalar dq = 
       ViscoelasticMaxwell::viscousStrainParam(_dt, properties[p_maxwellTimeShear+iModel]);
 
     for (int i=0; i < tensorSize; ++i) {
-      const double devStrainTpdt = totalStrain[i] - diag[i]*meanStrainTpdt;
-      const double devStrainT = stateVars[s_totalStrain+i] - diag[i]*meanStrainT;
-      const double deltaStrain = devStrainTpdt - devStrainT;
+      const PylithScalar devStrainTpdt = totalStrain[i] - diag[i]*meanStrainTpdt;
+      const PylithScalar devStrainT = stateVars[s_totalStrain+i] - diag[i]*meanStrainT;
+      const PylithScalar deltaStrain = devStrainTpdt - devStrainT;
       
       _viscousDevStrain[iModel*tensorSize+i] = 
 	exp(-_dt/properties[p_maxwellTimeShear+iModel]) * 
@@ -1044,10 +1044,10 @@
   // Compute Prony series terms
   for (int iModel=0; iModel < numMaxwellModels; ++iModel) {
 
-    const double dq = 
+    const PylithScalar dq = 
       ViscoelasticMaxwell::viscousStrainParam(_dt, properties[p_maxwellTimeBulk+iModel]);
 
-    const double deltaStrain = meanStrainTpdt - meanStrainT;
+    const PylithScalar deltaStrain = meanStrainTpdt - meanStrainT;
 
     _viscousMeanStrain[iModel] =  
       exp(-_dt/properties[p_maxwellTimeBulk+iModel]) * 

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -67,7 +67,7 @@
    *
    * @param dt Current time step.
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -86,15 +86,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -102,7 +102,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute initial state variables from values in spatial database.
@@ -110,8 +110,8 @@
    * @param stateValues Array of state variable values.
    * @param dbValues Array of database values.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues);
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues);
 
   // Note: We do not need to dimensionalize or nondimensionalize state
   // variables because there are strains, which are dimensionless.
@@ -125,10 +125,10 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -150,17 +150,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -179,17 +179,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-		          const double* initialStress,
+		          const PylithScalar* initialStress,
 		          const int initialStressSize,
-		          const double* initialStrain,
+		          const PylithScalar* initialStrain,
 		          const int initialStrainSize);
 
   /** Update state variables (for next time step).
@@ -205,15 +205,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVars(double* const stateVars,
+  void _updateStateVars(PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* totalStrain,
+			const PylithScalar* totalStrain,
 			const int strainSize,
-			const double* initialStress,
+			const PylithScalar* initialStress,
 			const int initialStressSize,
-			const double* initialStrain,
+			const PylithScalar* initialStrain,
 			const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -225,9 +225,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
@@ -235,46 +235,46 @@
 
   /// Member prototype for _calcStress()
   typedef void (pylith::materials::GenMaxwellQpQsIsotropic3D::*calcStress_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
      const bool);
 
   /// Member prototype for _calcElasticConsts()
   typedef void (pylith::materials::GenMaxwellQpQsIsotropic3D::*calcElasticConsts_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   /// Member prototype for _updateStateVars()
   typedef void (pylith::materials::GenMaxwellQpQsIsotropic3D::*updateStateVars_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -296,17 +296,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressElastic(double* const stress,
+  void _calcStressElastic(PylithScalar* const stress,
 			  const int stressSize,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize,
 			  const bool computeStateVars);
 
@@ -326,17 +326,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressViscoelastic(double* const stress,
+  void _calcStressViscoelastic(PylithScalar* const stress,
 			       const int stressSize,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* stateVars,
+			       const PylithScalar* stateVars,
 			       const int numStateVars,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize,
 			       const bool computeStateVars);
 
@@ -356,17 +356,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsElastic(double* const elasticConsts,
+  void _calcElasticConstsElastic(PylithScalar* const elasticConsts,
 				 const int numElasticConsts,
-				 const double* properties,
+				 const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars,
-				 const double* totalStrain,
+				 const PylithScalar* totalStrain,
 				 const int strainSize,
-				 const double* initialStress,
+				 const PylithScalar* initialStress,
 				 const int initialStressSize,
-				 const double* initialStrain,
+				 const PylithScalar* initialStrain,
 				 const int initialStrainSize);
 
   /** Compute derivatives of elasticity matrix from properties as a
@@ -385,17 +385,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsViscoelastic(double* const elasticConsts,
+  void _calcElasticConstsViscoelastic(PylithScalar* const elasticConsts,
 				      const int numElasticConsts,
-				      const double* properties,
+				      const PylithScalar* properties,
 				      const int numProperties,
-				      const double* stateVars,
+				      const PylithScalar* stateVars,
 				      const int numStateVars,
-				      const double* totalStrain,
+				      const PylithScalar* totalStrain,
 				      const int strainSize,
-				      const double* initialStress,
+				      const PylithScalar* initialStress,
 				      const int initialStressSize,
-				      const double* initialStrain,
+				      const PylithScalar* initialStrain,
 				      const int initialStrainSize);
 
   /** Update state variables after solve as an elastic material.
@@ -411,15 +411,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsElastic(double* const stateVars,
+  void _updateStateVarsElastic(PylithScalar* const stateVars,
 			       const int numStateVars,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize);
 
   /** Update state variables after solve as a viscoelastic material.
@@ -431,15 +431,15 @@
    * @param initialState Initial state values.
    * @param initialStateSize Size of initial state array.
    */
-  void _updateStateVarsViscoelastic(double* const stateVars,
+  void _updateStateVarsViscoelastic(PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize);
 
   /** Compute viscous strains (state variables) for the current time
@@ -456,25 +456,25 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _computeStateVars(const double* stateVars,
+  void _computeStateVars(const PylithScalar* stateVars,
 			 const int numStateVars,
-			 const double* properties,
+			 const PylithScalar* properties,
 			 const int numProperties,
-			 const double* totalStrain,
+			 const PylithScalar* totalStrain,
 			 const int strainSize,
-			 const double* initialStress,
+			 const PylithScalar* initialStress,
 			 const int initialStressSize,
-			 const double* initialStrain,
+			 const PylithScalar* initialStrain,
 			 const int initialStrainSize);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 
   /// Viscous deviatoric strain array [numMaxwellModels*tensorSize].
-  double_array _viscousDevStrain;
+  scalar_array _viscousDevStrain;
 
   /// Viscous mean strain [numMaxwellModels].
-  double_array _viscousMeanStrain;
+  scalar_array _viscousMeanStrain;
 
   /// Method to use for _calcElasticConsts().
   calcElasticConsts_fn_type _calcElasticConstsFn;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -26,7 +26,7 @@
 // Set current time step.
 inline
 void
-pylith::materials::GenMaxwellQpQsIsotropic3D::timeStep(const double dt) {
+pylith::materials::GenMaxwellQpQsIsotropic3D::timeStep(const PylithScalar dt) {
   // Jacobian needs to be reformed if the time step size changes.
   if (_dt > 0.0 && dt != _dt)
     _needNewJacobian = true;
@@ -37,17 +37,17 @@
 inline
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_calcStress(
-					      double* const stress,
+					      PylithScalar* const stress,
 					      const int stressSize,
-					      const double* properties,
+					      const PylithScalar* properties,
 					      const int numProperties,
-					      const double* stateVars,
+					      const PylithScalar* stateVars,
 					      const int numStateVars,
-					      const double* totalStrain,
+					      const PylithScalar* totalStrain,
 					      const int strainSize,
-					      const double* initialStress,
+					      const PylithScalar* initialStress,
 					      const int initialStressSize,
-					      const double* initialStrain,
+					      const PylithScalar* initialStrain,
 					      const int initialStrainSize,
 					      const bool computeStateVars) {
   assert(0 != _calcStressFn);
@@ -64,17 +64,17 @@
 inline
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_calcElasticConsts(
-					      double* const elasticConsts,
+					      PylithScalar* const elasticConsts,
 					      const int numElasticConsts,
-					      const double* properties,
+					      const PylithScalar* properties,
 					      const int numProperties,
-					      const double* stateVars,
+					      const PylithScalar* stateVars,
 					      const int numStateVars,
-					      const double* totalStrain,
+					      const PylithScalar* totalStrain,
 					      const int strainSize,
-					      const double* initialStress,
+					      const PylithScalar* initialStress,
 					      const int initialStressSize,
-					      const double* initialStrain,
+					      const PylithScalar* initialStrain,
 					      const int initialStrainSize) {
   assert(0 != _calcElasticConstsFn);
   CALL_MEMBER_FN(*this, _calcElasticConstsFn)(elasticConsts, numElasticConsts,
@@ -89,15 +89,15 @@
 inline
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_updateStateVars(
-					     double* const stateVars,
+					     PylithScalar* const stateVars,
 					     const int numStateVars,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize) {
   assert(0 != _updateStateVarsFn);
   CALL_MEMBER_FN(*this, _updateStateVarsFn)(stateVars, numStateVars,

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
-#include "pylith/utils/array.hh" // USES double_array, std::vector
+#include "pylith/utils/array.hh" // USES scalar_array, std::vector
 
 #include "spatialdata/spatialdb/SpatialDB.hh" // USES SpatialDB
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -147,7 +147,7 @@
   assert(!propertiesSection.isNull());
 
 #if !defined(PRECOMPUTE_GEOMETRY)
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   RestrictVisitor coordsVisitor(*coordinates,
@@ -156,9 +156,9 @@
 
   // Create arrays for querying.
   const int numDBProperties = _metadata.numDBProperties();
-  double_array quadPtsGlobal(numQuadPts*spaceDim);
-  double_array propertiesQuery(numDBProperties);
-  double_array propertiesCell(numQuadPts*_numPropsQuadPt);
+  scalar_array quadPtsGlobal(numQuadPts*spaceDim);
+  scalar_array propertiesQuery(numDBProperties);
+  scalar_array propertiesCell(numQuadPts*_numPropsQuadPt);
 
   // Setup database for quering for physical properties
   assert(0 != _dbProperties);
@@ -184,8 +184,8 @@
 
   // Create arrays for querying
   const int numDBStateVars = _metadata.numDBStateVars();
-  double_array stateVarsQuery;
-  double_array stateVarsCell;
+  scalar_array stateVarsQuery;
+  scalar_array stateVarsCell;
   if (0 != _dbInitialState) {
     assert(!stateVarsSection.isNull());
     assert(numDBStateVars > 0);
@@ -200,7 +200,7 @@
   } // if
 
   assert(0 != _normalizer);
-  const double lengthScale = _normalizer->lengthScale();
+  const PylithScalar lengthScale = _normalizer->lengthScale();
     
   for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
        c_iter != cellsEnd;
@@ -214,7 +214,7 @@
     quadrature->computeGeometry(coordinatesCell, *c_iter);
 #endif
 
-    const double_array& quadPtsNonDim = quadrature->quadPts();
+    const scalar_array& quadPtsNonDim = quadrature->quadPts();
     quadPtsGlobal = quadPtsNonDim;
     _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
 				lengthScale);
@@ -395,8 +395,8 @@
     fieldType = _metadata.getProperty(propertyIndex).fieldType;
 
     // Buffer for property at cell's quadrature points
-    double_array fieldCell(numQuadPts*fiberDim);
-    double_array propertiesCell(numQuadPts*numPropsQuadPt);
+    scalar_array fieldCell(numQuadPts*fiberDim);
+    scalar_array propertiesCell(numQuadPts*numPropsQuadPt);
 
     // Loop over cells
     for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
@@ -465,8 +465,8 @@
     field->scale(1.0);
 
     // Buffer for state variable at cell's quadrature points
-    double_array fieldCell(numQuadPts*fiberDim);
-    double_array stateVarsCell(numQuadPts*numVarsQuadPt);
+    scalar_array fieldCell(numQuadPts*fiberDim);
+    scalar_array stateVarsCell(numQuadPts*numVarsQuadPt);
     
     // Loop over cells
     for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/Material.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/Material.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/Material.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -104,13 +104,13 @@
    * @param dt Current time step.
    */
   virtual
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Get current time step.
    *
    * @returns Current time step.
    */
-  double timeStep(void) const;
+  PylithScalar timeStep(void) const;
 
   /** Set database for physical property parameters.
    *
@@ -213,8 +213,8 @@
    * @param dbValues Array of database values.
    */
   virtual
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues) = 0;
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues) = 0;
 
   /** Nondimensionalize properties.
    *
@@ -222,7 +222,7 @@
    * @param nvalues Number of values.
    */
   virtual
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const = 0;
 
   /** Dimensionalize properties.
@@ -231,7 +231,7 @@
    * @param nvalues Number of values.
    */
   virtual
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const = 0;
 
   /** Compute initial state variables from values in spatial database.
@@ -240,8 +240,8 @@
    * @param dbValues Array of database values.
    */
   virtual
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues);
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues);
 
   /** Nondimensionalize state variables.
    *
@@ -249,7 +249,7 @@
    * @param nvalues Number of values.
    */
   virtual
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
 			   const int nvalues) const;
   
   /** Dimensionalize state variables.
@@ -258,13 +258,13 @@
    * @param nvalues Number of values.
    */
   virtual
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
 			const int nvalues) const;
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
-  double _dt; ///< Current time step
+  PylithScalar _dt; ///< Current time step
 
   /// Field containing physical properties of material.
   topology::Field<topology::Mesh> *_properties;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/Material.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/Material.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/Material.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -72,13 +72,13 @@
 // Set current time step.
 inline
 void
-pylith::materials::Material::timeStep(const double dt) {
+pylith::materials::Material::timeStep(const PylithScalar dt) {
   _dt = dt;
 }
 
 // Get current time step.
 inline
-double
+PylithScalar
 pylith::materials::Material::timeStep(void) const {
   return _dt;
 } // timeStep
@@ -116,21 +116,21 @@
 // Compute initial state variables from values in spatial database.
 inline
 void
-pylith::materials::Material::_dbToStateVars(double* const stateValues,
-					    const double_array& dbValues)
+pylith::materials::Material::_dbToStateVars(PylithScalar* const stateValues,
+					    const scalar_array& dbValues)
 {}
 
 // Nondimensionalize state variables.
 inline
 void
-pylith::materials::Material::_nondimStateVars(double* const values,
+pylith::materials::Material::_nondimStateVars(PylithScalar* const values,
 					      const int nvalues) const
 {}
   
 // Dimensionalize state variables.
 inline
 void
-pylith::materials::Material::_dimStateVars(double* const values,
+pylith::materials::Material::_dimStateVars(PylithScalar* const values,
 					   const int nvalues) const
 {}
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "ViscoelasticMaxwell.hh" // USES computeVisStrain
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
@@ -183,17 +183,17 @@
 // Compute properties from values in spatial database.
 void
 pylith::materials::MaxwellIsotropic3D::_dbToProperties(
-					    double* const propValues,
-					    const double_array& dbValues)
+					    PylithScalar* const propValues,
+					    const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_MaxwellIsotropic3D::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
-  const double viscosity = dbValues[db_viscosity];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
+  const PylithScalar viscosity = dbValues[db_viscosity];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0 || viscosity <= 0.0) {
     std::ostringstream msg;
@@ -206,8 +206,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -219,7 +219,7 @@
   } // if
   assert(mu > 0);
 
-  const double maxwellTime = viscosity / mu;
+  const PylithScalar maxwellTime = viscosity / mu;
   assert(maxwellTime > 0.0);
 
   propValues[p_density] = density;
@@ -233,16 +233,16 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::MaxwellIsotropic3D::_nondimProperties(double* const values,
+pylith::materials::MaxwellIsotropic3D::_nondimProperties(PylithScalar* const values,
 							 const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
   values[p_mu] = 
@@ -258,16 +258,16 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::MaxwellIsotropic3D::_dimProperties(double* const values,
+pylith::materials::MaxwellIsotropic3D::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
   values[p_mu] = 
@@ -284,8 +284,8 @@
 // Compute initial state variables from values in spatial database.
 void
 pylith::materials::MaxwellIsotropic3D::_dbToStateVars(
-					double* const stateValues,
-					const double_array& dbValues)
+					PylithScalar* const stateValues,
+					const scalar_array& dbValues)
 { // _dbToStateVars
   assert(0 != stateValues);
   const int numDBValues = dbValues.size();
@@ -294,7 +294,7 @@
   const int totalSize = 2 * _tensorSize;
   assert(totalSize == _numVarsQuadPt);
   assert(totalSize == numDBValues);
-  memcpy(stateValues, &dbValues[0], totalSize*sizeof(double));
+  memcpy(stateValues, &dbValues[0], totalSize*sizeof(PylithScalar));
 
   PetscLogFlops(0);
 } // _dbToStateVars
@@ -302,10 +302,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::MaxwellIsotropic3D::_calcDensity(double* const density,
-						    const double* properties,
+pylith::materials::MaxwellIsotropic3D::_calcDensity(PylithScalar* const density,
+						    const PylithScalar* properties,
 						    const int numProperties,
-						    const double* stateVars,
+						    const PylithScalar* stateVars,
 						    const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -320,17 +320,17 @@
 // material.
 void
 pylith::materials::MaxwellIsotropic3D::_calcStressElastic(
-					     double* const stress,
+					     PylithScalar* const stress,
 					     const int stressSize,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize,
 					     const bool computeStateVars)
 { // _calcStressElastic
@@ -347,19 +347,19 @@
   assert(0 != initialStrain);
   assert(_MaxwellIsotropic3D::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double mu2 = 2.0 * mu;
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar mu2 = 2.0 * mu;
 
   // :TODO: Need to consider initial state variables????
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e33 = totalStrain[2] - initialStrain[2];
-  const double e12 = totalStrain[3] - initialStrain[3];
-  const double e23 = totalStrain[4] - initialStrain[4];
-  const double e13 = totalStrain[5] - initialStrain[5];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e33 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e12 = totalStrain[3] - initialStrain[3];
+  const PylithScalar e23 = totalStrain[4] - initialStrain[4];
+  const PylithScalar e13 = totalStrain[5] - initialStrain[5];
   
-  const double s123 = lambda * (e11 + e22 + e33);
+  const PylithScalar s123 = lambda * (e11 + e22 + e33);
 
   stress[0] = s123 + mu2 * e11 + initialStress[0];
   stress[1] = s123 + mu2 * e22 + initialStress[1];
@@ -376,17 +376,17 @@
 // material.
 void
 pylith::materials::MaxwellIsotropic3D::_calcStressViscoelastic(
-					     double* const stress,
+					     PylithScalar* const stress,
 					     const int stressSize,
-					     const double* properties,
+					     const PylithScalar* properties,
 					     const int numProperties,
-					     const double* stateVars,
+					     const PylithScalar* stateVars,
 					     const int numStateVars,
-					     const double* totalStrain,
+					     const PylithScalar* totalStrain,
 					     const int strainSize,
-					     const double* initialStress,
+					     const PylithScalar* initialStress,
 					     const int initialStressSize,
-					     const double* initialStrain,
+					     const PylithScalar* initialStrain,
 					     const int initialStrainSize,
 					     const bool computeStateVars)
 { // _calcStressViscoelastic
@@ -405,27 +405,27 @@
 
   const int tensorSize = _MaxwellIsotropic3D::tensorSize;
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double maxwellTime = properties[p_maxwellTime];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
 
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2 / 3.0;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2 / 3.0;
 
   // Initial stress and strain values
-  const double meanStrainInitial = (initialStrain[0] +
+  const PylithScalar meanStrainInitial = (initialStrain[0] +
 				    initialStrain[1] +
 				    initialStrain[2]) / 3.0;
-  const double meanStressInitial = (initialStress[0] +
+  const PylithScalar meanStressInitial = (initialStress[0] +
 				    initialStress[1] +
 				    initialStress[2]) / 3.0;
-  const double devStrainInitial[] = {initialStrain[0] - meanStrainInitial,
+  const PylithScalar devStrainInitial[] = {initialStrain[0] - meanStrainInitial,
 				     initialStrain[1] - meanStrainInitial,
 				     initialStrain[2] - meanStrainInitial,
 				     initialStrain[3],
 				     initialStrain[4],
 				     initialStrain[5]};
-  const double devStressInitial[] = {initialStress[0] - meanStressInitial,
+  const PylithScalar devStressInitial[] = {initialStress[0] - meanStressInitial,
 				     initialStress[1] - meanStressInitial,
 				     initialStress[2] - meanStressInitial,
 				     initialStress[3],
@@ -433,14 +433,14 @@
 				     initialStress[5]};
 
   // :TODO: Need to determine how to incorporate state variables
-  const double meanStrainTpdt = (totalStrain[0] +
+  const PylithScalar meanStrainTpdt = (totalStrain[0] +
 				 totalStrain[1] +
 				 totalStrain[2]) / 3.0;
   
-  const double meanStressTpdt = 3.0 * bulkModulus *
+  const PylithScalar meanStressTpdt = 3.0 * bulkModulus *
     (meanStrainTpdt - meanStrainInitial) + meanStressInitial;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
   // Get viscous strains
   if (computeStateVars)
@@ -451,10 +451,10 @@
 		      initialStrain, initialStrainSize);
   else
     memcpy(&_viscousStrain[0], &stateVars[s_viscousStrain],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
 
   // Compute new stresses
-  double devStressTpdt = 0.0;
+  PylithScalar devStressTpdt = 0.0;
 
   for (int iComp=0; iComp < tensorSize; ++iComp) {
     devStressTpdt = mu2 * (_viscousStrain[iComp] - devStrainInitial[iComp]) +
@@ -470,17 +470,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::MaxwellIsotropic3D::_calcElasticConstsElastic(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 { // _calcElasticConstsElastic
   assert(0 != elasticConsts);
@@ -496,11 +496,11 @@
   assert(0 != initialStrain);
   assert(_MaxwellIsotropic3D::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
 
   elasticConsts[ 0] = lambda2mu; // C1111
   elasticConsts[ 1] = lambda; // C1122
@@ -547,17 +547,17 @@
 // as an elastic material.
 void
 pylith::materials::MaxwellIsotropic3D::_calcElasticConstsViscoelastic(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 { // _calcElasticConstsViscoelastic
   assert(0 != elasticConsts);
@@ -573,16 +573,16 @@
   assert(0 != initialStrain);
   assert(_MaxwellIsotropic3D::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double maxwellTime = properties[p_maxwellTime];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
 
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2 / 3.0;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2 / 3.0;
 
-  double dq = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
+  PylithScalar dq = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
 
-  const double visFac = mu * dq / 3.0;
+  const PylithScalar visFac = mu * dq / 3.0;
 
   elasticConsts[ 0] = bulkModulus + 4.0 * visFac; // C1111
   elasticConsts[ 1] = bulkModulus - 2.0 * visFac; // C1122
@@ -628,15 +628,15 @@
 // Update state variables as an elastic material.
 void
 pylith::materials::MaxwellIsotropic3D::_updateStateVarsElastic(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVarsElastic
   assert(0 != stateVars);
@@ -651,19 +651,19 @@
   assert(_MaxwellIsotropic3D::tensorSize == initialStrainSize);
 
   const int tensorSize = _tensorSize;
-  const double maxwellTime = properties[p_maxwellTime];
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
 
-  const double strainTpdt[] = {totalStrain[0] - initialStrain[0],
+  const PylithScalar strainTpdt[] = {totalStrain[0] - initialStrain[0],
 			       totalStrain[1] - initialStrain[1],
 			       totalStrain[2] - initialStrain[2],
 			       totalStrain[3] - initialStrain[3],
 			       totalStrain[4] - initialStrain[4],
 			       totalStrain[5] - initialStrain[5]};
 
-  const double meanStrainTpdt =
+  const PylithScalar meanStrainTpdt =
     (strainTpdt[0] + strainTpdt[1] + strainTpdt[2]) / 3.0;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
   // Initialize all viscous strains to deviatoric elastic strains.
   for (int iComp=0; iComp < tensorSize; ++iComp) {
@@ -680,15 +680,15 @@
 // Update state variables as a viscoelastic material.
 void
 pylith::materials::MaxwellIsotropic3D::_updateStateVarsViscoelastic(
-					    double* const stateVars,
+					    PylithScalar* const stateVars,
 					    const int numStateVars,
-					    const double* properties,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* totalStrain,
+					    const PylithScalar* totalStrain,
 					    const int strainSize,
-					    const double* initialStress,
+					    const PylithScalar* initialStress,
 					    const int initialStressSize,
-					    const double* initialStrain,
+					    const PylithScalar* initialStrain,
 					    const int initialStrainSize)
 { // _updateStateVarsViscoelastic
   assert(0 != stateVars);
@@ -710,21 +710,21 @@
 		    initialStress, initialStressSize,
 		    initialStrain, initialStrainSize);
 
-  memcpy(&stateVars[s_totalStrain], totalStrain, tensorSize*sizeof(double));
+  memcpy(&stateVars[s_totalStrain], totalStrain, tensorSize*sizeof(PylithScalar));
 
   memcpy(&stateVars[s_viscousStrain], &_viscousStrain[0], 
-	 tensorSize*sizeof(double));
+	 tensorSize*sizeof(PylithScalar));
 
   _needNewJacobian = false;
 } // _updateStateVarsViscoelastic
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::MaxwellIsotropic3D::_stableTimeStepImplicit(
-					   const double* properties,
+					   const PylithScalar* properties,
 					   const int numProperties,
-					   const double* stateVars,
+					   const PylithScalar* stateVars,
 					   const int numStateVars) const
 { // _stableTimeStepImplicit
   assert(0 != properties);
@@ -732,8 +732,8 @@
   assert(0 != stateVars);
   assert(_numVarsQuadPt == numStateVars);
 
-  const double maxwellTime = properties[p_maxwellTime];
-  const double dtStable = 0.2 * maxwellTime;
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
+  const PylithScalar dtStable = 0.2 * maxwellTime;
 
   return dtStable;
 } // _stableTimeStepImplicit
@@ -742,15 +742,15 @@
 // Compute viscous strain for current time step.
 void
 pylith::materials::MaxwellIsotropic3D::_computeStateVars(
-					       const double* stateVars,
+					       const PylithScalar* stateVars,
 					       const int numStateVars,
-					       const double* properties,
+					       const PylithScalar* properties,
 					       const int numProperties,
-					       const double* totalStrain,
+					       const PylithScalar* totalStrain,
 					       const int strainSize,
-					       const double* initialStress,
+					       const PylithScalar* initialStress,
 					       const int initialStressSize,
-					       const double* initialStrain,
+					       const PylithScalar* initialStrain,
 					       const int initialStrainSize)
 { // _computeStateVars
   assert(0 != stateVars);
@@ -765,33 +765,33 @@
   assert(_MaxwellIsotropic3D::tensorSize == initialStrainSize);
 
   const int tensorSize = _tensorSize;
-  const double maxwellTime = properties[p_maxwellTime];
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
 
   // :TODO: Need to account for initial values for state variables
   // and the initial strain??
 
-  const double e11 = totalStrain[0];
-  const double e22 = totalStrain[1];
-  const double e33 = totalStrain[2];
-  const double e12 = totalStrain[3];
-  const double e23 = totalStrain[4];
-  const double e13 = totalStrain[5];
+  const PylithScalar e11 = totalStrain[0];
+  const PylithScalar e22 = totalStrain[1];
+  const PylithScalar e33 = totalStrain[2];
+  const PylithScalar e12 = totalStrain[3];
+  const PylithScalar e23 = totalStrain[4];
+  const PylithScalar e13 = totalStrain[5];
   
-  const double meanStrainTpdt = (e11 + e22 + e33) / 3.0;
+  const PylithScalar meanStrainTpdt = (e11 + e22 + e33) / 3.0;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
-  const double meanStrainT =
+  const PylithScalar meanStrainT =
     ( stateVars[s_totalStrain+0] +
       stateVars[s_totalStrain+1] +
       stateVars[s_totalStrain+2] ) / 3.0;
   
   // Time integration.
-  double dq = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
-  const double expFac = exp(-_dt/maxwellTime);
+  PylithScalar dq = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
+  const PylithScalar expFac = exp(-_dt/maxwellTime);
 
-  double devStrainTpdt = 0.0;
-  double devStrainT = 0.0;
+  PylithScalar devStrainTpdt = 0.0;
+  PylithScalar devStrainT = 0.0;
 
   for (int iComp=0; iComp < tensorSize; ++iComp) {
     devStrainTpdt = totalStrain[iComp] - diag[iComp] * meanStrainTpdt;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
    *
    * @param dt Current time step.
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -73,15 +73,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -89,7 +89,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute initial state variables from values in spatial database.
@@ -97,8 +97,8 @@
    * @param stateValues Array of state variable values.
    * @param dbValues Array of database values.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues);
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues);
 
   // Note: We do not need to dimensionalize or nondimensionalize state
   // variables because there are strains, which are dimensionless.
@@ -112,10 +112,10 @@
    * @param stateVars Number of state variables.
    * @param numStateVars Number of state variables.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -138,17 +138,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -167,17 +167,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize);
 
   /** Update state variables (for next time step).
@@ -193,15 +193,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVars(double* const stateVars,
+  void _updateStateVars(PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* totalStrain,
+			const PylithScalar* totalStrain,
 			const int strainSize,
-			const double* initialStress,
+			const PylithScalar* initialStress,
 			const int initialStressSize,
-			const double* initialStrain,
+			const PylithScalar* initialStrain,
 			const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -213,9 +213,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
@@ -223,46 +223,46 @@
 
   /// Member prototype for _calcStress()
   typedef void (pylith::materials::MaxwellIsotropic3D::*calcStress_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
      const bool);
 
   /// Member prototype for _calcElasticConsts()
   typedef void (pylith::materials::MaxwellIsotropic3D::*calcElasticConsts_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   /// Member prototype for _updateStateVars()
   typedef void (pylith::materials::MaxwellIsotropic3D::*updateStateVars_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -284,17 +284,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStressElastic(double* const stress,
+  void _calcStressElastic(PylithScalar* const stress,
 			  const int stressSize,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize,
 			  const bool computeStateVars);
 
@@ -314,17 +314,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStressViscoelastic(double* const stress,
+  void _calcStressViscoelastic(PylithScalar* const stress,
 			       const int stressSize,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* stateVars,
+			       const PylithScalar* stateVars,
 			       const int numStateVars,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize,
 			       const bool computeStateVars);
 
@@ -344,17 +344,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsElastic(double* const elasticConsts,
+  void _calcElasticConstsElastic(PylithScalar* const elasticConsts,
 				 const int numElasticConsts,
-				 const double* properties,
+				 const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars,
-				 const double* totalStrain,
+				 const PylithScalar* totalStrain,
 				 const int strainSize,
-				 const double* initialStress,
+				 const PylithScalar* initialStress,
 				 const int initialStressSize,
-				 const double* initialStrain,
+				 const PylithScalar* initialStrain,
 				 const int initialStrainSize);
 
   /** Compute derivatives of elasticity matrix from properties as a
@@ -373,17 +373,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsViscoelastic(double* const elasticConsts,
+  void _calcElasticConstsViscoelastic(PylithScalar* const elasticConsts,
 				      const int numElasticConsts,
-				      const double* properties,
+				      const PylithScalar* properties,
 				      const int numProperties,
-				      const double* stateVars,
+				      const PylithScalar* stateVars,
 				      const int numStateVars,
-				      const double* totalStrain,
+				      const PylithScalar* totalStrain,
 				      const int strainSize,
-				      const double* initialStress,
+				      const PylithScalar* initialStress,
 				      const int initialStressSize,
-				      const double* initialStrain,
+				      const PylithScalar* initialStrain,
 				      const int initialStrainSize);
 
   /** Update state variables after solve as an elastic material.
@@ -399,15 +399,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsElastic(double* const stateVars,
+  void _updateStateVarsElastic(PylithScalar* const stateVars,
 			       const int numStateVars,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize);
 
   /** Update state variables after solve as a viscoelastic material.
@@ -423,15 +423,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsViscoelastic(double* const stateVars,
+  void _updateStateVarsViscoelastic(PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize);
 
   /** Compute viscous strains (state variables) for the current time
@@ -448,21 +448,21 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _computeStateVars(const double* stateVars,
+  void _computeStateVars(const PylithScalar* stateVars,
 			 const int numStateVars,
-			 const double* properties,
+			 const PylithScalar* properties,
 			 const int numProperties,
-			 const double* totalStrain,
+			 const PylithScalar* totalStrain,
 			 const int strainSize,
-			 const double* initialStress,
+			 const PylithScalar* initialStress,
 			 const int initialStressSize,
-			 const double* initialStrain,
+			 const PylithScalar* initialStrain,
 			 const int initialStrainSize);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 
-  double_array _viscousStrain; ///< Array for viscous strain tensor
+  scalar_array _viscousStrain; ///< Array for viscous strain tensor
 
   /// Method to use for _calcElasticConsts().
   calcElasticConsts_fn_type _calcElasticConstsFn;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellIsotropic3D.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -26,7 +26,7 @@
 // Set current time step.
 inline
 void
-pylith::materials::MaxwellIsotropic3D::timeStep(const double dt) {
+pylith::materials::MaxwellIsotropic3D::timeStep(const PylithScalar dt) {
   // Jacobian needs to be reformed if the time step size changes.
   if (_dt > 0.0 && dt != _dt)
     _needNewJacobian = true;
@@ -36,17 +36,17 @@
 // Compute stress tensor from parameters.
 inline
 void
-pylith::materials::MaxwellIsotropic3D::_calcStress(double* const stress,
+pylith::materials::MaxwellIsotropic3D::_calcStress(PylithScalar* const stress,
 						   const int stressSize,
-						   const double* properties,
+						   const PylithScalar* properties,
 						   const int numProperties,
-						   const double* stateVars,
+						   const PylithScalar* stateVars,
 						   const int numStateVars,
-						   const double* totalStrain,
+						   const PylithScalar* totalStrain,
 						   const int strainSize,
-						   const double* initialStress,
+						   const PylithScalar* initialStress,
 						   const int initialStressSize,
-						   const double* initialStrain,
+						   const PylithScalar* initialStrain,
 						   const int initialStrainSize,
 						   const bool computeStateVars)
 {
@@ -64,17 +64,17 @@
 inline
 void
 pylith::materials::MaxwellIsotropic3D::_calcElasticConsts(
-						 double* const elasticConsts,
+						 PylithScalar* const elasticConsts,
 						 const int numElasticConsts,
-						 const double* properties,
+						 const PylithScalar* properties,
 						 const int numProperties,
-						 const double* stateVars,
+						 const PylithScalar* stateVars,
 						 const int numStateVars,
-						 const double* totalStrain,
+						 const PylithScalar* totalStrain,
 						 const int strainSize,
-						 const double* initialStress,
+						 const PylithScalar* initialStress,
 						 const int initialStressSize,
-						 const double* initialStrain,
+						 const PylithScalar* initialStrain,
 						 const int initialStrainSize) {
   assert(0 != _calcElasticConstsFn);
   CALL_MEMBER_FN(*this, _calcElasticConstsFn)(elasticConsts, numElasticConsts,
@@ -88,15 +88,15 @@
 // Update state variables after solve.
 inline
 void
-pylith::materials::MaxwellIsotropic3D::_updateStateVars(double* const stateVars,
+pylith::materials::MaxwellIsotropic3D::_updateStateVars(PylithScalar* const stateVars,
 							const int numStateVars,
-							const double* properties,
+							const PylithScalar* properties,
 							const int numProperties,
-							const double* totalStrain,
+							const PylithScalar* totalStrain,
 							const int strainSize,
-							const double* initialStress,
+							const PylithScalar* initialStress,
 							const int initialStressSize,
-							const double* initialStrain,
+							const PylithScalar* initialStrain,
 							const int initialStrainSize) {
   assert(0 != _updateStateVarsFn);
   CALL_MEMBER_FN(*this, _updateStateVarsFn)(stateVars, numStateVars,

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "ViscoelasticMaxwell.hh" // USES computeVisStrain
 #include "Metadata.hh" // USES Metadata
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -186,17 +186,17 @@
 // Compute properties from values in spatial database.
 void
 pylith::materials::MaxwellPlaneStrain::_dbToProperties(
-					    double* const propValues,
-					    const double_array& dbValues)
+					    PylithScalar* const propValues,
+					    const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_MaxwellPlaneStrain::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
-  const double viscosity = dbValues[db_viscosity];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
+  const PylithScalar viscosity = dbValues[db_viscosity];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0 || viscosity <= 0.0) {
     std::ostringstream msg;
@@ -209,8 +209,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs * vs;
-  const double lambda = density * vp * vp - 2.0 * mu;
+  const PylithScalar mu = density * vs * vs;
+  const PylithScalar lambda = density * vp * vp - 2.0 * mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -222,7 +222,7 @@
   } // if
   assert(mu > 0);
 
-  const double maxwellTime = viscosity / mu;
+  const PylithScalar maxwellTime = viscosity / mu;
   assert(maxwellTime > 0.0);
 
   propValues[p_density] = density;
@@ -236,16 +236,16 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::MaxwellPlaneStrain::_nondimProperties(double* const values,
+pylith::materials::MaxwellPlaneStrain::_nondimProperties(PylithScalar* const values,
 							 const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
   values[p_mu] = 
@@ -261,16 +261,16 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::MaxwellPlaneStrain::_dimProperties(double* const values,
+pylith::materials::MaxwellPlaneStrain::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
   values[p_mu] = 
@@ -287,8 +287,8 @@
 // Compute initial state variables from values in spatial database.
 void
 pylith::materials::MaxwellPlaneStrain::_dbToStateVars(
-					double* const stateValues,
-					const double_array& dbValues)
+					PylithScalar* const stateValues,
+					const scalar_array& dbValues)
 { // _dbToStateVars
   assert(0 != stateValues);
   const int numDBValues = dbValues.size();
@@ -297,7 +297,7 @@
   const int totalSize = 1 + _tensorSize + 4;
   assert(totalSize == _numVarsQuadPt);
   assert(totalSize == numDBValues);
-  memcpy(stateValues, &dbValues[0], totalSize*sizeof(double));
+  memcpy(stateValues, &dbValues[0], totalSize*sizeof(PylithScalar));
 
   PetscLogFlops(0);
 } // _dbToStateVars
@@ -305,14 +305,14 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize state variables.
 void
-pylith::materials::MaxwellPlaneStrain::_nondimStateVars(double* const values,
+pylith::materials::MaxwellPlaneStrain::_nondimStateVars(PylithScalar* const values,
 							const int nvalues) const
 { // _nondimStateVars
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numVarsQuadPt);
 
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
   _normalizer->nondimensionalize(&values[s_stressZZInitial], 1, pressureScale);
 
   PetscLogFlops(1);
@@ -321,14 +321,14 @@
 // ----------------------------------------------------------------------
 // Dimensionalize state variables.
 void
-pylith::materials::MaxwellPlaneStrain::_dimStateVars(double* const values,
+pylith::materials::MaxwellPlaneStrain::_dimStateVars(PylithScalar* const values,
 						     const int nvalues) const
 { // _dimStateVars
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numVarsQuadPt);
 
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
   _normalizer->dimensionalize(&values[s_stressZZInitial], 1, pressureScale);
 
   PetscLogFlops(1);
@@ -337,10 +337,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::MaxwellPlaneStrain::_calcDensity(double* const density,
-						    const double* properties,
+pylith::materials::MaxwellPlaneStrain::_calcDensity(PylithScalar* const density,
+						    const PylithScalar* properties,
 						    const int numProperties,
-						    const double* stateVars,
+						    const PylithScalar* stateVars,
 						    const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -355,17 +355,17 @@
 // material.
 void
 pylith::materials::MaxwellPlaneStrain::_calcStressElastic(
-				         double* const stress,
+				         PylithScalar* const stress,
 					 const int stressSize,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize,
 					 const bool computeStateVars)
 { // _calcStressElastic
@@ -382,15 +382,15 @@
   assert(0 != initialStrain);
   assert(_MaxwellPlaneStrain::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double mu2 = 2.0 * mu;
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar mu2 = 2.0 * mu;
 
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e12 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e12 = totalStrain[2] - initialStrain[2];
   
-  const double s12 = lambda * (e11 + e22);
+  const PylithScalar s12 = lambda * (e11 + e22);
 
   stress[0] = s12 + mu2 * e11 + initialStress[0];
   stress[1] = s12 + mu2 * e22 + initialStress[1];
@@ -404,17 +404,17 @@
 // material.
 void
 pylith::materials::MaxwellPlaneStrain::_calcStressViscoelastic(
-				         double* const stress,
+				         PylithScalar* const stress,
 					 const int stressSize,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize,
 					 const bool computeStateVars)
 { // _calcStressViscoelastic
@@ -433,28 +433,28 @@
 
   const int tensorSize = _MaxwellPlaneStrain::tensorSize;
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double maxwellTime = properties[p_maxwellTime];
-  const double stressZZInitial = stateVars[s_stressZZInitial];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
+  const PylithScalar stressZZInitial = stateVars[s_stressZZInitial];
 
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2 / 3.0;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2 / 3.0;
 
   // Initial stress and strain values
-  const double meanStrainInitial = (initialStrain[0] + initialStrain[1]) / 3.0;
-  const double meanStressInitial = (initialStress[0] + initialStress[1] +
+  const PylithScalar meanStrainInitial = (initialStrain[0] + initialStrain[1]) / 3.0;
+  const PylithScalar meanStressInitial = (initialStress[0] + initialStress[1] +
 				    stressZZInitial) / 3.0;
-  const double devStrainInitial[] = {initialStrain[0] - meanStrainInitial,
+  const PylithScalar devStrainInitial[] = {initialStrain[0] - meanStrainInitial,
 				     initialStrain[1] - meanStrainInitial,
 				     initialStrain[2]};
-  const double devStressInitial[] = {initialStress[0] - meanStressInitial,
+  const PylithScalar devStressInitial[] = {initialStress[0] - meanStressInitial,
 				     initialStress[1] - meanStressInitial,
 				     initialStress[2]};
 
   // Mean stress and strain for t + dt
-  const double meanStrainTpdt = (totalStrain[0] + totalStrain[1]) / 3.0;
-  const double meanStressTpdt = 3.0 * bulkModulus *
+  const PylithScalar meanStrainTpdt = (totalStrain[0] + totalStrain[1]) / 3.0;
+  const PylithScalar meanStressTpdt = 3.0 * bulkModulus *
     (meanStrainTpdt - meanStrainInitial) + meanStressInitial;
 
   // Get viscous strains
@@ -466,7 +466,7 @@
 		      initialStrain, initialStrainSize);
   } else {
     memcpy(&_viscousStrain[0], &stateVars[s_viscousStrain],
-	   4 * sizeof(double));
+	   4 * sizeof(PylithScalar));
   } // else
 
   // Compute new stresses
@@ -484,17 +484,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::MaxwellPlaneStrain::_calcElasticConstsElastic(
-				         double* const elasticConsts,
+				         PylithScalar* const elasticConsts,
 					 const int numElasticConsts,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize)
 { // _calcElasticConstsElastic
   assert(0 != elasticConsts);
@@ -510,11 +510,11 @@
   assert(0 != initialStrain);
   assert(_MaxwellPlaneStrain::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
 
   elasticConsts[ 0] = lambda2mu; // C1111
   elasticConsts[ 1] = lambda; // C1122
@@ -534,17 +534,17 @@
 // as a viscoelastic material.
 void
 pylith::materials::MaxwellPlaneStrain::_calcElasticConstsViscoelastic(
-				         double* const elasticConsts,
+				         PylithScalar* const elasticConsts,
 					 const int numElasticConsts,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize)
 { // _calcElasticConstsViscoelastic
   assert(0 != elasticConsts);
@@ -560,16 +560,16 @@
   assert(0 != initialStrain);
   assert(_MaxwellPlaneStrain::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double maxwellTime = properties[p_maxwellTime];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
 
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2 / 3.0;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2 / 3.0;
 
-  double dq = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
+  PylithScalar dq = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
 
-  const double visFac = mu * dq / 3.0;
+  const PylithScalar visFac = mu * dq / 3.0;
   elasticConsts[ 0] = bulkModulus + 4.0 * visFac; // C1111
   elasticConsts[ 1] = bulkModulus - 2.0 * visFac; // C1122
   elasticConsts[ 2] = 0; // C1112
@@ -587,15 +587,15 @@
 // Update state variables as an elastic material.
 void
 pylith::materials::MaxwellPlaneStrain::_updateStateVarsElastic(
-				         double* const stateVars,
+				         PylithScalar* const stateVars,
 					 const int numStateVars,
-				         const double* properties,
+				         const PylithScalar* properties,
 					 const int numProperties,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize)
 { // _updateStateVarsElastic
   assert(0 != stateVars);
@@ -610,16 +610,16 @@
   assert(_MaxwellPlaneStrain::tensorSize == initialStrainSize);
 
   const int tensorSize = _tensorSize;
-  const double maxwellTime = properties[p_maxwellTime];
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
 
-  const double strainTpdt[] = {totalStrain[0] - initialStrain[0],
+  const PylithScalar strainTpdt[] = {totalStrain[0] - initialStrain[0],
 			       totalStrain[1] - initialStrain[1],
 			       0.0,
 			       totalStrain[2] - initialStrain[2]};
 
-  const double meanStrainTpdt = (strainTpdt[0] + strainTpdt[1])/3.0;
+  const PylithScalar meanStrainTpdt = (strainTpdt[0] + strainTpdt[1])/3.0;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0 };
 
   stateVars[s_totalStrain] = totalStrain[0];
   stateVars[s_totalStrain + 1] = totalStrain[1];
@@ -638,15 +638,15 @@
 // Update state variables as a viscoelastic material.
 void
 pylith::materials::MaxwellPlaneStrain::_updateStateVarsViscoelastic(
-						 double* const stateVars,
+						 PylithScalar* const stateVars,
 						 const int numStateVars,
-						 const double* properties,
+						 const PylithScalar* properties,
 						 const int numProperties,
-						 const double* totalStrain,
+						 const PylithScalar* totalStrain,
 						 const int strainSize,
-						 const double* initialStress,
+						 const PylithScalar* initialStress,
 						 const int initialStressSize,
-						 const double* initialStrain,
+						 const PylithScalar* initialStrain,
 						 const int initialStrainSize)
 { // _updateStateVarsViscoelastic
   assert(0 != stateVars);
@@ -668,9 +668,9 @@
 		    initialStress, initialStressSize,
 		    initialStrain, initialStrainSize);
 
-  memcpy(&stateVars[s_totalStrain], totalStrain, tensorSize * sizeof(double));
+  memcpy(&stateVars[s_totalStrain], totalStrain, tensorSize * sizeof(PylithScalar));
 
-  memcpy(&stateVars[s_viscousStrain], &_viscousStrain[0], 4 * sizeof(double));
+  memcpy(&stateVars[s_viscousStrain], &_viscousStrain[0], 4 * sizeof(PylithScalar));
 
   _needNewJacobian = false;
 
@@ -678,11 +678,11 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::MaxwellPlaneStrain::_stableTimeStepImplicit(
-					   const double* properties,
+					   const PylithScalar* properties,
 					   const int numProperties,
-					   const double* stateVars,
+					   const PylithScalar* stateVars,
 					   const int numStateVars) const
 { // _stableTimeStepImplicit
   assert(0 != properties);
@@ -690,8 +690,8 @@
   assert(0 != stateVars);
   assert(_numVarsQuadPt == numStateVars);
 
-  const double maxwellTime = properties[p_maxwellTime];
-  const double dtStable = 0.2*maxwellTime;
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
+  const PylithScalar dtStable = 0.2*maxwellTime;
 
   return dtStable;
 } // _stableTimeStepImplicit
@@ -700,15 +700,15 @@
 // Compute viscous strain for current time step.
 void
 pylith::materials::MaxwellPlaneStrain::_computeStateVars(
-				         const double* stateVars,
+				         const PylithScalar* stateVars,
 					 const int numStateVars,
-				         const double* properties,
+				         const PylithScalar* properties,
 					 const int numProperties,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize)
 { // _computeStateVars
   assert(0 != stateVars);
@@ -723,28 +723,28 @@
   assert(_MaxwellPlaneStrain::tensorSize == initialStrainSize);
 
   const int tensorSize = _tensorSize;
-  const double maxwellTime = properties[p_maxwellTime];
+  const PylithScalar maxwellTime = properties[p_maxwellTime];
 
-  const double strainTpdt[] = {totalStrain[0],
+  const PylithScalar strainTpdt[] = {totalStrain[0],
 			       totalStrain[1],
 			       0.0,
 			       totalStrain[2]};
-  const double strainT[] = {stateVars[s_totalStrain+0],
+  const PylithScalar strainT[] = {stateVars[s_totalStrain+0],
 			    stateVars[s_totalStrain+1],
 			    0.0,
 			    stateVars[s_totalStrain+2]};
   
-  const double meanStrainTpdt = (strainTpdt[0] + strainTpdt[1])/3.0;
-  const double meanStrainT = (strainT[0] + strainT[1])/3.0;
+  const PylithScalar meanStrainTpdt = (strainTpdt[0] + strainTpdt[1])/3.0;
+  const PylithScalar meanStrainT = (strainT[0] + strainT[1])/3.0;
 
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0 };
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0 };
 
   // Time integration.
-  double dq = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
-  const double expFac = exp(-_dt/maxwellTime);
+  PylithScalar dq = ViscoelasticMaxwell::viscousStrainParam(_dt, maxwellTime);
+  const PylithScalar expFac = exp(-_dt/maxwellTime);
 
-  double devStrainTpdt = 0.0;
-  double devStrainT = 0.0;
+  PylithScalar devStrainTpdt = 0.0;
+  PylithScalar devStrainT = 0.0;
 
   for (int iComp=0; iComp < 4; ++iComp) {
     devStrainTpdt = strainTpdt[iComp] - diag[iComp] * meanStrainTpdt;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -56,7 +56,7 @@
    *
    * @param dt Current time step.
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -75,15 +75,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -91,7 +91,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute initial state variables from values in spatial database.
@@ -99,15 +99,15 @@
    * @param stateValues Array of state variable values.
    * @param dbValues Array of database values.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues);
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues);
 
   /** Nondimensionalize state variables..
    *
    * @param values Array of state variables.
    * @param nvalues Number of values.
    */
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
                         const int nvalues) const;
 
   /** Dimensionalize state variables.
@@ -115,7 +115,7 @@
    * @param values Array of state variables.
    * @param nvalues Number of values.
    */
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
                      const int nvalues) const;
 
   /** Compute density from properties.
@@ -126,10 +126,10 @@
    * @param stateVars Number of state variables.
    * @param numStateVars Number of state variables.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -152,17 +152,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -181,17 +181,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-		          const double* initialStress,
+		          const PylithScalar* initialStress,
 		          const int initialStressSize,
-		          const double* initialStrain,
+		          const PylithScalar* initialStrain,
 		          const int initialStrainSize);
 
   /** Update state variables (for next time step).
@@ -207,15 +207,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVars(double* const stateVars,
+  void _updateStateVars(PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* totalStrain,
+			const PylithScalar* totalStrain,
 			const int strainSize,
-			const double* initialStress,
+			const PylithScalar* initialStress,
 			const int initialStressSize,
-			const double* initialStrain,
+			const PylithScalar* initialStrain,
 			const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -227,9 +227,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
@@ -237,46 +237,46 @@
 
   /// Member prototype for _calcStress()
   typedef void (pylith::materials::MaxwellPlaneStrain::*calcStress_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
      const bool);
 
   /// Member prototype for _calcElasticConsts()
   typedef void (pylith::materials::MaxwellPlaneStrain::*calcElasticConsts_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   /// Member prototype for _updateStateVars()
   typedef void (pylith::materials::MaxwellPlaneStrain::*updateStateVars_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -298,17 +298,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressElastic(double* const stress,
+  void _calcStressElastic(PylithScalar* const stress,
 			  const int stressSize,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize,
 			  const bool computeStateVars);
 
@@ -328,17 +328,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressViscoelastic(double* const stress,
+  void _calcStressViscoelastic(PylithScalar* const stress,
 			       const int stressSize,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* stateVars,
+			       const PylithScalar* stateVars,
 			       const int numStateVars,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize,
 			       const bool computeStateVars);
 
@@ -358,17 +358,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsElastic(double* const elasticConsts,
+  void _calcElasticConstsElastic(PylithScalar* const elasticConsts,
 				 const int numElasticConsts,
-				 const double* properties,
+				 const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars,
-				 const double* totalStrain,
+				 const PylithScalar* totalStrain,
 				 const int strainSize,
-			         const double* initialStress,
+			         const PylithScalar* initialStress,
 			         const int initialStressSize,
-			         const double* initialStrain,
+			         const PylithScalar* initialStrain,
 			         const int initialStrainSize);
 
   /** Compute derivatives of elasticity matrix from properties as a
@@ -387,17 +387,17 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsViscoelastic(double* const elasticConsts,
+  void _calcElasticConstsViscoelastic(PylithScalar* const elasticConsts,
 				      const int numElasticConsts,
-				      const double* properties,
+				      const PylithScalar* properties,
 				      const int numProperties,
-				      const double* stateVars,
+				      const PylithScalar* stateVars,
 				      const int numStateVars,
-				      const double* totalStrain,
+				      const PylithScalar* totalStrain,
 				      const int strainSize,
-			              const double* initialStress,
+			              const PylithScalar* initialStress,
 			              const int initialStressSize,
-			              const double* initialStrain,
+			              const PylithScalar* initialStrain,
 			              const int initialStrainSize);
 
   /** Update state variables after solve as an elastic material.
@@ -413,15 +413,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsElastic(double* const stateVars,
+  void _updateStateVarsElastic(PylithScalar* const stateVars,
 			       const int numStateVars,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize);
 
   /** Update state variables after solve as a viscoelastic material.
@@ -437,15 +437,15 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsViscoelastic(double* const stateVars,
+  void _updateStateVarsViscoelastic(PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize);
 
   /** Compute viscous strains (state variables) for the current time
@@ -462,21 +462,21 @@
    * @param initialStrain Initial strain tensor at location.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _computeStateVars(const double* stateVars,
+  void _computeStateVars(const PylithScalar* stateVars,
 			 const int numStateVars,
-			 const double* properties,
+			 const PylithScalar* properties,
 			 const int numProperties,
-			 const double* totalStrain,
+			 const PylithScalar* totalStrain,
 			 const int strainSize,
-			 const double* initialStress,
+			 const PylithScalar* initialStress,
 			 const int initialStressSize,
-			 const double* initialStrain,
+			 const PylithScalar* initialStrain,
 			 const int initialStrainSize);
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 
-  double_array _viscousStrain; ///< Array for viscous strain tensor
+  scalar_array _viscousStrain; ///< Array for viscous strain tensor
 
   /// Method to use for _calcElasticConsts().
   calcElasticConsts_fn_type _calcElasticConstsFn;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/MaxwellPlaneStrain.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -26,7 +26,7 @@
 // Set current time step.
 inline
 void
-pylith::materials::MaxwellPlaneStrain::timeStep(const double dt) {
+pylith::materials::MaxwellPlaneStrain::timeStep(const PylithScalar dt) {
   // Jacobian needs to be reformed if the time step size changes.
   if (_dt > 0.0 && dt != _dt)
     _needNewJacobian = true;
@@ -36,17 +36,17 @@
 // Compute stress tensor from parameters.
 inline
 void
-pylith::materials::MaxwellPlaneStrain::_calcStress(double* const stress,
+pylith::materials::MaxwellPlaneStrain::_calcStress(PylithScalar* const stress,
 						   const int stressSize,
-						   const double* properties,
+						   const PylithScalar* properties,
 						   const int numProperties,
-						   const double* stateVars,
+						   const PylithScalar* stateVars,
 						   const int numStateVars,
-						   const double* totalStrain,
+						   const PylithScalar* totalStrain,
 						   const int strainSize,
-						   const double* initialStress,
+						   const PylithScalar* initialStress,
 						   const int initialStressSize,
-						   const double* initialStrain,
+						   const PylithScalar* initialStrain,
 						   const int initialStrainSize,
 						   const bool computeStateVars) {
   assert(0 != _calcStressFn);
@@ -63,17 +63,17 @@
 inline
 void
 pylith::materials::MaxwellPlaneStrain::_calcElasticConsts(
-						 double* const elasticConsts,
+						 PylithScalar* const elasticConsts,
 						 const int numElasticConsts,
-						 const double* properties,
+						 const PylithScalar* properties,
 						 const int numProperties,
-						 const double* stateVars,
+						 const PylithScalar* stateVars,
 						 const int numStateVars,
-						 const double* totalStrain,
+						 const PylithScalar* totalStrain,
 						 const int strainSize,
-						 const double* initialStress,
+						 const PylithScalar* initialStress,
 						 const int initialStressSize,
-						 const double* initialStrain,
+						 const PylithScalar* initialStrain,
 						 const int initialStrainSize) {
   assert(0 != _calcElasticConstsFn);
   CALL_MEMBER_FN(*this, _calcElasticConstsFn)(elasticConsts, numElasticConsts,
@@ -87,15 +87,15 @@
 // Update state variables after solve.
 inline
 void
-pylith::materials::MaxwellPlaneStrain::_updateStateVars(double* const stateVars,
+pylith::materials::MaxwellPlaneStrain::_updateStateVars(PylithScalar* const stateVars,
 						  const int numStateVars,
-						  const double* properties,
+						  const PylithScalar* properties,
 						  const int numProperties,
-						  const double* totalStrain,
+						  const PylithScalar* totalStrain,
 						  const int strainSize,
-						  const double* initialStress,
+						  const PylithScalar* initialStress,
 						  const int initialStressSize,
-						  const double* initialStrain,
+						  const PylithScalar* initialStrain,
 						  const int initialStrainSize) {
   assert(0 != _updateStateVarsFn);
   CALL_MEMBER_FN(*this, _updateStateVarsFn)(stateVars, numStateVars,

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "Metadata.hh" // USES Metadata
 #include "EffectiveStress.hh" // USES EffectiveStress
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 #include "pylith/utils/constdefs.h" // USES PYLITH_MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -204,19 +204,19 @@
 // Compute properties from values in spatial database.
 void
 pylith::materials::PowerLaw3D::_dbToProperties(
-				double* const propValues,
-				const double_array& dbValues)
+				PylithScalar* const propValues,
+				const scalar_array& dbValues)
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
   assert(_PowerLaw3D::numDBProperties == numDBValues);
 
-  const double density = dbValues[db_density];
-  const double vs = dbValues[db_vs];
-  const double vp = dbValues[db_vp];
-  const double referenceStrainRate = dbValues[db_referenceStrainRate];
-  const double referenceStress = dbValues[db_referenceStress];
-  const double powerLawExponent = dbValues[db_powerLawExponent];
+  const PylithScalar density = dbValues[db_density];
+  const PylithScalar vs = dbValues[db_vs];
+  const PylithScalar vp = dbValues[db_vp];
+  const PylithScalar referenceStrainRate = dbValues[db_referenceStrainRate];
+  const PylithScalar referenceStress = dbValues[db_referenceStress];
+  const PylithScalar powerLawExponent = dbValues[db_powerLawExponent];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0 || referenceStrainRate <= 0.0
       || referenceStress <= 0.0 || powerLawExponent < 1.0) {
@@ -232,8 +232,8 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  const double mu = density * vs*vs;
-  const double lambda = density * vp*vp - 2.0*mu;
+  const PylithScalar mu = density * vs*vs;
+  const PylithScalar lambda = density * vp*vp - 2.0*mu;
 
   if (lambda <= 0.0) {
     std::ostringstream msg;
@@ -258,17 +258,17 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize properties.
 void
-pylith::materials::PowerLaw3D::_nondimProperties(double* const values,
+pylith::materials::PowerLaw3D::_nondimProperties(PylithScalar* const values,
 					         const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
-  const double strainRateScale = 1.0/timeScale;
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
+  const PylithScalar strainRateScale = 1.0/timeScale;
 
   values[p_density] = 
     _normalizer->nondimensionalize(values[p_density], densityScale);
@@ -288,17 +288,17 @@
 // ----------------------------------------------------------------------
 // Dimensionalize properties.
 void
-pylith::materials::PowerLaw3D::_dimProperties(double* const values,
+pylith::materials::PowerLaw3D::_dimProperties(PylithScalar* const values,
 						      const int nvalues) const
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numPropsQuadPt);
 
-  const double densityScale = _normalizer->densityScale();
-  const double pressureScale = _normalizer->pressureScale();
-  const double timeScale = _normalizer->timeScale();
-  const double strainRateScale = 1.0/timeScale;
+  const PylithScalar densityScale = _normalizer->densityScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
+  const PylithScalar timeScale = _normalizer->timeScale();
+  const PylithScalar strainRateScale = 1.0/timeScale;
 
   values[p_density] = 
     _normalizer->dimensionalize(values[p_density], densityScale);
@@ -318,8 +318,8 @@
 // Compute initial state variables from values in spatial database.
 void
 pylith::materials::PowerLaw3D::_dbToStateVars(
-				double* const stateValues,
-				const double_array& dbValues)
+				PylithScalar* const stateValues,
+				const scalar_array& dbValues)
 { // _dbToStateVars
   assert(0 != stateValues);
   const int numDBValues = dbValues.size();
@@ -329,9 +329,9 @@
   assert(totalSize == _numVarsQuadPt);
   assert(totalSize == numDBValues);
   memcpy(&stateValues[s_viscousStrain], &dbValues[db_viscousStrain],
-	 _tensorSize*sizeof(double));
+	 _tensorSize*sizeof(PylithScalar));
   memcpy(&stateValues[s_stress], &dbValues[db_stress],
-	 _tensorSize*sizeof(double));
+	 _tensorSize*sizeof(PylithScalar));
 
   PetscLogFlops(0);
 } // _dbToStateVars
@@ -339,14 +339,14 @@
 // ----------------------------------------------------------------------
 // Nondimensionalize state variables.
 void
-pylith::materials::PowerLaw3D::_nondimStateVars(double* const values,
+pylith::materials::PowerLaw3D::_nondimStateVars(PylithScalar* const values,
 						const int nvalues) const
 { // _nondimStateVars
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numVarsQuadPt);
 
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
   _normalizer->nondimensionalize(&values[s_stress], _tensorSize, pressureScale);
 
   PetscLogFlops(_tensorSize);
@@ -355,14 +355,14 @@
 // ----------------------------------------------------------------------
 // Dimensionalize state variables.
 void
-pylith::materials::PowerLaw3D::_dimStateVars(double* const values,
+pylith::materials::PowerLaw3D::_dimStateVars(PylithScalar* const values,
 					     const int nvalues) const
 { // _dimStateVars
   assert(0 != _normalizer);
   assert(0 != values);
   assert(nvalues == _numVarsQuadPt);
 
-  const double pressureScale = _normalizer->pressureScale();
+  const PylithScalar pressureScale = _normalizer->pressureScale();
   _normalizer->dimensionalize(&values[s_stress], _tensorSize, pressureScale);
 
   PetscLogFlops(_tensorSize);
@@ -371,10 +371,10 @@
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::PowerLaw3D::_calcDensity(double* const density,
-					    const double* properties,
+pylith::materials::PowerLaw3D::_calcDensity(PylithScalar* const density,
+					    const PylithScalar* properties,
 					    const int numProperties,
-					    const double* stateVars,
+					    const PylithScalar* stateVars,
 					    const int numStateVars)
 { // _calcDensity
   assert(0 != density);
@@ -386,39 +386,39 @@
 
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
-double
+PylithScalar
 pylith::materials::PowerLaw3D::_stableTimeStepImplicit(
-				  const double* properties,
+				  const PylithScalar* properties,
 				  const int numProperties,
-				  const double* stateVars,
+				  const PylithScalar* stateVars,
 				  const int numStateVars) const
 { // _stableTimeStepImplicit
   assert(0 != properties);
   assert(_numPropsQuadPt == numProperties);
   assert(0 != stateVars);
   assert(_numVarsQuadPt == numStateVars);
-  const double mu = properties[p_mu];
-  const double referenceStrainRate = properties[p_referenceStrainRate];
-  const double referenceStress = properties[p_referenceStress];
-  const double powerLawExp = properties[p_powerLawExponent];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar referenceStrainRate = properties[p_referenceStrainRate];
+  const PylithScalar referenceStress = properties[p_referenceStress];
+  const PylithScalar powerLawExp = properties[p_powerLawExponent];
 
-  const double stress[] = {stateVars[s_stress],
+  const PylithScalar stress[] = {stateVars[s_stress],
 			   stateVars[s_stress + 1],
 			   stateVars[s_stress + 2],
 			   stateVars[s_stress + 3],
 			   stateVars[s_stress + 4],
 			   stateVars[s_stress + 5]};
-  const double meanStress = (stress[0] + stress[1] + stress[2])/3.0;
-  const double devStress[] = {stress[0] - meanStress,
+  const PylithScalar meanStress = (stress[0] + stress[1] + stress[2])/3.0;
+  const PylithScalar devStress[] = {stress[0] - meanStress,
 			      stress[1] - meanStress,
 			      stress[2] - meanStress,
 			      stress[3],
 			      stress[4],
 			      stress[5] };
-  const double devStressProd =
+  const PylithScalar devStressProd =
     pylith::materials::ElasticMaterial::scalarProduct3D(devStress, devStress);
-  const double effStress = sqrt(0.5 * devStressProd);
-  double dtTest = 0.0;
+  const PylithScalar effStress = sqrt(0.5 * devStressProd);
+  PylithScalar dtTest = 0.0;
   if (effStress <= 0.0) {
     dtTest = pylith::PYLITH_MAXDOUBLE;
   } else {
@@ -426,10 +426,10 @@
     pow((referenceStress/effStress), (powerLawExp - 1.0)) *
     (referenceStress/mu)/referenceStrainRate;
   } //else
-  const double dtStable = dtTest;
+  const PylithScalar dtStable = dtTest;
 
 #if 0 // DEBUGGING
-  double maxwellTime = 10.0 * dtStable;
+  PylithScalar maxwellTime = 10.0 * dtStable;
   std::cout << "Maxwell time:  " << maxwellTime << std::endl;
 #endif
   PetscLogFlops(21);
@@ -441,17 +441,17 @@
 // material.
 void
 pylith::materials::PowerLaw3D::_calcStressElastic(
-				         double* const stress,
+				         PylithScalar* const stress,
 					 const int stressSize,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize,
 					 const bool computeStateVars)
 { // _calcStressElastic
@@ -468,19 +468,19 @@
   assert(0 != initialStrain);
   assert(_PowerLaw3D::tensorSize == initialStrainSize);
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double mu2 = 2.0 * mu;
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar mu2 = 2.0 * mu;
 
-  const double e11 = totalStrain[0] - initialStrain[0];
-  const double e22 = totalStrain[1] - initialStrain[1];
-  const double e33 = totalStrain[2] - initialStrain[2];
-  const double e12 = totalStrain[3] - initialStrain[3];
-  const double e23 = totalStrain[4] - initialStrain[4];
-  const double e13 = totalStrain[5] - initialStrain[5];
+  const PylithScalar e11 = totalStrain[0] - initialStrain[0];
+  const PylithScalar e22 = totalStrain[1] - initialStrain[1];
+  const PylithScalar e33 = totalStrain[2] - initialStrain[2];
+  const PylithScalar e12 = totalStrain[3] - initialStrain[3];
+  const PylithScalar e23 = totalStrain[4] - initialStrain[4];
+  const PylithScalar e13 = totalStrain[5] - initialStrain[5];
   
-  const double traceStrainTpdt = e11 + e22 + e33;
-  const double s123 = lambda * traceStrainTpdt;
+  const PylithScalar traceStrainTpdt = e11 + e22 + e33;
+  const PylithScalar s123 = lambda * traceStrainTpdt;
 
   stress[0] = s123 + mu2*e11 + initialStress[0];
   stress[1] = s123 + mu2*e22 + initialStress[1];
@@ -497,17 +497,17 @@
 // material.
 void
 pylith::materials::PowerLaw3D::_calcStressViscoelastic(
-					double* const stress,
+					PylithScalar* const stress,
 					const int stressSize,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize,
 					const bool computeStateVars)
 { // _calcStressViscoelastic
@@ -530,112 +530,112 @@
   // time step.
   if (computeStateVars) {
 
-    const double mu = properties[p_mu];
-    const double lambda = properties[p_lambda];
-    const double referenceStrainRate = properties[p_referenceStrainRate];
-    const double referenceStress = properties[p_referenceStress];
-    const double powerLawExp = properties[p_powerLawExponent];
-    const double visStrainT[] = {stateVars[s_viscousStrain],
+    const PylithScalar mu = properties[p_mu];
+    const PylithScalar lambda = properties[p_lambda];
+    const PylithScalar referenceStrainRate = properties[p_referenceStrainRate];
+    const PylithScalar referenceStress = properties[p_referenceStress];
+    const PylithScalar powerLawExp = properties[p_powerLawExponent];
+    const PylithScalar visStrainT[] = {stateVars[s_viscousStrain],
 				 stateVars[s_viscousStrain + 1],
 				 stateVars[s_viscousStrain + 2],
 				 stateVars[s_viscousStrain + 3],
 				 stateVars[s_viscousStrain + 4],
 				 stateVars[s_viscousStrain + 5]};
-    const double stressT[] = {stateVars[s_stress],
+    const PylithScalar stressT[] = {stateVars[s_stress],
 			      stateVars[s_stress + 1],
 			      stateVars[s_stress + 2],
 			      stateVars[s_stress + 3],
 			      stateVars[s_stress + 4],
 			      stateVars[s_stress + 5]};
 
-    const double mu2 = 2.0 * mu;
-    const double bulkModulus = lambda + mu2/3.0;
-    const double ae = 1.0/mu2;
-    const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+    const PylithScalar mu2 = 2.0 * mu;
+    const PylithScalar bulkModulus = lambda + mu2/3.0;
+    const PylithScalar ae = 1.0/mu2;
+    const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
     // Need to figure out how time integration parameter alpha is going to be
     // specified.  It should probably be specified in the problem definition and
     // then used only by the material types that use it.  For now we are setting
     // it to 0.5, which should probably be the default value.
-    const double alpha = 0.5;
-    const double timeFac = _dt * (1.0 - alpha);
+    const PylithScalar alpha = 0.5;
+    const PylithScalar timeFac = _dt * (1.0 - alpha);
 
     // Initial stress values
-    const double meanStressInitial = (initialStress[0] +
+    const PylithScalar meanStressInitial = (initialStress[0] +
 				      initialStress[1] +
 				      initialStress[2])/3.0;
-    const double devStressInitial[] = { initialStress[0] - meanStressInitial,
+    const PylithScalar devStressInitial[] = { initialStress[0] - meanStressInitial,
 					initialStress[1] - meanStressInitial,
 					initialStress[2] - meanStressInitial,
 					initialStress[3],
 					initialStress[4],
 					initialStress[5] };
-    const double stressInvar2Initial = 0.5 *
+    const PylithScalar stressInvar2Initial = 0.5 *
       pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							  devStressInitial);
 
     // Initial strain values
-    const double meanStrainInitial = (initialStrain[0] +
+    const PylithScalar meanStrainInitial = (initialStrain[0] +
 				      initialStrain[1] +
 				      initialStrain[2])/3.0;
 
     // Values for current time step
-    const double e11 = totalStrain[0];
-    const double e22 = totalStrain[1];
-    const double e33 = totalStrain[2];
-    const double meanStrainTpdt = (e11 + e22 + e33)/3.0 - meanStrainInitial;
-    const double meanStressTpdt = 3.0 * bulkModulus * meanStrainTpdt;
+    const PylithScalar e11 = totalStrain[0];
+    const PylithScalar e22 = totalStrain[1];
+    const PylithScalar e33 = totalStrain[2];
+    const PylithScalar meanStrainTpdt = (e11 + e22 + e33)/3.0 - meanStrainInitial;
+    const PylithScalar meanStressTpdt = 3.0 * bulkModulus * meanStrainTpdt;
 
     // Note that I use the initial strain rather than the deviatoric initial
     // strain since otherwise the initial mean strain would get used twice.
-    const double strainPPTpdt[] =
+    const PylithScalar strainPPTpdt[] =
       { totalStrain[0] - meanStrainTpdt - visStrainT[0] - initialStrain[0],
 	totalStrain[1] - meanStrainTpdt - visStrainT[1] - initialStrain[1],
 	totalStrain[2] - meanStrainTpdt - visStrainT[2] - initialStrain[2],
 	totalStrain[3] - visStrainT[3] - initialStrain[3],
 	totalStrain[4] - visStrainT[4] - initialStrain[4],
 	totalStrain[5] - visStrainT[5] - initialStrain[5] };
-    const double strainPPInvar2Tpdt = 0.5 *
+    const PylithScalar strainPPInvar2Tpdt = 0.5 *
       pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							  strainPPTpdt);
 
     // Values for previous time step
-    const double meanStressT = (stressT[0] +
+    const PylithScalar meanStressT = (stressT[0] +
 				stressT[1] +
 				stressT[2])/3.0;
-    const double devStressT[] = { stressT[0] - meanStressT,
+    const PylithScalar devStressT[] = { stressT[0] - meanStressT,
 				  stressT[1] - meanStressT,
 				  stressT[2] - meanStressT,
 				  stressT[3],
 				  stressT[4],
 				  stressT[5] };
-    const double stressInvar2T = 0.5 *
+    const PylithScalar stressInvar2T = 0.5 *
       pylith::materials::ElasticMaterial::scalarProduct3D(devStressT,
 							  devStressT);
-    const double effStressT = sqrt(stressInvar2T);
+    const PylithScalar effStressT = sqrt(stressInvar2T);
 
     // Finish defining parameters needed for root-finding algorithm.
-    const double b = strainPPInvar2Tpdt + ae *
+    const PylithScalar b = strainPPInvar2Tpdt + ae *
       pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							  devStressInitial) +
       ae * ae * stressInvar2Initial;
-    const double c =
+    const PylithScalar c =
       (pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							   devStressT) +
        ae *
        pylith::materials::ElasticMaterial::scalarProduct3D(devStressT,
 							   devStressInitial)) *
       timeFac;
-    const double d = timeFac * effStressT;
+    const PylithScalar d = timeFac * effStressT;
 
     PetscLogFlops(92);
 
     // If b, c, and d are all zero, then the effective stress is zero and we
     // don't need a root-finding algorithm. Otherwise, use the algorithm to
     // find the effective stress.
-    double effStressTpdt = 0.0;
+    PylithScalar effStressTpdt = 0.0;
     if (b != 0.0 || c != 0.0 || d != 0.0) {
-      const double stressScale = mu;
+      const PylithScalar stressScale = mu;
 
       // Put parameters into a struct and call root-finding algorithm.
       _effStressParams.ae = ae;
@@ -649,7 +649,7 @@
       _effStressParams.referenceStrainRate = referenceStrainRate;
       _effStressParams.referenceStress = referenceStress;
       
-      const double effStressInitialGuess = effStressT;
+      const PylithScalar effStressInitialGuess = effStressT;
 
       effStressTpdt =
 	EffectiveStress::calculate<PowerLaw3D>(effStressInitialGuess,
@@ -657,14 +657,14 @@
     } // if
 
     // Compute stresses from effective stress.
-    const double effStressTau = (1.0 - alpha) * effStressT +
+    const PylithScalar effStressTau = (1.0 - alpha) * effStressT +
       alpha * effStressTpdt;
-    const double gammaTau = referenceStrainRate *
+    const PylithScalar gammaTau = referenceStrainRate *
       pow((effStressTau/referenceStress),
 	  (powerLawExp - 1.0))/referenceStress;
-    const double factor1 = 1.0/(ae + alpha * _dt * gammaTau);
-    const double factor2 = timeFac * gammaTau;
-    double devStressTpdt = 0.0;
+    const PylithScalar factor1 = 1.0/(ae + alpha * _dt * gammaTau);
+    const PylithScalar factor2 = timeFac * gammaTau;
+    PylithScalar devStressTpdt = 0.0;
 
     for (int iComp=0; iComp < tensorSize; ++iComp) {
       devStressTpdt = factor1 *
@@ -678,7 +678,7 @@
     // If state variables have already been updated, current stress is already
     // contained in stress.
   } else {
-    memcpy(&stress[0], &stateVars[s_stress], tensorSize * sizeof(double));
+    memcpy(&stress[0], &stateVars[s_stress], tensorSize * sizeof(PylithScalar));
   } // else
 
 } // _calcStressViscoelastic
@@ -686,25 +686,25 @@
 // ----------------------------------------------------------------------
 // Effective stress function that computes effective stress function only
 // (no derivative).
-double
-pylith::materials::PowerLaw3D::effStressFunc(const double effStressTpdt)
+PylithScalar
+pylith::materials::PowerLaw3D::effStressFunc(const PylithScalar effStressTpdt)
 { // effStressFunc
-  const double ae = _effStressParams.ae;
-  const double b = _effStressParams.b;
-  const double c = _effStressParams.c;
-  const double d = _effStressParams.d;
-  const double alpha = _effStressParams.alpha;
-  const double dt = _effStressParams.dt;
-  const double effStressT = _effStressParams.effStressT;
-  const double powerLawExp = _effStressParams.powerLawExp;
-  const double referenceStrainRate = _effStressParams.referenceStrainRate;
-  const double referenceStress = _effStressParams.referenceStress;
-  const double factor1 = 1.0-alpha;
-  const double effStressTau = factor1 * effStressT + alpha * effStressTpdt;
-  const double gammaTau = referenceStrainRate * 
+  const PylithScalar ae = _effStressParams.ae;
+  const PylithScalar b = _effStressParams.b;
+  const PylithScalar c = _effStressParams.c;
+  const PylithScalar d = _effStressParams.d;
+  const PylithScalar alpha = _effStressParams.alpha;
+  const PylithScalar dt = _effStressParams.dt;
+  const PylithScalar effStressT = _effStressParams.effStressT;
+  const PylithScalar powerLawExp = _effStressParams.powerLawExp;
+  const PylithScalar referenceStrainRate = _effStressParams.referenceStrainRate;
+  const PylithScalar referenceStress = _effStressParams.referenceStress;
+  const PylithScalar factor1 = 1.0-alpha;
+  const PylithScalar effStressTau = factor1 * effStressT + alpha * effStressTpdt;
+  const PylithScalar gammaTau = referenceStrainRate * 
     pow((effStressTau/referenceStress), (powerLawExp - 1.0))/referenceStress;
-  const double a = ae + alpha * dt * gammaTau;
-  const double y = a * a * effStressTpdt * effStressTpdt - b +
+  const PylithScalar a = ae + alpha * dt * gammaTau;
+  const PylithScalar y = a * a * effStressTpdt * effStressTpdt - b +
     c * gammaTau - d * d * gammaTau * gammaTau;
 
   PetscLogFlops(21);
@@ -715,27 +715,27 @@
 // ----------------------------------------------------------------------
 // Effective stress function that computes effective stress function
 // derivative only (no function value).
-double
-pylith::materials::PowerLaw3D::effStressDerivFunc(const double effStressTpdt)
+PylithScalar
+pylith::materials::PowerLaw3D::effStressDerivFunc(const PylithScalar effStressTpdt)
 { // effStressDFunc
-  const double ae = _effStressParams.ae;
-  const double c = _effStressParams.c;
-  const double d = _effStressParams.d;
-  const double alpha = _effStressParams.alpha;
-  const double dt = _effStressParams.dt;
-  const double effStressT = _effStressParams.effStressT;
-  const double powerLawExp = _effStressParams.powerLawExp;
-  const double referenceStrainRate = _effStressParams.referenceStrainRate;
-  const double referenceStress = _effStressParams.referenceStress;
-  const double factor1 = 1.0-alpha;
-  const double effStressTau = factor1 * effStressT + alpha * effStressTpdt;
-  const double gammaTau = referenceStrainRate *
+  const PylithScalar ae = _effStressParams.ae;
+  const PylithScalar c = _effStressParams.c;
+  const PylithScalar d = _effStressParams.d;
+  const PylithScalar alpha = _effStressParams.alpha;
+  const PylithScalar dt = _effStressParams.dt;
+  const PylithScalar effStressT = _effStressParams.effStressT;
+  const PylithScalar powerLawExp = _effStressParams.powerLawExp;
+  const PylithScalar referenceStrainRate = _effStressParams.referenceStrainRate;
+  const PylithScalar referenceStress = _effStressParams.referenceStress;
+  const PylithScalar factor1 = 1.0-alpha;
+  const PylithScalar effStressTau = factor1 * effStressT + alpha * effStressTpdt;
+  const PylithScalar gammaTau = referenceStrainRate *
     pow((effStressTau/referenceStress), (powerLawExp - 1.0))/referenceStress;
-  const double a = ae + alpha * dt * gammaTau;
-  const double dGammaTau = referenceStrainRate * alpha * (powerLawExp - 1.0) *
+  const PylithScalar a = ae + alpha * dt * gammaTau;
+  const PylithScalar dGammaTau = referenceStrainRate * alpha * (powerLawExp - 1.0) *
     pow((effStressTau/referenceStress), (powerLawExp - 2.0))/
     (referenceStress * referenceStress);
-  const double dy = 2.0 * a * a * effStressTpdt + dGammaTau *
+  const PylithScalar dy = 2.0 * a * a * effStressTpdt + dGammaTau *
     (2.0 * a * alpha * dt * effStressTpdt * effStressTpdt +
      c - 2.0 * d * d * gammaTau);
   PetscLogFlops(36);
@@ -747,31 +747,31 @@
 // Effective stress function that computes effective stress function
 // and derivative.
 void
-pylith::materials::PowerLaw3D::effStressFuncDerivFunc(double* func,
-						      double* dfunc,
-						      const double effStressTpdt)
+pylith::materials::PowerLaw3D::effStressFuncDerivFunc(PylithScalar* func,
+						      PylithScalar* dfunc,
+						      const PylithScalar effStressTpdt)
 { // effStressFuncDFunc
-  double y = *func;
-  double dy = *dfunc;
+  PylithScalar y = *func;
+  PylithScalar dy = *dfunc;
 
-  const double ae = _effStressParams.ae;
-  const double b = _effStressParams.b;
-  const double c = _effStressParams.c;
-  const double d = _effStressParams.d;
-  const double alpha = _effStressParams.alpha;
-  const double dt = _effStressParams.dt;
-  const double effStressT = _effStressParams.effStressT;
-  const double powerLawExp = _effStressParams.powerLawExp;
-  const double referenceStrainRate = _effStressParams.referenceStrainRate;
-  const double referenceStress = _effStressParams.referenceStress;
-  const double factor1 = 1.0-alpha;
-  const double effStressTau = factor1 * effStressT + alpha * effStressTpdt;
-  const double gammaTau = referenceStrainRate *
+  const PylithScalar ae = _effStressParams.ae;
+  const PylithScalar b = _effStressParams.b;
+  const PylithScalar c = _effStressParams.c;
+  const PylithScalar d = _effStressParams.d;
+  const PylithScalar alpha = _effStressParams.alpha;
+  const PylithScalar dt = _effStressParams.dt;
+  const PylithScalar effStressT = _effStressParams.effStressT;
+  const PylithScalar powerLawExp = _effStressParams.powerLawExp;
+  const PylithScalar referenceStrainRate = _effStressParams.referenceStrainRate;
+  const PylithScalar referenceStress = _effStressParams.referenceStress;
+  const PylithScalar factor1 = 1.0-alpha;
+  const PylithScalar effStressTau = factor1 * effStressT + alpha * effStressTpdt;
+  const PylithScalar gammaTau = referenceStrainRate *
     pow((effStressTau/referenceStress), (powerLawExp - 1.0))/referenceStress;
-  const double dGammaTau = referenceStrainRate * alpha * (powerLawExp - 1.0) *
+  const PylithScalar dGammaTau = referenceStrainRate * alpha * (powerLawExp - 1.0) *
     pow((effStressTau/referenceStress), (powerLawExp - 2.0))/
     (referenceStress * referenceStress);
-  const double a = ae + alpha * dt * gammaTau;
+  const PylithScalar a = ae + alpha * dt * gammaTau;
   y = a * a * effStressTpdt * effStressTpdt -
     b +
     c * gammaTau -
@@ -791,17 +791,17 @@
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::PowerLaw3D::_calcElasticConstsElastic(
-				         double* const elasticConsts,
+				         PylithScalar* const elasticConsts,
 					 const int numElasticConsts,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize)
 { // _calcElasticConstsElastic
   assert(0 != elasticConsts);
@@ -817,11 +817,11 @@
   assert(0 != initialStrain);
   assert(_PowerLaw3D::tensorSize == initialStrainSize);
  
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
 
-  const double mu2 = 2.0 * mu;
-  const double lambda2mu = lambda + mu2;
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar lambda2mu = lambda + mu2;
 
   elasticConsts[ 0] = lambda2mu; // C1111
   elasticConsts[ 1] = lambda; // C1122
@@ -868,17 +868,17 @@
 // as a viscoelastic material.
 void
 pylith::materials::PowerLaw3D::_calcElasticConstsViscoelastic(
-				         double* const elasticConsts,
+				         PylithScalar* const elasticConsts,
 					 const int numElasticConsts,
-					 const double* properties,
+					 const PylithScalar* properties,
 					 const int numProperties,
-					 const double* stateVars,
+					 const PylithScalar* stateVars,
 					 const int numStateVars,
-					 const double* totalStrain,
+					 const PylithScalar* totalStrain,
 					 const int strainSize,
-					 const double* initialStress,
+					 const PylithScalar* initialStress,
 					 const int initialStressSize,
-					 const double* initialStrain,
+					 const PylithScalar* initialStrain,
 					 const int initialStrainSize)
 { // _calcElasticConstsViscoelastic
   assert(0 != elasticConsts);
@@ -896,105 +896,105 @@
 
   const int tensorSize = _tensorSize;
 
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double referenceStrainRate = properties[p_referenceStrainRate];
-  const double referenceStress = properties[p_referenceStress];
-  const double powerLawExp = properties[p_powerLawExponent];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar referenceStrainRate = properties[p_referenceStrainRate];
+  const PylithScalar referenceStress = properties[p_referenceStress];
+  const PylithScalar powerLawExp = properties[p_powerLawExponent];
     
   // State variables.
-  const double visStrainT[] = {stateVars[s_viscousStrain],
+  const PylithScalar visStrainT[] = {stateVars[s_viscousStrain],
 			       stateVars[s_viscousStrain + 1],
 			       stateVars[s_viscousStrain + 2],
 			       stateVars[s_viscousStrain + 3],
 			       stateVars[s_viscousStrain + 4],
 			       stateVars[s_viscousStrain + 5]};
-  const double stressT[] = {stateVars[s_stress],
+  const PylithScalar stressT[] = {stateVars[s_stress],
 			    stateVars[s_stress + 1],
 			    stateVars[s_stress + 2],
 			    stateVars[s_stress + 3],
 			    stateVars[s_stress + 4],
 			    stateVars[s_stress + 5]};
 
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2/3.0;
-  const double ae = 1.0/mu2;
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2/3.0;
+  const PylithScalar ae = 1.0/mu2;
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
     
   // Need to figure out how time integration parameter alpha is going to be
   // specified.  It should probably be specified in the problem definition and
   // then used only by the material types that use it.  For now we are setting
   // it to 0.5, which should probably be the default value.
-  const double alpha = 0.5;
-  const double explicitFac = 1.0 - alpha;
-  const double timeFac = _dt * explicitFac;
+  const PylithScalar alpha = 0.5;
+  const PylithScalar explicitFac = 1.0 - alpha;
+  const PylithScalar timeFac = _dt * explicitFac;
     
   /// Initial state.
   // Initial stress values.
-  const double meanStressInitial = (initialStress[0] +
+  const PylithScalar meanStressInitial = (initialStress[0] +
 				    initialStress[1] +
 				    initialStress[2])/3.0;
-  const double devStressInitial[] = { initialStress[0] - meanStressInitial,
+  const PylithScalar devStressInitial[] = { initialStress[0] - meanStressInitial,
 				      initialStress[1] - meanStressInitial,
 				      initialStress[2] - meanStressInitial,
 				      initialStress[3],
 				      initialStress[4],
 				      initialStress[5] };
-  const double stressInvar2Initial = 0.5 *
+  const PylithScalar stressInvar2Initial = 0.5 *
     pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							devStressInitial);
 
   // Initial strain values.
-  const double meanStrainInitial = (initialStrain[0] +
+  const PylithScalar meanStrainInitial = (initialStrain[0] +
 				    initialStrain[1] +
 				    initialStrain[2])/3.0;
   
   /// Values for current time step
-  const double e11 = totalStrain[0];
-  const double e22 = totalStrain[1];
-  const double e33 = totalStrain[2];
-  const double meanStrainTpdt = (e11 + e22 + e33)/3.0 - meanStrainInitial;
-  const double meanStressTpdt = 3.0 * bulkModulus * meanStrainTpdt;
+  const PylithScalar e11 = totalStrain[0];
+  const PylithScalar e22 = totalStrain[1];
+  const PylithScalar e33 = totalStrain[2];
+  const PylithScalar meanStrainTpdt = (e11 + e22 + e33)/3.0 - meanStrainInitial;
+  const PylithScalar meanStressTpdt = 3.0 * bulkModulus * meanStrainTpdt;
   
   // Note that I use the initial strain rather than the deviatoric initial
   // strain since otherwise the initial mean strain would get used twice.
   
-  const double strainPPTpdt[] =
+  const PylithScalar strainPPTpdt[] =
     { totalStrain[0] - meanStrainTpdt - visStrainT[0] - initialStrain[0],
       totalStrain[1] - meanStrainTpdt - visStrainT[1] - initialStrain[1],
       totalStrain[2] - meanStrainTpdt - visStrainT[2] - initialStrain[2],
       totalStrain[3] - visStrainT[3] - initialStrain[3],
       totalStrain[4] - visStrainT[4] - initialStrain[4],
       totalStrain[5] - visStrainT[5] - initialStrain[5] };
-  const double strainPPInvar2Tpdt = 0.5 *
+  const PylithScalar strainPPInvar2Tpdt = 0.5 *
     pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							strainPPTpdt);
   
   // Values for previous time step
-  const double meanStressT = (stressT[0] + stressT[1] + stressT[2])/3.0;
-  const double devStressT[] = { stressT[0] - meanStressT,
+  const PylithScalar meanStressT = (stressT[0] + stressT[1] + stressT[2])/3.0;
+  const PylithScalar devStressT[] = { stressT[0] - meanStressT,
 				stressT[1] - meanStressT,
 				stressT[2] - meanStressT,
 				stressT[3],
 				stressT[4],
 				stressT[5] };
-  const double stressInvar2T = 0.5 *
+  const PylithScalar stressInvar2T = 0.5 *
     pylith::materials::ElasticMaterial::scalarProduct3D(devStressT, devStressT);
-  const double effStressT = sqrt(stressInvar2T);
+  const PylithScalar effStressT = sqrt(stressInvar2T);
     
   // Finish defining parameters needed for root-finding algorithm.
-  const double b = strainPPInvar2Tpdt +
+  const PylithScalar b = strainPPInvar2Tpdt +
     ae * pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							     devStressInitial) +
     ae * ae * stressInvar2Initial;
-  const double c =
+  const PylithScalar c =
     (pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							 devStressT) +
      ae *
      pylith::materials::ElasticMaterial::scalarProduct3D(devStressT,
 							 devStressInitial)) *
     timeFac;
-  const double d = timeFac * effStressT;
+  const PylithScalar d = timeFac * effStressT;
 
   PetscLogFlops(92);
 
@@ -1015,7 +1015,7 @@
 			      initialStrain,
 			      initialStrainSize);
   } else {
-    const double stressScale = mu;
+    const PylithScalar stressScale = mu;
   
     // Put parameters into a struct and call root-finding algorithm.
     _effStressParams.ae = ae;
@@ -1029,23 +1029,23 @@
     _effStressParams.referenceStrainRate = referenceStrainRate;
     _effStressParams.referenceStress = referenceStress;
     
-    const double effStressInitialGuess = effStressT;
+    const PylithScalar effStressInitialGuess = effStressT;
     
-    const double effStressTpdt =
+    const PylithScalar effStressTpdt =
       EffectiveStress::calculate<PowerLaw3D>(effStressInitialGuess,
 					     stressScale, this);
   
     // Compute quantities at intermediate time tau used to compute values at
     // end of time step.
-    const double effStressTau = (1.0 - alpha) * effStressT +
+    const PylithScalar effStressTau = (1.0 - alpha) * effStressT +
       alpha * effStressTpdt;
-    const double gammaTau = referenceStrainRate *
+    const PylithScalar gammaTau = referenceStrainRate *
       pow((effStressTau/referenceStress),
 	  (powerLawExp - 1.0))/referenceStress;
-    const double a = ae + alpha * _dt * gammaTau;
-    const double factor1 = 1.0/a;
-    const double factor2 = timeFac * gammaTau;
-    const double devStressTpdt[] = {
+    const PylithScalar a = ae + alpha * _dt * gammaTau;
+    const PylithScalar factor1 = 1.0/a;
+    const PylithScalar factor2 = timeFac * gammaTau;
+    const PylithScalar devStressTpdt[] = {
       factor1 *
       (strainPPTpdt[0] - factor2 * devStressT[0] + ae * devStressInitial[0]),
       factor1 *
@@ -1058,30 +1058,30 @@
       (strainPPTpdt[4] - factor2 * devStressT[4] + ae * devStressInitial[4]),
       factor1 *
       (strainPPTpdt[5] - factor2 * devStressT[5] + ae * devStressInitial[5])};
-    const double devStressTau[] = {
+    const PylithScalar devStressTau[] = {
       alpha * devStressT[0] + explicitFac * devStressTpdt[0],
       alpha * devStressT[1] + explicitFac * devStressTpdt[1],
       alpha * devStressT[2] + explicitFac * devStressTpdt[2],
       alpha * devStressT[3] + explicitFac * devStressTpdt[3],
       alpha * devStressT[4] + explicitFac * devStressTpdt[4],
       alpha * devStressT[5] + explicitFac * devStressTpdt[5]};
-    const double factor3 = 0.5 * referenceStrainRate * _dt * alpha *
+    const PylithScalar factor3 = 0.5 * referenceStrainRate * _dt * alpha *
       (powerLawExp - 1.0) *
       pow((effStressTau/referenceStress), (powerLawExp - 2.0))/
       (referenceStress * referenceStress * effStressTpdt);
 
     // Compute deviatoric derivatives
-    const double dStress11dStrain11 = 1.0/
+    const PylithScalar dStress11dStrain11 = 1.0/
       (a + devStressTau[0] * devStressTpdt[0] * factor3);
-    const double dStress22dStrain22 = 1.0/
+    const PylithScalar dStress22dStrain22 = 1.0/
       (a + devStressTau[1] * devStressTpdt[1] * factor3);
-    const double dStress33dStrain33 = 1.0/
+    const PylithScalar dStress33dStrain33 = 1.0/
       (a + devStressTau[2] * devStressTpdt[2] * factor3);
-    const double dStress12dStrain12 = 1.0/
+    const PylithScalar dStress12dStrain12 = 1.0/
       (a + 2.0 * devStressTau[3] * devStressTpdt[3] * factor3);
-    const double dStress23dStrain23 = 1.0/
+    const PylithScalar dStress23dStrain23 = 1.0/
       (a + 2.0 * devStressTau[4] * devStressTpdt[4] * factor3);
-    const double dStress13dStrain13 = 1.0/
+    const PylithScalar dStress13dStrain13 = 1.0/
       (a + 2.0 * devStressTau[5] * devStressTpdt[5] * factor3);
     
     /// Compute tangent matrix.
@@ -1130,15 +1130,15 @@
 // Update state variables.
 void
 pylith::materials::PowerLaw3D::_updateStateVarsElastic(
-				    double* const stateVars,
+				    PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize)
 { // _updateStateVarsElastic
   assert(0 != stateVars);
@@ -1153,7 +1153,7 @@
   assert(_PowerLaw3D::tensorSize == initialStrainSize);
 
   const bool computeStateVars = true;
-  double stress[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+  PylithScalar stress[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
   const int stressSize = strainSize;
   _calcStressElastic(stress, stressSize,
 		     properties, numProperties,
@@ -1175,15 +1175,15 @@
 // Update state variables.
 void
 pylith::materials::PowerLaw3D::_updateStateVarsViscoelastic(
-				    double* const stateVars,
+				    PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize)
 { // _updateStateVarsViscoelastic
   assert(0 != stateVars);
@@ -1201,109 +1201,109 @@
 
   // For now, we are duplicating the functionality of _calcStressViscoelastic,
   // since otherwise we would have to redo a lot of calculations.
-  const double mu = properties[p_mu];
-  const double lambda = properties[p_lambda];
-  const double referenceStrainRate = properties[p_referenceStrainRate];
-  const double referenceStress = properties[p_referenceStress];
-  const double powerLawExp = properties[p_powerLawExponent];
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar referenceStrainRate = properties[p_referenceStrainRate];
+  const PylithScalar referenceStress = properties[p_referenceStress];
+  const PylithScalar powerLawExp = properties[p_powerLawExponent];
 
-  const double visStrainT[] = {stateVars[s_viscousStrain],
+  const PylithScalar visStrainT[] = {stateVars[s_viscousStrain],
 			       stateVars[s_viscousStrain + 1],
 			       stateVars[s_viscousStrain + 2],
 			       stateVars[s_viscousStrain + 3],
 			       stateVars[s_viscousStrain + 4],
 			       stateVars[s_viscousStrain + 5]};
 
-  const double stressT[] = {stateVars[s_stress],
+  const PylithScalar stressT[] = {stateVars[s_stress],
 			    stateVars[s_stress + 1],
 			    stateVars[s_stress + 2],
 			    stateVars[s_stress + 3],
 			    stateVars[s_stress + 4],
 			    stateVars[s_stress + 5]};
   
-  const double mu2 = 2.0 * mu;
-  const double bulkModulus = lambda + mu2/3.0;
-  const double ae = 1.0/mu2;
-  const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+  const PylithScalar mu2 = 2.0 * mu;
+  const PylithScalar bulkModulus = lambda + mu2/3.0;
+  const PylithScalar ae = 1.0/mu2;
+  const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
 
   // Need to figure out how time integration parameter alpha is going to be
   // specified.  It should probably be specified in the problem definition and
   // then used only by the material types that use it.  For now we are setting
   // it to 0.5, which should probably be the default value.
-  const double alpha = 0.5;
-  const double timeFac = _dt * (1.0 - alpha);
+  const PylithScalar alpha = 0.5;
+  const PylithScalar timeFac = _dt * (1.0 - alpha);
 
   // Initial stress values
-  const double meanStressInitial = (initialStress[0] + initialStress[1] +
+  const PylithScalar meanStressInitial = (initialStress[0] + initialStress[1] +
 				    initialStress[2])/3.0;
-  const double devStressInitial[] = { initialStress[0] - meanStressInitial,
+  const PylithScalar devStressInitial[] = { initialStress[0] - meanStressInitial,
 				      initialStress[1] - meanStressInitial,
 				      initialStress[2] - meanStressInitial,
 				      initialStress[3],
 				      initialStress[4],
 				      initialStress[5] };
-  const double stressInvar2Initial = 0.5 *
+  const PylithScalar stressInvar2Initial = 0.5 *
     pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
 							devStressInitial);
 
   // Initial strain values
-  const double meanStrainInitial = (initialStrain[0] + initialStrain[1] +
+  const PylithScalar meanStrainInitial = (initialStrain[0] + initialStrain[1] +
 				    initialStrain[2])/3.0;
   
   // Values for current time step
-  const double e11 = totalStrain[0];
-  const double e22 = totalStrain[1];
-  const double e33 = totalStrain[2];
-  const double meanStrainTpdt = (e11 + e22 + e33)/3.0 - meanStrainInitial;
-  const double meanStressTpdt = 3.0 * bulkModulus * meanStrainTpdt;
+  const PylithScalar e11 = totalStrain[0];
+  const PylithScalar e22 = totalStrain[1];
+  const PylithScalar e33 = totalStrain[2];
+  const PylithScalar meanStrainTpdt = (e11 + e22 + e33)/3.0 - meanStrainInitial;
+  const PylithScalar meanStressTpdt = 3.0 * bulkModulus * meanStrainTpdt;
 
   // Note that I use the initial strain rather than the deviatoric initial
   // strain since otherwise the initial mean strain would get used twice.
-  const double strainPPTpdt[] =
+  const PylithScalar strainPPTpdt[] =
     { totalStrain[0] - meanStrainTpdt - visStrainT[0] - initialStrain[0],
       totalStrain[1] - meanStrainTpdt - visStrainT[1] - initialStrain[1],
       totalStrain[2] - meanStrainTpdt - visStrainT[2] - initialStrain[2],
       totalStrain[3] - visStrainT[3] - initialStrain[3],
       totalStrain[4] - visStrainT[4] - initialStrain[4],
       totalStrain[5] - visStrainT[5] - initialStrain[5] };
-  const double strainPPInvar2Tpdt = 0.5 *
+  const PylithScalar strainPPInvar2Tpdt = 0.5 *
     pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							strainPPTpdt);
 
   // Values for previous time step
-  const double meanStressT = (stressT[0] + stressT[1] + stressT[2])/3.0;
-  const double devStressT[] = { stressT[0] - meanStressT,
+  const PylithScalar meanStressT = (stressT[0] + stressT[1] + stressT[2])/3.0;
+  const PylithScalar devStressT[] = { stressT[0] - meanStressT,
 				stressT[1] - meanStressT,
 				stressT[2] - meanStressT,
 				stressT[3],
 				stressT[4],
 				stressT[5] };
-  const double stressInvar2T = 0.5 *
+  const PylithScalar stressInvar2T = 0.5 *
     pylith::materials::ElasticMaterial::scalarProduct3D(devStressT,
 							devStressT);
-  const double effStressT = sqrt(stressInvar2T);
+  const PylithScalar effStressT = sqrt(stressInvar2T);
 
   // Finish defining parameters needed for root-finding algorithm.
-  const double b = strainPPInvar2Tpdt +
+  const PylithScalar b = strainPPInvar2Tpdt +
     ae * pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							     devStressInitial) +
     ae * ae * stressInvar2Initial;
-  const double c =
+  const PylithScalar c =
     (pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
 							 devStressT) +
      ae *
      pylith::materials::ElasticMaterial::scalarProduct3D(devStressT,
 							 devStressInitial)) *
     timeFac;
-  const double d = timeFac * effStressT;
+  const PylithScalar d = timeFac * effStressT;
   PetscLogFlops(92);
 
   // If b, c, and d are all zero, then the effective stress is zero and we
   // don't need a root-finding algorithm. Otherwise, use the algorithm to
   // find the effective stress.
-  double effStressTpdt = 0.0;
+  PylithScalar effStressTpdt = 0.0;
   if (b != 0.0 || c != 0.0 || d != 0.0) {
-    const double stressScale = mu;
+    const PylithScalar stressScale = mu;
 
     // Put parameters into a struct and call root-finding algorithm.
     _effStressParams.ae = ae;
@@ -1317,7 +1317,7 @@
     _effStressParams.referenceStrainRate = referenceStrainRate;
     _effStressParams.referenceStress = referenceStress;
 
-    const double effStressInitialGuess = effStressT;
+    const PylithScalar effStressInitialGuess = effStressT;
 
     effStressTpdt =
       EffectiveStress::calculate<PowerLaw3D>(effStressInitialGuess,
@@ -1326,16 +1326,16 @@
   } // if
 
   // Compute stress and viscous strain and update appropriate state variables.
-  const double effStressTau = (1.0 - alpha) * effStressT +
+  const PylithScalar effStressTau = (1.0 - alpha) * effStressT +
     alpha * effStressTpdt;
-  const double gammaTau = referenceStrainRate *
+  const PylithScalar gammaTau = referenceStrainRate *
     pow((effStressTau/referenceStress),
 	(powerLawExp - 1.0))/referenceStress;
-  const double factor1 = 1.0/(ae + alpha * _dt * gammaTau);
-  const double factor2 = timeFac * gammaTau;
-  double devStressTpdt = 0.0;
-  double devStressTau = 0.0;
-  double deltaVisStrain = 0.0;
+  const PylithScalar factor1 = 1.0/(ae + alpha * _dt * gammaTau);
+  const PylithScalar factor2 = timeFac * gammaTau;
+  PylithScalar devStressTpdt = 0.0;
+  PylithScalar devStressTau = 0.0;
+  PylithScalar deltaVisStrain = 0.0;
 
   for (int iComp=0; iComp < _tensorSize; ++iComp) {
     devStressTpdt = factor1 *

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
    *
    * @param dt Current time step.
    */
-  void timeStep(const double dt);
+  void timeStep(const PylithScalar dt);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *
@@ -69,7 +69,7 @@
    *
    * @returns Effective stress function value.
    */
-  double effStressFunc(const double effStressTpdt);
+  PylithScalar effStressFunc(const PylithScalar effStressTpdt);
 
   /** Compute effective stress function derivative.
    *
@@ -77,7 +77,7 @@
    *
    * @returns Effective stress function derivative value.
    */
-  double effStressDerivFunc(const double effStressTpdt);
+  PylithScalar effStressDerivFunc(const PylithScalar effStressTpdt);
 
   /** Compute effective stress function and derivative.
    *
@@ -86,9 +86,9 @@
    * @param effStressTpdt Effective stress value.
    *
    */
-  void effStressFuncDerivFunc(double* func,
-			      double* dfunc,
-			      const double effStressTpdt);
+  void effStressFuncDerivFunc(PylithScalar* func,
+			      PylithScalar* dfunc,
+			      const PylithScalar effStressTpdt);
 
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
@@ -101,15 +101,15 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propValues,
-		       const double_array& dbValues);
+  void _dbToProperties(PylithScalar* const propValues,
+		       const scalar_array& dbValues);
 
   /** Nondimensionalize properties.
    *
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _nondimProperties(double* const values,
+  void _nondimProperties(PylithScalar* const values,
 			 const int nvalues) const;
 
   /** Dimensionalize properties.
@@ -117,7 +117,7 @@
    * @param values Array of property values.
    * @param nvalues Number of values.
    */
-  void _dimProperties(double* const values,
+  void _dimProperties(PylithScalar* const values,
 		      const int nvalues) const;
 
   /** Compute initial state variables from values in spatial database.
@@ -125,15 +125,15 @@
    * @param stateValues Array of state variable values.
    * @param dbValues Array of database values.
    */
-  void _dbToStateVars(double* const stateValues,
-		      const double_array& dbValues);
+  void _dbToStateVars(PylithScalar* const stateValues,
+		      const scalar_array& dbValues);
 
   /** Nondimensionalize state variables..
    *
    * @param values Array of state variables.
    * @param nvalues Number of values.
    */
-  void _nondimStateVars(double* const values,
+  void _nondimStateVars(PylithScalar* const values,
 			const int nvalues) const;
 
   /** Dimensionalize state variables.
@@ -141,7 +141,7 @@
    * @param values Array of state variables.
    * @param nvalues Number of values.
    */
-  void _dimStateVars(double* const values,
+  void _dimStateVars(PylithScalar* const values,
 		     const int nvalues) const;
 
   /** Compute density from properties.
@@ -152,10 +152,10 @@
    * @param stateVars State variables at location.
    * @param numStateVars Number of state variables.
    */
-  void _calcDensity(double* const density,
-		    const double* properties,
+  void _calcDensity(PylithScalar* const density,
+		    const PylithScalar* properties,
 		    const int numProperties,
-		    const double* stateVars,
+		    const PylithScalar* stateVars,
 		    const int numStateVars);
 
   /** Compute stress tensor from properties and state variables. If
@@ -177,17 +177,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state variables.
    */
-  void _calcStress(double* const stress,
+  void _calcStress(PylithScalar* const stress,
 		   const int stressSize,
-		   const double* properties,
+		   const PylithScalar* properties,
 		   const int numProperties,
-		   const double* stateVars,
+		   const PylithScalar* stateVars,
 		   const int numStateVars,
-		   const double* totalStrain,
+		   const PylithScalar* totalStrain,
 		   const int strainSize,
-		   const double* initialStress,
+		   const PylithScalar* initialStress,
 		   const int initialStressSize,
-		   const double* initialStrain,
+		   const PylithScalar* initialStrain,
 		   const int initialStrainSize,
 		   const bool computeStateVars);
 
@@ -206,17 +206,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConsts(double* const elasticConsts,
+  void _calcElasticConsts(PylithScalar* const elasticConsts,
 			  const int numElasticConsts,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-		          const double* initialStress,
+		          const PylithScalar* initialStress,
 		          const int initialStressSize,
-		          const double* initialStrain,
+		          const PylithScalar* initialStrain,
 		          const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
@@ -228,9 +228,9 @@
    *
    * @returns Time step
    */
-  double _stableTimeStepImplicit(const double* properties,
+  PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars) const;
 
   /** Update state variables (for next time step).
@@ -246,15 +246,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVars(double* const stateVars,
+  void _updateStateVars(PylithScalar* const stateVars,
 			const int numStateVars,
-			const double* properties,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* totalStrain,
+			const PylithScalar* totalStrain,
 			const int strainSize,
-			const double* initialStress,
+			const PylithScalar* initialStress,
 			const int initialStressSize,
-			const double* initialStrain,
+			const PylithScalar* initialStrain,
 			const int initialStrainSize);
 
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
@@ -262,46 +262,46 @@
 
   /// Member prototype for _calcStress()
   typedef void (pylith::materials::PowerLaw3D::*calcStress_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
      const bool);
 
   /// Member prototype for _calcElasticConsts()
   typedef void (pylith::materials::PowerLaw3D::*calcElasticConsts_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   /// Member prototype for _updateStateVars()
   typedef void (pylith::materials::PowerLaw3D::*updateStateVars_fn_type)
-    (double* const,
+    (PylithScalar* const,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int,
-     const double*,
+     const PylithScalar*,
      const int);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
@@ -323,17 +323,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressElastic(double* const stress,
+  void _calcStressElastic(PylithScalar* const stress,
 			  const int stressSize,
-			  const double* properties,
+			  const PylithScalar* properties,
 			  const int numProperties,
-			  const double* stateVars,
+			  const PylithScalar* stateVars,
 			  const int numStateVars,
-			  const double* totalStrain,
+			  const PylithScalar* totalStrain,
 			  const int strainSize,
-			  const double* initialStress,
+			  const PylithScalar* initialStress,
 			  const int initialStressSize,
-			  const double* initialStrain,
+			  const PylithScalar* initialStrain,
 			  const int initialStrainSize,
 			  const bool computeStateVars);
 
@@ -353,17 +353,17 @@
    * @param initialStrainSize Size of initial strain array.
    * @param computeStateVars Flag indicating to compute updated state vars.
    */
-  void _calcStressViscoelastic(double* const stress,
+  void _calcStressViscoelastic(PylithScalar* const stress,
 			       const int stressSize,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* stateVars,
+			       const PylithScalar* stateVars,
 			       const int numStateVars,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize,
 			       const bool computeStateVars);
 
@@ -383,17 +383,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsElastic(double* const elasticConsts,
+  void _calcElasticConstsElastic(PylithScalar* const elasticConsts,
 				 const int numElasticConsts,
-				 const double* properties,
+				 const PylithScalar* properties,
 				 const int numProperties,
-				 const double* stateVars,
+				 const PylithScalar* stateVars,
 				 const int numStateVars,
-				 const double* totalStrain,
+				 const PylithScalar* totalStrain,
 				 const int strainSize,
-				 const double* initialStress,
+				 const PylithScalar* initialStress,
 				 const int initialStressSize,
-				 const double* initialStrain,
+				 const PylithScalar* initialStrain,
 				 const int initialStrainSize);
 
   /** Compute derivatives of elasticity matrix from properties as a
@@ -412,17 +412,17 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _calcElasticConstsViscoelastic(double* const elasticConsts,
+  void _calcElasticConstsViscoelastic(PylithScalar* const elasticConsts,
 				      const int numElasticConsts,
-				      const double* properties,
+				      const PylithScalar* properties,
 				      const int numProperties,
-				      const double* stateVars,
+				      const PylithScalar* stateVars,
 				      const int numStateVars,
-				      const double* totalStrain,
+				      const PylithScalar* totalStrain,
 				      const int strainSize,
-				      const double* initialStress,
+				      const PylithScalar* initialStress,
 				      const int initialStressSize,
-				      const double* initialStrain,
+				      const PylithScalar* initialStrain,
 				      const int initialStrainSize);
 
   /** Update state variables after solve as an elastic material.
@@ -438,15 +438,15 @@
    * @param initialStrain Initial strain values.
    * @param initialStrainSize Size of initial strain array.
    */
-  void _updateStateVarsElastic(double* const stateVars,
+  void _updateStateVarsElastic(PylithScalar* const stateVars,
 			       const int numStateVars,
-			       const double* properties,
+			       const PylithScalar* properties,
 			       const int numProperties,
-			       const double* totalStrain,
+			       const PylithScalar* totalStrain,
 			       const int strainSize,
-			       const double* initialStress,
+			       const PylithScalar* initialStress,
 			       const int initialStressSize,
-			       const double* initialStrain,
+			       const PylithScalar* initialStrain,
 			       const int initialStrainSize);
 
   /** Update state variables after solve as a viscoelastic material.
@@ -458,15 +458,15 @@
    * @param initialState Initial state values.
    * @param initialStateSize Size of initial state array.
    */
-  void _updateStateVarsViscoelastic(double* const stateVars,
+  void _updateStateVarsViscoelastic(PylithScalar* const stateVars,
 				    const int numStateVars,
-				    const double* properties,
+				    const PylithScalar* properties,
 				    const int numProperties,
-				    const double* totalStrain,
+				    const PylithScalar* totalStrain,
 				    const int strainSize,
-				    const double* initialStress,
+				    const PylithScalar* initialStress,
 				    const int initialStressSize,
-				    const double* initialStrain,
+				    const PylithScalar* initialStrain,
 				    const int initialStrainSize);
 
   /** Compute scalar product, assuming vector form of a tensor.
@@ -474,23 +474,23 @@
    * @param tensor1 First tensor.
    * @param tensor2 Second tensor.
    */
-  double _scalarProduct(const double* tensor1,
-			const double* tensor2) const;
+  PylithScalar _scalarProduct(const PylithScalar* tensor1,
+			const PylithScalar* tensor2) const;
 
   // PRIVATE STRUCTS ////////////////////////////////////////////////////
 private :
 
   struct EffStressStruct {
-    double ae;
-    double b;
-    double c;
-    double d;
-    double alpha;
-    double dt;
-    double effStressT;
-    double powerLawExp;
-    double referenceStrainRate;
-    double referenceStress;
+    PylithScalar ae;
+    PylithScalar b;
+    PylithScalar c;
+    PylithScalar d;
+    PylithScalar alpha;
+    PylithScalar dt;
+    PylithScalar effStressT;
+    PylithScalar powerLawExp;
+    PylithScalar referenceStrainRate;
+    PylithScalar referenceStress;
   };
 
   // PRIVATE MEMBERS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/PowerLaw3D.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -26,7 +26,7 @@
 // Set current time step.
 inline
 void
-pylith::materials::PowerLaw3D::timeStep(const double dt) {
+pylith::materials::PowerLaw3D::timeStep(const PylithScalar dt) {
   // Not sure what to do here.  If we are using full Newton the Jacobian will
   // always need reforming, but SNES may opt not to reform it sometimes.
   _needNewJacobian = true;
@@ -36,17 +36,17 @@
 // Compute stress tensor from parameters.
 inline
 void
-pylith::materials::PowerLaw3D::_calcStress(double* const stress,
+pylith::materials::PowerLaw3D::_calcStress(PylithScalar* const stress,
 					   const int stressSize,
-					   const double* properties,
+					   const PylithScalar* properties,
 					   const int numProperties,
-					   const double* stateVars,
+					   const PylithScalar* stateVars,
 					   const int numStateVars,
-					   const double* totalStrain,
+					   const PylithScalar* totalStrain,
 					   const int strainSize,
-					   const double* initialStress,
+					   const PylithScalar* initialStress,
 					   const int initialStressSize,
-					   const double* initialStrain,
+					   const PylithScalar* initialStrain,
 					   const int initialStrainSize,
 					   const bool computeStateVars)
 {
@@ -64,17 +64,17 @@
 inline
 void
 pylith::materials::PowerLaw3D::_calcElasticConsts(
-					double* const elasticConsts,
+					PylithScalar* const elasticConsts,
 					const int numElasticConsts,
-					const double* properties,
+					const PylithScalar* properties,
 					const int numProperties,
-					const double* stateVars,
+					const PylithScalar* stateVars,
 					const int numStateVars,
-					const double* totalStrain,
+					const PylithScalar* totalStrain,
 					const int strainSize,
-					const double* initialStress,
+					const PylithScalar* initialStress,
 					const int initialStressSize,
-					const double* initialStrain,
+					const PylithScalar* initialStrain,
 					const int initialStrainSize)
 {
   assert(0 != _calcElasticConstsFn);
@@ -89,15 +89,15 @@
 // Update state variables after solve.
 inline
 void
-pylith::materials::PowerLaw3D::_updateStateVars(double* const stateVars,
+pylith::materials::PowerLaw3D::_updateStateVars(PylithScalar* const stateVars,
 						 const int numStateVars,
-						 const double* properties,
+						 const PylithScalar* properties,
 						 const int numProperties,
-						 const double* totalStrain,
+						 const PylithScalar* totalStrain,
 						 const int strainSize,
-						 const double* initialStress,
+						 const PylithScalar* initialStress,
 						 const int initialStressSize,
-						 const double* initialStrain,
+						 const PylithScalar* initialStrain,
 						 const int initialStrainSize)
 {
   assert(0 != _updateStateVarsFn);
@@ -110,11 +110,11 @@
 
 // Compute scalar product, assuming vector form of a tensor.
 // inline
-// double
-// pylith::materials::PowerLaw3D::_scalarProduct(const double* tensor1,
-// 					      const double* tensor2)
+// PylithScalar
+// pylith::materials::PowerLaw3D::_scalarProduct(const PylithScalar* tensor1,
+// 					      const PylithScalar* tensor2)
 // {
-//   const double scalarProduct = tensor1[0] * tensor2[0] +
+//   const PylithScalar scalarProduct = tensor1[0] * tensor2[0] +
 //     tensor1[1] * tensor2[1] +
 //     tensor1[2] * tensor2[2] +
 //     2.0 * (tensor1[3] * tensor2[3] +

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ViscoelasticMaxwell.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ViscoelasticMaxwell.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ViscoelasticMaxwell.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -26,31 +26,31 @@
 
 // ----------------------------------------------------------------------
 // Compute viscous strain parameter for a linear Maxwell model.
-double
-pylith::materials::ViscoelasticMaxwell::viscousStrainParam(const double dt,
-							   const double maxwellTime)
+PylithScalar
+pylith::materials::ViscoelasticMaxwell::viscousStrainParam(const PylithScalar dt,
+							   const PylithScalar maxwellTime)
 { // viscousStrainParam
   // Check parameters
   if (maxwellTime <= 0.0)
     throw std::runtime_error("Maxwell time must be greater than 0.");
 
   // Define cutoff values
-  const double timeFrac = 1.0e-10;
+  const PylithScalar timeFrac = 1.0e-10;
 
   // Compute viscous strain parameter.  The ratio of dt and
   // maxwellTime should never approach timeFrac for any reasonable
   // computation, but I have put in alternative solutions just in
   // case.
 
-  double dq = 0.0;
+  PylithScalar dq = 0.0;
 
   // Use series expansion if dt is very small, since default solution
   // blows up otherwise.
 
   if (dt < timeFrac*maxwellTime) {
-    double fSign = 1.0;
-    double factorial = 1.0;
-    double fraction = 1.0;
+    PylithScalar fSign = 1.0;
+    PylithScalar factorial = 1.0;
+    PylithScalar fraction = 1.0;
     dq = 1.0;
 
     const int numTerms = 5;

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/ViscoelasticMaxwell.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/ViscoelasticMaxwell.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/ViscoelasticMaxwell.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,6 +27,8 @@
 // Include directives ---------------------------------------------------
 #include "materialsfwd.hh" // forward declarations
 
+#include "pylith/utils/types.hh" // USES PylithScalar
+
 // ViscoelasticMaxwell --------------------------------------------------
 /** @brief Class for basic Maxwell viscoelastic functions.
  *
@@ -46,8 +48,8 @@
    *
    * @returns Viscous strain parameter.
    */
-  static double viscousStrainParam(const double dt,
-				   const double maxwellTime);
+  static PylithScalar viscousStrainParam(const PylithScalar dt,
+				   const PylithScalar maxwellTime);
 
 }; // class ViscoelasticMaxwell
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/CellFilterAvg.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -95,7 +95,7 @@
   assert(0 != quadrature);
 
   const int numQuadPts = quadrature->numQuadPts();
-  const double_array& wts = quadrature->quadWts();
+  const scalar_array& wts = quadrature->quadWts();
   
   const ALE::Obj<SieveMesh>& sieveMesh = fieldIn.mesh().sieveMesh();
   assert(!sieveMesh.isNull());
@@ -163,8 +163,8 @@
   _fieldAvg->scale(fieldIn.scale());
   _fieldAvg->addDimensionOkay(true);
 
-  double_array fieldAvgCell(fiberDim);
-  double scalar = 0.0;
+  scalar_array fieldAvgCell(fiberDim);
+  PylithScalar scalar = 0.0;
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
     scalar += wts[iQuad];
 
@@ -172,7 +172,7 @@
   for (typename label_sequence::iterator c_iter=cellsBegin;
        c_iter != cellsEnd;
        ++c_iter) {
-    const double* values = sectionIn->restrictPoint(*c_iter);
+    const PylithScalar* values = sectionIn->restrictPoint(*c_iter);
     assert(totalFiberDim == sectionIn->getFiberDimension(*c_iter));
     
     fieldAvgCell = 0.0;

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -78,7 +78,7 @@
 // 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 double t,
+pylith::meshio::DataWriter<mesh_type, field_type>::openTimeStep(const PylithScalar t,
 						    const mesh_type& mesh,
 						    const char* label,
 						    const int labelId)

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriter.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -85,7 +85,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   virtual
-  void openTimeStep(const double t,
+  void openTimeStep(const PylithScalar t,
 		    const mesh_type& mesh,
 		    const char* label =0,
 		    const int labelId =0);
@@ -101,7 +101,7 @@
    * @param mesh Mesh associated with output.
   */
   virtual
-  void writeVertexField(const double t,
+  void writeVertexField(const PylithScalar t,
 			field_type& field,
 			const mesh_type& mesh) = 0;
 
@@ -114,7 +114,7 @@
    * @param labelId Value of label defining which cells to include.
    */
   virtual
-  void writeCellField(const double t,
+  void writeCellField(const PylithScalar t,
 		      field_type& field,
 		      const char* label =0,
 		      const int labelId =0) = 0;

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -166,12 +166,12 @@
 
     const int ncells = cNumbering->getLocalSize();
     const int conesSize = ncells*numCorners;
-    PetscScalar* tmpVertices = (conesSize > 0) ? new PetscScalar[conesSize] : 0;
+    PylithScalar* tmpVertices = (conesSize > 0) ? new PylithScalar[conesSize] : 0;
 
     const Obj<sieve_type>& sieve = sieveMesh->getSieve();
     assert(!sieve.isNull());
     ALE::ISieveVisitor::NConeRetriever<sieve_type> 
-      ncV(*sieve, (size_t) pow((double) sieve->getMaxConeSize(), 
+      ncV(*sieve, (size_t) pow((PylithScalar) sieve->getMaxConeSize(), 
 			       std::max(0, sieveMesh->depth())));
 
     int k = 0;
@@ -259,7 +259,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::DataWriterHDF5<mesh_type,field_type>::writeVertexField(
-				            const double t,
+				            const PylithScalar t,
 					    field_type& field,
 					    const mesh_type& mesh)
 { // writeVertexField
@@ -358,7 +358,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::DataWriterHDF5<mesh_type,field_type>::writeCellField(
-				       const double t,
+				       const PylithScalar t,
 				       field_type& field,
 				       const char* label,
 				       const int labelId)
@@ -465,7 +465,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::DataWriterHDF5<mesh_type,field_type>::_writeTimeStamp(
-						    const double t,
+						    const PylithScalar t,
 						    const int rank)
 { // _writeTimeStamp
   PetscErrorCode err = 0;

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -103,7 +103,7 @@
    * @param field Field over vertices.
    * @param mesh Mesh associated with output.
    */
-  void writeVertexField(const double t,
+  void writeVertexField(const PylithScalar t,
 			field_type& field,
 			const mesh_type& mesh);
 
@@ -115,7 +115,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void writeCellField(const double t,
+  void writeCellField(const PylithScalar t,
 		      field_type& field,
 		      const char* label =0,
 		      const int labelId =0);
@@ -137,7 +137,7 @@
    * @param t Time in seconds.
    * @param rank Processor rank in MPI communicator.
    */
-  void _writeTimeStamp(const double t,
+  void _writeTimeStamp(const PylithScalar t,
 		       const int rank);
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -178,16 +178,16 @@
     err = MPI_Allreduce(&numCornersLocal, &numCorners, 1, MPI_INT, MPI_MAX,
 		     sieveMesh->comm()); CHECK_PETSC_ERROR(err);
 
-    PetscScalar* tmpVertices = 0;
+    PylithScalar* tmpVertices = 0;
     const int ncells = cNumbering->getLocalSize();
     const int conesSize = ncells*numCorners;
-    err = PetscMalloc(sizeof(PetscScalar)*conesSize, &tmpVertices);
+    err = PetscMalloc(sizeof(PylithScalar)*conesSize, &tmpVertices);
     CHECK_PETSC_ERROR(err);
 
     const Obj<sieve_type>& sieve = sieveMesh->getSieve();
     assert(!sieve.isNull());
     ALE::ISieveVisitor::NConeRetriever<sieve_type> 
-      ncV(*sieve, (size_t) pow((double) sieve->getMaxConeSize(), 
+      ncV(*sieve, (size_t) pow((PylithScalar) sieve->getMaxConeSize(), 
 			       std::max(0, sieveMesh->depth())));
 
     int k = 0;
@@ -286,7 +286,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::writeVertexField(
-				            const double t,
+				            const PylithScalar t,
 					    field_type& field,
 					    const mesh_type& mesh)
 { // writeVertexField
@@ -418,7 +418,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::writeCellField(
-				       const double t,
+				       const PylithScalar t,
 				       field_type& field,
 				       const char* label,
 				       const int labelId)
@@ -586,7 +586,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::DataWriterHDF5Ext<mesh_type,field_type>::_writeTimeStamp(
-						  const double t)
+						  const PylithScalar t)
 { // _writeTimeStamp
   assert(_h5);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -104,7 +104,7 @@
    * @param field Field over vertices.
    * @param mesh Mesh associated with output.
    */
-  void writeVertexField(const double t,
+  void writeVertexField(const PylithScalar t,
 			field_type& field,
 			const mesh_type& mesh);
 
@@ -116,7 +116,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void writeCellField(const double t,
+  void writeCellField(const PylithScalar t,
 		      field_type& field,
 		      const char* label =0,
 		      const int labelId =0);
@@ -140,7 +140,7 @@
    *
    * @param t Time in seconds.
    */
-  void _writeTimeStamp(const double t);  
+  void _writeTimeStamp(const PylithScalar t);  
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -90,7 +90,7 @@
 // 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 double value)
+pylith::meshio::DataWriterVTK<mesh_type,field_type>::timeConstant(const PylithScalar value)
 { // timeConstant
   if (value <= 0.0) {
     std::ostringstream msg;
@@ -105,7 +105,7 @@
 // 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 double t,
+pylith::meshio::DataWriterVTK<mesh_type,field_type>::openTimeStep(const PylithScalar t,
 						       const mesh_type& mesh,
 						       const char* label,
 						       const int labelId)
@@ -175,7 +175,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::DataWriterVTK<mesh_type,field_type>::writeVertexField(
-				            const double t,
+				            const PylithScalar t,
 					    field_type& field,
 					    const mesh_type& mesh)
 { // writeVertexField
@@ -237,7 +237,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::DataWriterVTK<mesh_type,field_type>::writeCellField(
-				       const double t,
+				       const PylithScalar t,
 				       field_type& field,
 				       const char* label,
 				       const int labelId)
@@ -303,7 +303,7 @@
 // Generate filename for VTK file.
 template<typename mesh_type, typename field_type>
 std::string
-pylith::meshio::DataWriterVTK<mesh_type,field_type>::_vtkFilename(const double t) const
+pylith::meshio::DataWriterVTK<mesh_type,field_type>::_vtkFilename(const PylithScalar t) const
 { // _vtkFilename
   std::ostringstream filename;
   const int indexExt = _filename.find(".vtk");

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterVTK.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -75,7 +75,7 @@
    * @param value Value (time in seconds) used to normalize time stamp in
    * filename.
    */
-  void timeConstant(const double value);
+  void timeConstant(const PylithScalar value);
 
   /** Set precision of floating point values in output.
    *
@@ -91,7 +91,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void openTimeStep(const double t,
+  void openTimeStep(const PylithScalar t,
 		    const mesh_type& mesh,
 		    const char* label =0,
 		    const int labelId =0);
@@ -105,7 +105,7 @@
    * @param field Field over vertices.
    * @param mesh Mesh associated with output.
    */
-  void writeVertexField(const double t,
+  void writeVertexField(const PylithScalar t,
 			field_type& field,
 			const mesh_type& mesh);
 
@@ -117,7 +117,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void writeCellField(const double t,
+  void writeCellField(const PylithScalar t,
 		      field_type& field,
 		      const char* label =0,
 		      const int labelId =0);
@@ -135,7 +135,7 @@
    *
    * @param t Time in seconds.
    */
-  std::string _vtkFilename(const double t) const;
+  std::string _vtkFilename(const PylithScalar t) const;
 
 // NOT IMPLEMENTED //////////////////////////////////////////////////////
 private :
@@ -146,7 +146,7 @@
 private :
 
   /// Time value (in seconds) used to normalize time stamp.
-  double _timeConstant;
+  PylithScalar _timeConstant;
 
   std::string _filename; ///< Name of VTK file.
   std::string _timeFormat; ///< C style time format for time stamp.

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/ExodusII.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/ExodusII.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/ExodusII.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -183,9 +183,9 @@
 } // getDim
 
 // ----------------------------------------------------------------------
-// Get values for variable as an array of doubles.
+// Get values for variable as an array of PylithScalars.
 void
-pylith::meshio::ExodusII::getVar(double* values,
+pylith::meshio::ExodusII::getVar(PylithScalar* values,
 				 int* dims,
 				 int ndims,
 				 const char* name) const

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/ExodusII.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/ExodusII.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/ExodusII.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 // Include directives ---------------------------------------------------
 #include "meshiofwd.hh" // Forward declarations
 
-#include "pylith/utils/array.hh" // USES int_array, double_array, string_vector
+#include "pylith/utils/array.hh" // USES string_vector
 
 #include <string> // HASA std::string
 
@@ -102,14 +102,14 @@
    */
   int getDim(const char* name) const;
 
-  /** Get values for variable as an array of doubles.
+  /** Get values for variable as an array of PylithScalars.
    *
    * @param values Array of values.
    * @param dims Expected dimensions for variable.
    * @param ndims Number of dimension for variable.
    * @param name Name of variable.
    */
-  void getVar(double* values,
+  void getVar(PylithScalar* values,
 	      int* dims,
 	      int ndims,
 	      const char* name) const;

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileAscii.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileAscii.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileAscii.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,7 +20,7 @@
 
 #include "GMVFileAscii.hh" // implementation of class methods
 
-#include "pylith/utils/array.hh" // USES double_array, int_array
+#include "pylith/utils/array.hh" // USES scalar_array, int_array
 
 #include "journal/info.h" // USES journal::info_t
 
@@ -50,7 +50,7 @@
 // ----------------------------------------------------------------------
 // Read ASCII GMV file.
 void
-pylith::meshio::GMVFileAscii::read(double_array* coordinates,
+pylith::meshio::GMVFileAscii::read(scalar_array* coordinates,
 				   int_array* cells,
 				   int_array* materialIds,
 				   int* meshDim,
@@ -108,7 +108,7 @@
 // ----------------------------------------------------------------------
 // Write ASCII GMV file.
 void
-pylith::meshio::GMVFileAscii::write(const double_array& coordinates,
+pylith::meshio::GMVFileAscii::write(const scalar_array& coordinates,
 				    const int_array& cells,
 				    const int_array& materialIds,
 				    const int meshDim,
@@ -149,7 +149,7 @@
 // ----------------------------------------------------------------------
 void
 pylith::meshio::GMVFileAscii::_readVertices(std::ifstream& fin,
-					    double_array* coordinates,
+					    scalar_array* coordinates,
 					    int* numVertices,
 					    int* spaceDim)
 { // _readVertices
@@ -244,12 +244,12 @@
     fin >> varType;
     if (1 == varType) { // variables/attributes associated with vertices
       const int numVars = 1;
-      double_array vals(numVertices*numVars);
+      scalar_array vals(numVertices*numVars);
       for (int iVertex=0; iVertex < numVertices; ++iVertex)
 	fin >> vals[iVertex];
     } else { // variables/attributes associated with cells
       const int numVars = 1;
-      double_array vals(numCells*numVars);
+      scalar_array vals(numCells*numVars);
       for (int iCell=0; iCell < numCells; ++iCell)
 	fin >> vals[iCell];
     } // else

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileAscii.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileAscii.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileAscii.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 // Include directives ---------------------------------------------------
 #include "GMVFile.hh" // ISA GMVFile
 
-#include "pylith/utils/arrayfwd.hh" // USES int_array, double_array
+#include "pylith/utils/array.hh" // USES int_array, scalar_array
 #include <iosfwd>
 
 // GMVFileAscii ---------------------------------------------------------
@@ -64,7 +64,7 @@
    * @param numCells Number of cells in mesh.
    * @param numCorners Number of vertices in each cell.
    */
-  void read(double_array* coordinates,
+  void read(scalar_array* coordinates,
 	    int_array* cells,
 	    int_array* materialIds,
 	    int* meshDim,
@@ -84,7 +84,7 @@
    * @param numCells Number of cells in mesh.
    * @param numCorners Number of vertices in each cell.
    */
-  void write(const double_array& coordinates,
+  void write(const scalar_array& coordinates,
 	     const int_array& cells,
 	     const int_array& materialIds,
 	     const int meshDim,
@@ -109,7 +109,7 @@
    * @param numVertices Number of vertices.
    */
   void _readVertices(std::ifstream& fin,
-		     double_array* coordinates,
+		     scalar_array* coordinates,
 		     int* numVertices,
 		     int* spaceDim);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileBinary.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileBinary.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileBinary.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "BinaryIO.hh" // USES readString()
 
-#include "pylith/utils/array.hh" // USES double_array, int_array
+#include "pylith/utils/array.hh" // USES scalar_array, int_array
 
 #include "journal/info.h" // USES journal::info_t
 
@@ -53,7 +53,7 @@
 // ----------------------------------------------------------------------
 // Read binary GMV file.
 void
-pylith::meshio::GMVFileBinary::read(double_array* coordinates,
+pylith::meshio::GMVFileBinary::read(scalar_array* coordinates,
 				    int_array* cells,
 				    int_array* materialIds,
 				    int* meshDim,
@@ -113,7 +113,7 @@
 // ----------------------------------------------------------------------
 // Write binary GMV file.
 void
-pylith::meshio::GMVFileBinary::write(const double_array& coordinates,
+pylith::meshio::GMVFileBinary::write(const scalar_array& coordinates,
 				     const int_array& cells,
 				     const int_array& materialIds,
 				     const int meshDim,
@@ -153,7 +153,7 @@
 // ----------------------------------------------------------------------
 void
 pylith::meshio::GMVFileBinary::_readVertices(std::ifstream& fin,
-					     double_array* coordinates,
+					     scalar_array* coordinates,
 					     int* numVertices,
 					     int* spaceDim)
 { // _readVertices

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileBinary.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileBinary.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/GMVFileBinary.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 // Include directives ---------------------------------------------------
 #include "GMVFile.hh" // ISA GMVFile
 
-#include "pylith/utils/arrayfwd.hh" // USES int_array, double_array
+#include "pylith/utils/array.hh" // USES int_array, scalar_array
 #include <iosfwd>
 
 // GMVFileBinary --------------------------------------------------------
@@ -67,7 +67,7 @@
    * @param numCells Number of cells in mesh.
    * @param numCorners Number of vertices in each cell.
    */
-  void read(double_array* coordinates,
+  void read(scalar_array* coordinates,
 	    int_array* cells,
 	    int_array* materialIds,
 	    int* meshDim,
@@ -87,7 +87,7 @@
    * @param numCells Number of cells in mesh.
    * @param numCorners Number of vertices in each cell.
    */
-  void write(const double_array& coordinates,
+  void write(const scalar_array& coordinates,
 	     const int_array& cells,
 	     const int_array& materialIds,
 	     const int meshDim,
@@ -112,7 +112,7 @@
    * @param numVertices Number of vertices.
    */
   void _readVertices(std::ifstream& fin,
-		     double_array* coordinates,
+		     scalar_array* coordinates,
 		     int* numVertices,
 		     int* spaceDim);
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshBuilder.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshBuilder.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshBuilder.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -21,7 +21,7 @@
 #include "MeshBuilder.hh" // implementation of class methods
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/utils/array.hh" // USES double_array, int_array
+#include "pylith/utils/array.hh" // USES scalar_array, int_array
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
 
@@ -38,7 +38,7 @@
 // Set vertices and cells in mesh.
 void
 pylith::meshio::MeshBuilder::buildMesh(topology::Mesh* mesh,
-				       double_array* coordinates,
+				       scalar_array* coordinates,
 				       const int numVertices,
 				       const int spaceDim,
 				       const int_array& cells,
@@ -197,7 +197,7 @@
 void
 pylith::meshio::MeshBuilder::buildFaultMesh(const ALE::Obj<SieveMesh>& fault,
 					    ALE::Obj<SieveFlexMesh>& faultBd,
-					    const double_array& coordinates,
+					    const scalar_array& coordinates,
 					    const int numVertices,
 					    const int spaceDim,
 					    const int_array& cells,

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshBuilder.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshBuilder.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshBuilder.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -29,7 +29,7 @@
 #include "meshiofwd.hh" // forward declarations
 
 #include "pylith/topology/topologyfwd.hh" // USES Mesh
-#include "pylith/utils/arrayfwd.hh" // USES double_array, int_array,
+#include "pylith/utils/arrayfwd.hh" // USES scalar_array, int_array,
                                     // string_vector
 #include "spatialdata/units/unitsfwd.hh" // USES Nondimensional
 
@@ -63,7 +63,7 @@
    */
   static
   void buildMesh(topology::Mesh* mesh,
-		 double_array* coordinates,
+		 scalar_array* coordinates,
 		 const int numVertices,
 		 const int spaceDim,
 		 const int_array& cells,
@@ -93,7 +93,7 @@
   static
   void buildFaultMesh(const ALE::Obj<topology::Mesh::SieveMesh>& fault,
 		      ALE::Obj<SieveFlexMesh>& faultBd,
-		      const double_array& coordinates,
+		      const scalar_array& coordinates,
 		      const int numVertices,
 		      const int spaceDim,
 		      const int_array& cells,

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIO.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIO.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIO.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -21,7 +21,7 @@
 #include "MeshIO.hh" // implementation of class methods
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/utils/array.hh" // USES double_array, int_array
+#include "pylith/utils/array.hh" // USES scalar_array, int_array
 
 #include "Selection.hh" // USES boundary()
 
@@ -100,7 +100,7 @@
 // ----------------------------------------------------------------------
 // Get coordinates of vertices in mesh.
 void
-pylith::meshio::MeshIO::_getVertices(double_array* coordinates,
+pylith::meshio::MeshIO::_getVertices(scalar_array* coordinates,
 				     int* numVertices,
 				     int* spaceDim) const
 { // _getVertices

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIO.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIO.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIO.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,8 +31,7 @@
 #include "pylith/topology/topologyfwd.hh" // forward declarations
 #include "spatialdata/units/unitsfwd.hh" // forward declarations
 
-#include "pylith/utils/arrayfwd.hh" // USES double_array, int_array,
-                                    // string_vector
+#include "pylith/utils/array.hh" // USES scalar_array, int_array, string_vector
 
 // MeshIO ---------------------------------------------------------------
 /// C++ abstract base class for managing mesh input/output.
@@ -124,7 +123,7 @@
    * @param numVertices Pointer to number of vertices
    * @param spaceDim Poiner to dimension of vector space for coordinates
    */
-  void _getVertices(double_array* coordinates,
+  void _getVertices(scalar_array* coordinates,
 		    int* numVertices,
 		    int* spaceDim) const;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOAscii.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOAscii.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOAscii.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "MeshBuilder.hh" // USES MeshBuilder
 #include "pylith/topology/Mesh.hh" // USES Mesh
 
-#include "pylith/utils/array.hh" // USES double_array, int_array, string_vector
+#include "pylith/utils/array.hh" // USES scalar_array, int_array, string_vector
 #include "spatialdata/utils/LineParser.hh" // USES LineParser
 
 #include "journal/info.h" // USES journal::info_t
@@ -76,7 +76,7 @@
   int numVertices = 0;
   int numCells = 0;
   int numCorners = 0;
-  double_array coordinates;
+  scalar_array coordinates;
   int_array cells;
   int_array materialIds;
 
@@ -223,7 +223,7 @@
 // Read mesh vertices.
 void
 pylith::meshio::MeshIOAscii::_readVertices(spatialdata::utils::LineParser& parser,
-					   double_array* coordinates,
+					   scalar_array* coordinates,
 					   int* numVertices, 
 					   int* numDims) const
 { // _readVertices
@@ -281,7 +281,7 @@
 { // _writeVertices
   int spaceDim = 0;
   int numVertices = 0;
-  double_array coordinates;
+  scalar_array coordinates;
   _getVertices(&coordinates, &numVertices, &spaceDim);
 
   fileout

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOAscii.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOAscii.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOAscii.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -83,7 +83,7 @@
    * @param spaceDim Pointer to dimension of coordinates vector space
    */
   void _readVertices(spatialdata::utils::LineParser& parser,
-		     double_array* coordinates,
+		     scalar_array* coordinates,
 		     int* numVertices,
 		     int* spaceDim) const;
   

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOCubit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOCubit.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOCubit.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "MeshBuilder.hh" // USES MeshBuilder
 #include "ExodusII.hh" // USES ExodusII
 
-#include "pylith/utils/array.hh" // USES double_array, int_array, string_vector
+#include "pylith/utils/array.hh" // USES scalar_array, int_array, string_vector
 
 #include "petsc.h" // USES MPI_Comm
 #include "journal/info.h" // USES journal::info_t
@@ -68,7 +68,7 @@
   int numVertices = 0;
   int numCells = 0;
   int numCorners = 0;
-  double_array coordinates;
+  scalar_array coordinates;
   int_array cells;
   int_array materialIds;
 
@@ -124,7 +124,7 @@
 // Read mesh vertices.
 void
 pylith::meshio::MeshIOCubit::_readVertices(ExodusII& exofile,
-					   double_array* coordinates,
+					   scalar_array* coordinates,
 					   int* numVertices, 
 					   int* numDims) const
 { // _readVertices
@@ -148,7 +148,7 @@
     int dims[2];
     dims[0] = *numDims;
     dims[1] = *numVertices;
-    double_array buffer(*numVertices * *numDims);
+    scalar_array buffer(*numVertices * *numDims);
     exofile.getVar(&buffer[0], dims, ndims, "coord");
     
     coordinates->resize(*numVertices * *numDims);
@@ -161,7 +161,7 @@
     const char* coordNames[3] = { "coordx", "coordy", "coordz" };
 
     coordinates->resize(*numVertices * *numDims);
-    double_array buffer(*numVertices);
+    scalar_array buffer(*numVertices);
 
     const int ndims = 1;
     int dims[1];

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOCubit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOCubit.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOCubit.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -85,7 +85,7 @@
    * @param spaceDim Pointer to dimension of coordinates vector space.
    */
   void _readVertices(ExodusII& filein,
-		     double_array* coordinates,
+		     scalar_array* coordinates,
 		     int* numVertices,
 		     int* spaceDim) const;
   

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOHDF5.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOHDF5.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOHDF5.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -56,7 +56,7 @@
   int numVertices = 0;
   int numElements = 0;
   int numCorners = 0;
-  double* coordinates = 0;
+  PylithScalar* coordinates = 0;
   int* elements = 0;
 
   MPI_Comm_rank(comm, &rank);
@@ -152,11 +152,11 @@
 // Read mesh vertices.
 void
 MeshIOHDF5::_readVertices(hid_t& filein,
-			  double** pCoordinates,
+			  PylithScalar** pCoordinates,
 			  int* pNumVertices, 
 			  int* pNumDims) const
 { // _readVertices
-  double* coordinates = 0;
+  PylithScalar* coordinates = 0;
   int numDims = 0;
   int numVertices = 0;
 
@@ -179,7 +179,7 @@
   ALE::Obj<ALE::PetscMesh::field_type> coords_field = mesh->getCoordinates();
   ALE::Obj<ALE::PetscMesh::bundle_type> vertexBundle = mesh->getBundle(0);
   ALE::PetscMesh::field_type::patch_type patch;
-  const double* coordinates = coords_field->restrict(patch);
+  const PylithScalar* coordinates = coords_field->restrict(patch);
   const int numVertices = (vertexBundle->getGlobalOffsets()) ?
     vertexBundle->getGlobalOffsets()[mesh->commSize()] :
     mesh->getTopology()->depthStratum(0)->size();

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOHDF5.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOHDF5.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOHDF5.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -99,7 +99,7 @@
    * @param pNumDims Pointer to number of dimensions
    */
   void _readVertices(hid_t& filein,
-		     double** pCoordinates,
+		     PylithScalar** pCoordinates,
 		     int* pNumVertices, 
 		     int* pNumDims) const;
   

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOLagrit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOLagrit.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/MeshIOLagrit.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,7 +27,7 @@
 #include "MeshBuilder.hh" // USES MeshBuilder
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/utils/array.hh" // USES double_array, int_array
+#include "pylith/utils/array.hh" // USES scalar_array, int_array
 
 #include <cassert> // USES assert()
 #include <stdexcept> // USES std::runtime_error()
@@ -70,7 +70,7 @@
   int numVertices = 0;
   int numCells = 0;
   int numCorners = 0;
-  double_array coordinates;
+  scalar_array coordinates;
   int_array cells;
   int_array materialIds;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -138,7 +138,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::OutputManager<mesh_type, field_type>::openTimeStep(
-						       const double t,
+						       const PylithScalar t,
 						       const mesh_type& mesh,
 						       const char* label,
 						       const int labelId)
@@ -162,7 +162,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::OutputManager<mesh_type, field_type>::appendVertexField(
-			                                const double t,
+			                                const PylithScalar t,
 							field_type& field,
 							const mesh_type& mesh)
 { // appendVertexField
@@ -178,7 +178,7 @@
 template<typename mesh_type, typename field_type>
 void
 pylith::meshio::OutputManager<mesh_type, field_type>::appendCellField(
-				                     const double t,
+				                     const PylithScalar t,
 						     field_type& field,
 						     const char* label,
 						     const int labelId)

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputManager.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -107,7 +107,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void openTimeStep(const double t,
+  void openTimeStep(const PylithScalar t,
 		    const mesh_type& mesh,
 		    const char* label =0,
 		    const int labelId =0);
@@ -121,7 +121,7 @@
    * @param field Vertex field.
    * @param mesh Mesh for output.
    */
-  void appendVertexField(const double t,
+  void appendVertexField(const PylithScalar t,
 			 field_type& field,
 			 const mesh_type& mesh);
 
@@ -133,7 +133,7 @@
    *   (=0 means use all cells in mesh).
    * @param labelId Value of label defining which cells to include.
    */
-  void appendCellField(const double t,
+  void appendCellField(const PylithScalar t,
 		       field_type& field,
 		       const char* label =0,
 		       const int labelId =0);

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/PsetFileAscii.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/PsetFileAscii.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/PsetFileAscii.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,7 +20,7 @@
 
 #include "PsetFileAscii.hh" // implementation of class methods
 
-#include "pylith/utils/array.hh" // USES double_array, int_array
+#include "pylith/utils/array.hh" // USES scalar_array, int_array
 
 #include "journal/info.h" // USES journal::info_t
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/PsetFileBinary.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/PsetFileBinary.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/PsetFileBinary.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "BinaryIO.hh" // USES readString()
 
-#include "pylith/utils/array.hh" // USES double_array, int_array
+#include "pylith/utils/array.hh" // USES scalar_array, int_array
 
 #include "journal/info.h" // USES journal::info_t
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/UCDFaultFile.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/UCDFaultFile.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/UCDFaultFile.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "MeshBuilder.hh" // USES MeshBuilder
 
 #include "pylith/topology/SubMesh.hh" // USES SubMesh
-#include "pylith/utils/array.hh" // USES double_array, int_array
+#include "pylith/utils/array.hh" // USES scalar_array, int_array
 
 #include <petsc.h> // USES MPI_Comm
 
@@ -73,7 +73,7 @@
   int numFVertices = 0;
   int numFCells = 0;
   int numFCorners = 0;
-  double_array fCoordinates;
+  scalar_array fCoordinates;
   int_array fCells;
   int_array fMaterialIds;
   int_array faceCells;
@@ -158,7 +158,7 @@
     vertexIDs.resize(numFVertices);
     for(int v = 0; v < numFVertices; ++v) {
       int id;
-      double dummy;
+      PylithScalar dummy;
 
       fin >> id;
       fin >> vertexIDs[v]; // global node number

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/VertexFilterVecNorm.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -125,12 +125,12 @@
     _fieldVecNorm->section();
   assert(!sectionNorm.isNull());
 
-  double norm = 0.0;
+  PylithScalar norm = 0.0;
   // Loop over vertices
   for (typename label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter) {
-    const double* values = sectionIn->restrictPoint(*v_iter);
+    const PylithScalar* values = sectionIn->restrictPoint(*v_iter);
     
     norm = 0.0;
     for (int i=0; i < fiberDimIn; ++i)

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/Xdmf.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/Xdmf.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/Xdmf.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "HDF5.hh" // USES HDF5
 
 #include "pylith/topology/FieldBase.hh" // USES FieldBase enums
-#include "pylith/utils/array.hh" // USES double_arra
+#include "pylith/utils/array.hh" // USES PylithScalar_arra
 
 #include <string> // USES std::string
 #include <stdexcept> // USES std::runtime_error
@@ -57,7 +57,7 @@
   std::string cellType;
   int numVertices = 0;
   int spaceDim = 0;
-  double_array timeStamps;
+  scalar_array timeStamps;
   std::vector<FieldMetadata> fieldsMetadata;
 
   HDF5 h5(filenameHDF5, H5F_ACC_RDONLY);
@@ -203,14 +203,14 @@
 // ----------------------------------------------------------------------
 // Get timestamps from HDF5 file.
 void
-pylith::meshio::Xdmf::_getTimeStamps(double_array* timeStamps,
+pylith::meshio::Xdmf::_getTimeStamps(scalar_array* timeStamps,
 				     HDF5& h5)
 { // _getTimeStamps
   assert(timeStamps);
 
   hsize_t* dims = 0;
   int ndims = 0;
-  double* t = 0;
+  PylithScalar* t = 0;
 
   if (h5.hasDataset("/time")) {
     h5.getDatasetDims(&dims, &ndims, "/", "time");
@@ -387,7 +387,7 @@
 // ----------------------------------------------------------------------
 // Write time stamps.
 void
-pylith::meshio::Xdmf::_writeTimeStamps(const double_array& timeStamps)
+pylith::meshio::Xdmf::_writeTimeStamps(const scalar_array& timeStamps)
 { // _writeTimeStamps
   assert(_file.is_open() && _file.good());
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/Xdmf.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/Xdmf.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/Xdmf.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -38,7 +38,7 @@
 // Include directives ---------------------------------------------------
 #include "meshiofwd.hh" // forward declarations
 
-#include "pylith/utils/array.hh" // USES double_array, std::vector
+#include "pylith/utils/array.hh" // USES scalar_array, std::vector
 
 #include <vector> // USES std::vector
 #include <fstream> // HASA std::ofstream
@@ -88,7 +88,7 @@
    * @param timeStamps Array of time stamps.
    * @param h5 HDF5 file.
    */
-  void _getTimeStamps(double_array* timeStamps,
+  void _getTimeStamps(scalar_array* timeStamps,
 		      HDF5& h5);
 
   /** Get field metadata from HDF5 file.
@@ -119,7 +119,7 @@
    *
    * @param timeStamps Array of time stamps.
    */
-  void _writeTimeStamps(const double_array& timeStamps);
+  void _writeTimeStamps(const scalar_array& timeStamps);
 
   /** Write grid topology information.
    *

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Explicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Explicit.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Explicit.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,9 +52,9 @@
   // acc(t) = (disp(t+dt) - 2*disp(t) + disp(t-dt)) / (dt*dt)
   //        = (dispIncr(t+dt) - disp(t) + disp(t-dt)) / (dt*dt)
 
-  const double dt = _dt;
-  const double dt2 = dt*dt;
-  const double twodt = 2.0*dt;
+  const PylithScalar dt = _dt;
+  const PylithScalar dt2 = dt*dt;
+  const PylithScalar twodt = 2.0*dt;
 
   topology::Field<topology::Mesh>& dispIncr = _fields->get("dispIncr(t->t+dt)");
   const spatialdata::geocoords::CoordSys* cs = dispIncr.mesh().coordsys();
@@ -72,12 +72,12 @@
     _fields->get("disp(t-dt)").section();
   assert(!dispTmdtSection.isNull());
 
-  double_array velVertex(spaceDim);
+  scalar_array velVertex(spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     _fields->get("velocity(t)").section();
   assert(!velSection.isNull());
 
-  double_array accVertex(spaceDim);
+  scalar_array accVertex(spaceDim);
   const ALE::Obj<RealSection>&  accSection = 
     _fields->get("acceleration(t)").section();
   assert(!accSection.isNull());
@@ -95,13 +95,13 @@
        v_iter != verticesEnd;
        ++v_iter) {
     assert(spaceDim == dispIncrSection->getFiberDimension(*v_iter));
-    const double* dispIncrVertex = dispIncrSection->restrictPoint(*v_iter);
+    const PylithScalar* dispIncrVertex = dispIncrSection->restrictPoint(*v_iter);
 
     assert(spaceDim == dispTSection->getFiberDimension(*v_iter));
-    const double* dispTVertex = dispTSection->restrictPoint(*v_iter);
+    const PylithScalar* dispTVertex = dispTSection->restrictPoint(*v_iter);
 
     assert(spaceDim == dispTmdtSection->getFiberDimension(*v_iter));
-    const double* dispTmdtVertex = dispTmdtSection->restrictPoint(*v_iter);
+    const PylithScalar* dispTmdtVertex = dispTmdtSection->restrictPoint(*v_iter);
 
     for (int i=0; i < spaceDim; ++i) {
       velVertex[i] = 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -163,8 +163,8 @@
 void
 pylith::problems::Formulation::updateSettings(topology::Jacobian* jacobian,
 					      topology::SolutionFields* fields,
-					      const double t,
-					      const double dt)
+					      const PylithScalar t,
+					      const PylithScalar dt)
 { // updateSettings
   assert(0 != jacobian);
   assert(0 != fields);
@@ -182,8 +182,8 @@
 void
 pylith::problems::Formulation::updateSettings(topology::Field<topology::Mesh>* jacobian,
 					      topology::SolutionFields* fields,
-					      const double t,
-					      const double dt)
+					      const PylithScalar t,
+					      const PylithScalar dt)
 { // updateSettings
   assert(0 != jacobian);
   assert(0 != fields);

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Formulation.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -129,8 +129,8 @@
    */
   void updateSettings(topology::Jacobian* jacobian,
 		      topology::SolutionFields* fields,
-		      const double t,
-		      const double dt);
+		      const PylithScalar t,
+		      const PylithScalar dt);
 
   /** Update handles and parameters for reforming the Jacobian and
    *  residual.
@@ -142,8 +142,8 @@
    */
   void updateSettings(topology::Field<topology::Mesh>* jacobian,
 		      topology::SolutionFields* fields,
-		      const double t,
-		      const double dt);
+		      const PylithScalar t,
+		      const PylithScalar dt);
 
   /** Reform system residual.
    *
@@ -189,8 +189,8 @@
 // PROTECTED MEMBERS ////////////////////////////////////////////////////
 protected :
 
-  double _t; ///< Current time (nondimensional).
-  double _dt; ///< Current time step (nondimensional).
+  PylithScalar _t; ///< Current time (nondimensional).
+  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.

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Implicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Implicit.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Implicit.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
 
   // vel(t) = (disp(t+dt) - disp(t)) / dt
   //        = dispIncr(t+dt) / dt
-  const double dt = _dt;
+  const PylithScalar dt = _dt;
 
   topology::Field<topology::Mesh>& dispIncr = _fields->get("dispIncr(t->t+dt)");
   const spatialdata::geocoords::CoordSys* cs = dispIncr.mesh().coordsys();
@@ -56,11 +56,11 @@
   const int spaceDim = cs->spaceDim();
   
   // Get sections.
-  double_array dispIncrVertex(spaceDim);
+  scalar_array dispIncrVertex(spaceDim);
   const ALE::Obj<RealSection>& dispIncrSection = dispIncr.section();
   assert(!dispIncrSection.isNull());
 	 
-  double_array velVertex(spaceDim);
+  scalar_array velVertex(spaceDim);
   const ALE::Obj<RealSection>& velSection = 
     _fields->get("velocity(t)").section();
   assert(!velSection.isNull());

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -120,7 +120,7 @@
     // We have split fields with a custom constraint preconditioner
     // and constraints exist.
 
-    PetscInt M, N, m, n;
+    PylithInt M, N, m, n;
     PetscErrorCode err = 0;
     err = MatGetSize(jacobianMat, &M, &N);CHECK_PETSC_ERROR(err);
     err = MatGetLocalSize(jacobianMat, &m, &n);CHECK_PETSC_ERROR(err);
@@ -180,8 +180,8 @@
     if (_jacobianPCFault) {
       err = MatDestroy(&_jacobianPCFault); CHECK_PETSC_ERROR(err);
     } // if
-    PetscInt nrows = lagrangeGlobalOrder->getLocalSize();
-    PetscInt ncols = nrows;
+    PylithInt nrows = lagrangeGlobalOrder->getLocalSize();
+    PylithInt ncols = nrows;
 
     err = MatCreate(sieveMesh->comm(), &_jacobianPCFault); CHECK_PETSC_ERROR(err);
     err = MatSetSizes(_jacobianPCFault, nrows, ncols, 

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -136,7 +136,7 @@
     PetscPC pc = 0;
     PetscKSP *ksps = 0;
     PetscMat A = 0;
-    PetscInt num = 0;
+    PylithInt num = 0;
     
     err = KSPSetUp(_ksp); CHECK_PETSC_ERROR(err);
     err = KSPGetPC(_ksp, &pc); CHECK_PETSC_ERROR(err);

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverLumped.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -99,7 +99,7 @@
   const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
   
   // Get sections.
-  double_array solutionVertex(spaceDim);
+  scalar_array solutionVertex(spaceDim);
   const ALE::Obj<RealSection>& solutionSection = solution->section();
   assert(!solutionSection.isNull());
 	 
@@ -116,10 +116,10 @@
        v_iter != verticesEnd;
        ++v_iter) {
     assert(spaceDim == jacobianSection->getFiberDimension(*v_iter));
-    const double* jacobianVertex = jacobianSection->restrictPoint(*v_iter);
+    const PylithScalar* jacobianVertex = jacobianSection->restrictPoint(*v_iter);
 
     assert(spaceDim == residualSection->getFiberDimension(*v_iter));
-    const double* residualVertex = residualSection->restrictPoint(*v_iter);
+    const PylithScalar* residualVertex = residualSection->restrictPoint(*v_iter);
 
     for (int i=0; i < spaceDim; ++i) {
       assert(jacobianVertex[i] != 0.0);

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,8 +44,11 @@
   namespace problems {
     namespace _SolverNonlinear {
 
+      // From PETSc header file src/snes/impls/ls/lsimpl.h
+      // This file is buried in the source directory so we don't have
+      // access to it using pre-processor flags (i.e., -I$DIR).
       typedef struct {
-	PetscErrorCode           (*LineSearch)(PetscSNES,void*,PetscVec,PetscVec,PetscVec,PetscVec,PetscVec,PetscReal,PetscReal,PetscReal*,PetscReal*,PetscBool *);
+	PetscErrorCode           (*LineSearch)(PetscSNES,void*,PetscVec,PetscVec,PetscVec,PetscReal,PetscReal,PetscVec,PetscVec,PetscReal*,PetscReal*,PetscBool *);
 	void                     *lsP;                              /* user-defined line-search context (optional) */
 	/* --------------- Parameters used by line search method ----------------- */
 	PetscReal                alpha;                                                                  /* used to determine sufficient reduction */
@@ -56,6 +59,7 @@
 	PetscErrorCode           (*postcheckstep)(PetscSNES,PetscVec,PetscVec,PetscVec,void*,PetscBool *,PetscBool *); /* step-checking routine (optional) */
 	void                     *postcheck;                                                       /* user-defined step-checking context (optional) */
 	PetscViewer  monitor;
+	PetscReal damping;
       } SNES_LS;
     } // _SolverNonlinear
   } // problems
@@ -151,7 +155,7 @@
     PetscPC pc = 0;
     PetscKSP *ksps = 0;
     PetscMat A = 0;
-    PetscInt num = 0;
+    PylithInt num = 0;
 
     PetscErrorCode err = 0;
     err = SNESGetKSP(_snes, &ksp); CHECK_PETSC_ERROR(err);
@@ -248,11 +252,11 @@
 					      void *lsctx,
 					      PetscVec x,
 					      PetscVec f,
-					      PetscVec g,
 					      PetscVec y,
-					      PetscVec w,
 					      PetscReal fnorm,
 					      PetscReal xnorm,
+					      PetscVec g,
+					      PetscVec w,
 					      PetscReal *ynorm,
 					      PetscReal *gnorm,
 					      PetscBool *flag)

Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/SolverNonlinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -132,11 +132,11 @@
 			    void *lsctx,
 			    PetscVec x,
 			    PetscVec f,
-			    PetscVec g,
 			    PetscVec y,
-			    PetscVec w,
 			    PetscReal fnorm,
 			    PetscReal xnorm,
+			    PetscVec g,
+			    PetscVec w,
 			    PetscReal *ynorm,
 			    PetscReal *gnorm,
 			    PetscBool *flag);

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Distributor.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -112,7 +112,7 @@
 
   const ALE::Obj<SieveMesh> sieveMesh = mesh.sieveMesh();
   assert(!sieveMesh.isNull());
-  double rankReal = double(sieveMesh->commRank());
+  PylithScalar rankReal = PylithScalar(sieveMesh->commRank());
   assert(sieveMesh->height() > 0);
   const ALE::Obj<SieveMesh::label_sequence>& cells = 
     sieveMesh->heightStratum(0);
@@ -126,7 +126,7 @@
   } // for
 
   //partition->view("PARTITION");
-  const double t = 0.0;
+  const PylithScalar t = 0.0;
   const int numTimeSteps = 0;
   writer->open(mesh, numTimeSteps);
   writer->openTimeStep(t, mesh);

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,7 +20,7 @@
 
 #include "Field.hh" // implementation of class methods
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -466,7 +466,7 @@
     // Assume fiber dimension is uniform
     const int fiberDim = (chart.size() > 0) ? 
       _section->getFiberDimension(*chartBegin) : 0;
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
     values *= 0.0;
 
     for (typename chart_type::const_iterator c_iter = chartBegin;
@@ -637,7 +637,7 @@
     // Assume fiber dimension is uniform
     const int fiberDim = (chart.size() > 0) ? 
       _section->getFiberDimension(*chartBegin) : 0;
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
 
     for (typename chart_type::const_iterator c_iter = chartBegin;
 	 c_iter != chartEnd;
@@ -675,7 +675,7 @@
     // Assume fiber dimension is uniform
     const int fiberDim = (chart.size() > 0) ? 
       _section->getFiberDimension(*chart.begin()) : 0;
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
 
     spatialdata::units::Nondimensional normalizer;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Field.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Field.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Field.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -131,13 +131,13 @@
    *
    * @param value Scale associated with field.
    */
-  void scale(const double value);
+  void scale(const PylithScalar value);
 
   /** Get scale for dimensionalizing field.
    *
    * @returns Scale associated with field.
    */
-  double scale(void) const;
+  PylithScalar scale(void) const;
 
   /** Set flag indicating whether it is okay to dimensionalize field.
    *

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Field.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Field.icc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Field.icc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -67,14 +67,14 @@
 template<typename mesh_type, typename section_type>
 inline
 void
-pylith::topology::Field<mesh_type, section_type>::scale(const double value) {
+pylith::topology::Field<mesh_type, section_type>::scale(const PylithScalar value) {
   _metadata.scale = value;
 }
 
 // Get scale for dimensionalizing field.
 template<typename mesh_type, typename section_type>
 inline
-double
+PylithScalar
 pylith::topology::Field<mesh_type, section_type>::scale(void) const {
   return _metadata.scale;
 }

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/FieldBase.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/FieldBase.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/FieldBase.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,7 +63,7 @@
   struct Metadata {
     std::string label; // Label for field.
     VectorFieldEnum vectorFieldType; ///< Type of vector field.
-    double scale; // Dimension scale associated with values.
+    PylithScalar scale; // Dimension scale associated with values.
     bool dimsOkay; // Ok to replace nondimensionalized values 
                    // with dimensionalized values.
   }; // Metadata

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/FieldsNew.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/FieldsNew.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/FieldsNew.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -62,7 +62,7 @@
 					  const char* label,
 					  const int fiberDim,
 					  const FieldBase::VectorFieldEnum vectorFieldType,
-					  const double scale,
+					  const PylithScalar scale,
 					  const bool dimsOkay)
 { // add
   if (hasField(name)) {

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/FieldsNew.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/FieldsNew.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/FieldsNew.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -86,7 +86,7 @@
 	   const char* label,
 	   const int fiberDim,
 	   FieldBase::VectorFieldEnum vectorFieldType =FieldBase::OTHER,
-	   const double scale =1.0,
+	   const PylithScalar scale =1.0,
 	   const bool dimsOkay =false);
 
   /** Create and allocate Sieve section.

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Jacobian.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -191,7 +191,7 @@
   MatConvert(matSparse, MATSEQAIJ, MAT_INITIAL_MATRIX, &matSparseAIJ);
   MatConvert(matSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &matDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -199,14 +199,14 @@
   for (int iCol=0; iCol < ncols; ++iCol)
     cols[iCol] = iCol;
   MatGetValues(matDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   bool isSymmetric = true;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int indexIJ = ncols*iRow+iCol;
       const int indexJI = nrows*iCol+iRow;
-      const double valIJ = vals[indexIJ];
-      const double valJI = vals[indexJI];
+      const PylithScalar valIJ = vals[indexIJ];
+      const PylithScalar valJI = vals[indexJI];
       if (fabs(valIJ) > 1.0)
 	if (fabs(1.0 - valJI/valIJ) > tolerance) {
 	  std::cerr << "Mismatch: " 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 
 #include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <stdexcept> // USES std::runtime_error
 #include <sstream> // USES std::ostringstream
@@ -110,7 +110,7 @@
   coordsDimSection->allocateStorage();
   coordsDimSection->setBC(coordsSection->getBC());
 
-  const double lengthScale = normalizer.lengthScale();
+  const PylithScalar lengthScale = normalizer.lengthScale();
   const ALE::Obj<SieveMesh::label_sequence>& vertices = 
     _mesh->depthStratum(0);
   assert(!vertices.isNull());
@@ -119,13 +119,13 @@
   const SieveMesh::label_sequence::iterator verticesEnd = 
     vertices->end();
 
-  double coordsVertex[3];
+  PylithScalar coordsVertex[3];
   for (SieveMesh::label_sequence::iterator v_iter=verticesBegin;
       v_iter != verticesEnd;
       ++v_iter) {
     const int spaceDim = coordsSection->getFiberDimension(*v_iter);
     assert(spaceDim <= 3);
-    const double* coordsDimVertex = coordsSection->restrictPoint(*v_iter);
+    const PylithScalar* coordsDimVertex = coordsSection->restrictPoint(*v_iter);
     
     // Update section with dimensioned coordinates
     assert(spaceDim == 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Mesh.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   /** Typedefs for basic types associated with Sieve mesh.
    * All other PyLith mesh and submesh objects should define:
    *   (1) SieveMesh - Sieve mesh
-   *   (2) RealSection - Section of doubles
+   *   (2) RealSection - Section of PylithScalars
    *   (3) IntSection - Section of ints
    * because these are used in templated code.
    * 
@@ -62,10 +62,10 @@
   typedef pylith::SieveSubMesh SieveSubMesh;
 
   typedef SieveMesh::real_section_type RealSection;
-  typedef ISectionSpaces<SieveMesh::point_type, double> RealUniformSection;
+  typedef ISectionSpaces<SieveMesh::point_type, PylithScalar> RealUniformSection;
   typedef SieveMesh::int_section_type IntSection;
 
-  typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PetscInt> IndicesVisitor;
+  typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PylithInt> IndicesVisitor;
   //@}
 
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/MeshOrder.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/MeshOrder.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/MeshOrder.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,7 +37,7 @@
 class ALE::MeshOrder
 { // MeshOrder
   typedef int point_type;
-  typedef ALE::IMesh<PetscInt,PetscScalar> mesh_type;
+  typedef ALE::IMesh<PylithInt,PylithScalar> mesh_type;
 
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public :

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/RefineEdges2.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/RefineEdges2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/RefineEdges2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   assert(!newCoordsSection.isNull());
   assert(!oldCoordsSection.isNull());
 
-  double coordinatesVertex[3];
+  PylithScalar coordinatesVertex[3];
 
   assert(_edgeToVertex.size() > 0);
   const int spaceDim = newCoordsSection->getFiberDimension(_edgeToVertex.begin()->second);

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/RefineFace4Edges2.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/RefineFace4Edges2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/RefineFace4Edges2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   assert(!newCoordsSection.isNull());
   assert(!oldCoordsSection.isNull());
 
-  double coordinatesVertex[3];
+  PylithScalar coordinatesVertex[3];
 
   assert(_edgeToVertex.size() > 0);
   const int spaceDim = newCoordsSection->getFiberDimension(_edgeToVertex.begin()->second);

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/RefineVol8Face4Edges2.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/RefineVol8Face4Edges2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/RefineVol8Face4Edges2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   assert(!newCoordsSection.isNull());
   assert(!oldCoordsSection.isNull());
 
-  double coordinatesVertex[3];
+  PylithScalar coordinatesVertex[3];
 
   assert(_edgeToVertex.size() > 0);
   const int spaceDim = newCoordsSection->getFiberDimension(_edgeToVertex.begin()->second);

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/topologyfwd.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,6 +28,7 @@
 #define pylith_topology_topologyfwd_hh
 
 #include "pylith/utils/sievetypes.hh"
+#include "pylith/utils/types.hh"
 
 namespace ALE {
   template<typename point_type, 
@@ -57,7 +58,7 @@
 
     class FieldBase;
     template<typename mesh_type, 
-	     typename section_type =ALE::IGeneralSection<pylith::SieveMesh::point_type, double> > class Field;
+	     typename section_type =ALE::IGeneralSection<pylith::SieveMesh::point_type, PylithScalar> > class Field;
     template<typename field_type> class Fields;
     template<typename mesh_type> class FieldsNew;
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/utils/TestArray.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/TestArray.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/TestArray.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,7 +20,7 @@
 
 #include "TestArray.hh" // implementation of class methods
 
-#include "array.hh" // USES double_array
+#include "array.hh" // USES scalar_array
 
 #include <iostream> // USES std::cerr
 #include <cassert> // USES assert()
@@ -28,10 +28,10 @@
 // ----------------------------------------------------------------------
 // Check to make sure array of values match expected values.
 bool
-pylith::utils::TestArray::check(const double* valuesE,
+pylith::utils::TestArray::check(const PylithScalar* valuesE,
 				const int nvalues,
-				const double_array& values)
-{ // check(double)
+				const scalar_array& values)
+{ // check(PylithScalar)
   assert( (0 == nvalues && 0 == valuesE) ||
 	  (0 < nvalues && 0 != valuesE) );
 
@@ -41,7 +41,7 @@
     return false;
   } // if
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   bool okay = true;
   for (int i=0; i < nvalues; ++i) {
     okay = true;
@@ -59,7 +59,7 @@
   } // for
 
   return true;
-} // check(double)
+} // check(PylithScalar)
 
 
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/pylith/utils/TestArray.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/TestArray.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/TestArray.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 // Include directives ---------------------------------------------------
 #include "utilsfwd.hh" // forward declarations
 
-#include "arrayfwd.hh" // USES double_array
+#include "array.hh" // USES scalar_array
 
 // TestArray ------------------------------------------------------------
 /** @brief C++ object for testing array values.
@@ -53,9 +53,9 @@
    */
   static
   bool
-  check(const double* valuesE,
+  check(const PylithScalar* valuesE,
 	const int nvalues,
-	const double_array& values);
+	const scalar_array& values);
 
 }; // EventLogger
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/utils/array.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/array.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/array.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,6 +28,7 @@
 #if !defined(pylith_utils_array_hh)
 #define pylith_utils_array_hh
 
+#include "types.hh"
 #include "arrayfwd.hh"
 
 #include "sievetypes.hh" // ensure we include petscsys.h BEFORE valarray to prevent clash over isinf() and isnan().
@@ -35,6 +36,10 @@
 #include <vector>
 #include <valarray>
 
+namespace pylith {
+  typedef std::valarray<PylithScalar> scalar_array;
+} // namespace pylith
+
 #endif // pylith_utils_array_hh
 
 // End of file

Modified: short/3D/PyLith/trunk/libsrc/pylith/utils/arrayfwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/arrayfwd.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/arrayfwd.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
  *
  * These are generally just forward declarations for C++ STL objects.
  *
- * For simple types (i.e., int and double) std::valarray provides some
+ * For simple types (i.e., int and PylithScalar) std::valarray provides some
  * features that std::vector does not have, such as operating on the
  * whole array at once.
  */
@@ -48,7 +48,7 @@
   /// Alias for std::vector<int>
   typedef std::vector<int, std::allocator<int> > int_vector;
 
-  /// Alias for std::vector<double>
+  /// Alias for std::vector<PylithScalar>
   typedef std::vector<double, std::allocator<double> > double_vector;
 
   /// Alias for std::vector<std::string>

Modified: short/3D/PyLith/trunk/libsrc/pylith/utils/constdefs.h
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/constdefs.h	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/constdefs.h	2011-09-17 18:48:29 UTC (rev 18927)
@@ -25,9 +25,12 @@
 #if !defined(pylith_utils_constdefs_h)
 #define pylith_utils_constdefs_h
 
+#include "types.hh" // HASA PylithScalar
+
 namespace pylith {
   static const double PYLITH_MAXDOUBLE = 1.0e+30;
   static const float PYLITH_MAXFLOAT = 1.0e+30;
+  static const PylithScalar PYLITH_MAXSCALAR = 1.0e+30;
 }
     
 

Modified: short/3D/PyLith/trunk/libsrc/pylith/utils/sievefwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/sievefwd.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/sievefwd.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -25,12 +25,13 @@
 #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<PetscInt,PetscScalar>;
+  template class Mesh<PylithInt,PylithScalar>;
 } // ALE
 
 #endif // pylith_utils_sievefwd_hh

Modified: short/3D/PyLith/trunk/libsrc/pylith/utils/sievetypes.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/sievetypes.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/sievetypes.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -25,18 +25,20 @@
 #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<PetscInt,PetscScalar> SieveMesh;
+  typedef ALE::IMesh<PylithInt,PylithScalar> SieveMesh;
 
   /// Sieve mesh (flexible, slower access without set sizes).
-  typedef ALE::Mesh<PetscInt,PetscScalar> SieveFlexMesh;
+  typedef ALE::Mesh<PylithInt,PylithScalar> SieveFlexMesh;
 
   /// Sieve submesh.
-  typedef ALE::IMesh<PetscInt,PetscScalar,ALE::LabelSifter<int, SieveMesh::point_type> > SieveSubMesh;
+  typedef ALE::IMesh<PylithInt,PylithScalar,ALE::LabelSifter<int, SieveMesh::point_type> > SieveSubMesh;
 
 } // pylith
 

Added: short/3D/PyLith/trunk/libsrc/pylith/utils/types.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/utils/types.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/libsrc/pylith/utils/types.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -0,0 +1,36 @@
+// -*- 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-2011 University of California, Davis
+//
+// See COPYING for license information.
+//
+// ======================================================================
+//
+
+/**
+ * @file libsrc/utils/pylithtypes.h
+ *
+ * @brief Type definitions for PyLith.
+ */
+
+#if !defined(pylith_utils_pylithtypes_h)
+#define pylith_utils_pylithtypes_h
+
+#include "petsc.h"
+
+typedef PetscScalar PylithScalar;
+typedef PetscInt PylithInt;
+
+#endif // pylith_utils_pylithtypes_h
+
+
+// End of file

Modified: short/3D/PyLith/trunk/modulesrc/bc/AbsorbingDampers.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/AbsorbingDampers.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/bc/AbsorbingDampers.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -61,7 +61,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -72,7 +72,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* mat,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -83,7 +83,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/modulesrc/bc/DirichletBC.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/DirichletBC.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/bc/DirichletBC.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -74,7 +74,7 @@
        * @param t Current time
        * @param field Solution field
        */
-      void setField(const double t,
+      void setField(const PylithScalar t,
 		    const pylith::topology::Field<pylith::topology::Mesh>& field);
       
       /** Set values in field.
@@ -83,8 +83,8 @@
        * @param t1 Time t+dt.
        * @param field Solution field
        */
-      void setFieldIncr(const double t0,
-			const double t1,
+      void setFieldIncr(const PylithScalar t0,
+			const PylithScalar t1,
 			const pylith::topology::Field<pylith::topology::Mesh>& field);
       
       // PROTECTED METHODS //////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/modulesrc/bc/Neumann.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/Neumann.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/bc/Neumann.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -56,7 +56,7 @@
        * @param fields Solution fields.
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -67,7 +67,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/modulesrc/bc/PointForce.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/PointForce.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/bc/PointForce.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/modulesrc/bc/bc.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/bc.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/bc/bc.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,6 +46,7 @@
 
 %include "typemaps.i"
 %include "../include/doublearray.i"
+%include "../include/pylithtypes.i"
 
 // Numpy interface stuff
 %{

Modified: short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/BruneSlipFn.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -67,7 +67,7 @@
        */
       void initialize(const pylith::topology::SubMesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
-		      const double originTime =0.0);
+		      const PylithScalar originTime =0.0);
       
       /** Get slip on fault surface at time t.
        *
@@ -77,7 +77,7 @@
        * @returns Slip vector as left-lateral/reverse/normal.
        */
       void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
-		const double t);
+		const PylithScalar t);
       
       /** Get slip increment on fault surface between time t0 and t1.
        *
@@ -88,8 +88,8 @@
        * @returns Increment in slip vector as left-lateral/reverse/normal.
        */
       void slipIncr(pylith::topology::Field<pylith::topology::SubMesh>* slipField,
-		    const double t0,
-		    const double t1);
+		    const PylithScalar t0,
+		    const PylithScalar t1);
 
       /** Get final slip.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/ConstRateSlipFn.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -61,7 +61,7 @@
        */
       void initialize(const pylith::topology::SubMesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
-		      const double originTime =0.0);
+		      const PylithScalar originTime =0.0);
       
       /** Get slip on fault surface at time t.
        *
@@ -71,7 +71,7 @@
        * @returns Slip vector as left-lateral/reverse/normal.
        */
       void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
-		const double t);
+		const PylithScalar t);
   
       /** Get slip increment on fault surface between time t0 and t1.
        *
@@ -82,8 +82,8 @@
        * @returns Increment in slip vector as left-lateral/reverse/normal.
        */
       void slipIncr(pylith::topology::Field<pylith::topology::SubMesh>* slipField,
-		    const double t0,
-		    const double t1);
+		    const PylithScalar t0,
+		    const PylithScalar t1);
       
       /** Get final slip.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/EqKinSrc.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,13 +44,13 @@
        *
        * @param value Origin time for earthquake source.
        */
-      void originTime(const double value);
+      void originTime(const PylithScalar value);
       
       /** Get origin time for earthquake source.
        *
        * @returns Origin time for earthquake source.
        */
-      double originTime(void) const;
+      PylithScalar originTime(void) const;
       
       /** Set slip time function.
        *
@@ -72,7 +72,7 @@
        * @param t Time t.
        */
       void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
-		const double t);
+		const PylithScalar t);
 
       /** Get increment of slip on fault surface between time t0 and t1.
        *
@@ -81,8 +81,8 @@
        * @param t1 Time for end of slip increment.
        */
       void slipIncr(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
-		    const double t0,
-		    const double t1);
+		    const PylithScalar t0,
+		    const PylithScalar t1);
       
       /** Get final slip.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -76,7 +76,7 @@
        */
       virtual
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-				      const double t,
+				      const PylithScalar t,
 				      pylith::topology::SolutionFields* const fields);
 
       /** Update state variables as needed.
@@ -85,7 +85,7 @@
        * @param fields Solution fields
        * @param mesh Finite-element mesh
        */
-      void updateStateVars(const double t,
+      void updateStateVars(const PylithScalar t,
 			   pylith::topology::SolutionFields* const fields);
       
       /** Constrain solution space based on friction.
@@ -95,7 +95,7 @@
        * @param jacobian Sparse matrix for system Jacobian.
        */
       void constrainSolnSpace(pylith::topology::SolutionFields* const fields,
-			      const double t,
+			      const PylithScalar t,
 			      const pylith::topology::Jacobian& jacobian);
 
       /** Adjust solution from solver with lumped Jacobian to match Lagrange

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -77,7 +77,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Get vertex field associated with integrator.

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveLagrange.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -68,7 +68,7 @@
        */
       virtual
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -80,7 +80,7 @@
        * @param mesh Finite-element mesh
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -91,7 +91,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Adjust solution from solver with lumped Jacobian to match Lagrange

Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveTract.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -65,7 +65,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -76,7 +76,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
   
       /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/LiuCosSlipFn.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -69,7 +69,7 @@
        */
       void initialize(const pylith::topology::SubMesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
-		      const double originTime =0.0);
+		      const PylithScalar originTime =0.0);
       
       /** Get slip on fault surface at time t.
        *
@@ -79,7 +79,7 @@
        * @returns Slip vector as left-lateral/reverse/normal.
        */
       void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
-		const double t);
+		const PylithScalar t);
   
       /** Get slip increment on fault surface between time t0 and t1.
        *
@@ -90,8 +90,8 @@
        * @returns Increment in slip vector as left-lateral/reverse/normal.
        */
       void slipIncr(pylith::topology::Field<pylith::topology::SubMesh>* slipField,
-		    const double t0,
-		    const double t1);
+		    const PylithScalar t0,
+		    const PylithScalar t1);
       
       /** Get final slip.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/SlipTimeFn.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -51,7 +51,7 @@
       virtual
       void initialize(const pylith::topology::SubMesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
-		      const double originTime =0.0) = 0;
+		      const PylithScalar originTime =0.0) = 0;
 
       /** Get slip on fault surface at time t.
        *
@@ -62,7 +62,7 @@
        */
       virtual
       void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
-		const double t) = 0;
+		const PylithScalar t) = 0;
   
       /** Get slip increment on fault surface between time t0 and t1.
        *
@@ -74,8 +74,8 @@
        */
       virtual
       void slipIncr(pylith::topology::Field<pylith::topology::SubMesh>* slipField,
-		    const double t0,
-		    const double t1) = 0;
+		    const PylithScalar t0,
+		    const PylithScalar t1) = 0;
       
       /** Get final slip.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/StepSlipFn.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -61,7 +61,7 @@
        */
       void initialize(const pylith::topology::SubMesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
-		      const double originTime =0.0);
+		      const PylithScalar originTime =0.0);
       
       /** Get slip on fault surface at time t.
        *
@@ -71,7 +71,7 @@
        * @returns Slip vector as left-lateral/reverse/normal.
        */
       void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
-		const double t);
+		const PylithScalar t);
       
       /** Get slip increment on fault surface between time t0 and t1.
        *
@@ -82,8 +82,8 @@
        * @returns Increment in slip vector as left-lateral/reverse/normal.
        */
       void slipIncr(pylith::topology::Field<pylith::topology::SubMesh>* slipField,
-		    const double t0,
-		    const double t1);
+		    const PylithScalar t0,
+		    const PylithScalar t1);
       
       /** Get final slip.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -67,7 +67,7 @@
        */
       void initialize(const pylith::topology::SubMesh& faultMesh,
 		      const spatialdata::units::Nondimensional& normalizer,
-		      const double originTime =0.0);
+		      const PylithScalar originTime =0.0);
       
       /** Get slip on fault surface at time t.
        *
@@ -77,7 +77,7 @@
        * @returns Slip vector as left-lateral/reverse/normal.
        */
       void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
-		const double t);
+		const PylithScalar t);
   
       /** Get slip increment on fault surface between time t0 and t1.
        *
@@ -88,8 +88,8 @@
        * @returns Increment in slip vector as left-lateral/reverse/normal.
        */
       void slipIncr(pylith::topology::Field<pylith::topology::SubMesh>* slipField,
-		    const double t0,
-		    const double t1);
+		    const PylithScalar t0,
+		    const PylithScalar t1);
       
       /** Get final slip.
        *

Modified: short/3D/PyLith/trunk/modulesrc/faults/faults.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/faults.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/faults/faults.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,6 +55,7 @@
 %include "../include/doublearray.i"
 %include "../include/chararray.i"
 %include "../include/eqkinsrcarray.i"
+%include "../include/pylithtypes.i"
 
 // Numpy interface stuff
 %{

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/CellGeometry.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/CellGeometry.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/CellGeometry.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -87,7 +87,7 @@
        *
        * @returns Array of coordinates of vertices in reference cell
        */
-      const pylith::double_array& vertices(void) const;
+      const pylith::scalar_array& vertices(void) const;
       
       /** Get cell geometry for lower dimension cell.
        *
@@ -106,9 +106,9 @@
        * @param npts Number of points to transform.
        */
       virtual
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts) const = 0;
       
@@ -120,10 +120,10 @@
        * @param location Location in reference cell at which to compute Jacobian.
        */
       virtual
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const = 0;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const = 0;
       
       /** Compute Jacobian at location in cell.
        *
@@ -135,10 +135,10 @@
        * @param npts Number of points to transform.
        */
       virtual
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts) const = 0;
       
@@ -156,10 +156,10 @@
        * @param upDir Direction perpendicular to horizontal direction that is 
        *   not collinear with cell normal (usually "up" direction).
        */
-      void orientation(pylith::double_array* orientation,
-		       const pylith::double_array& jacobian,
-		       const double jacobianDet,
-		       const pylith::double_array& upDir) const;
+      void orientation(pylith::scalar_array* orientation,
+		       const pylith::scalar_array& jacobian,
+		       const PylithScalar jacobianDet,
+		       const pylith::scalar_array& upDir) const;
 
     }; // CellGeometry
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/Constraint.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/Constraint.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/Constraint.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -83,7 +83,7 @@
        * @param field Solution field
        */
       virtual
-      void setField(const double t,
+      void setField(const PylithScalar t,
 		    const pylith::topology::Field<pylith::topology::Mesh>& field) = 0;
       
       /** Set increment in values from t0 to t1 in field.
@@ -93,8 +93,8 @@
        * @param field Solution field
        */
       virtual
-      void setFieldIncr(const double t0,
-			const double t1,
+      void setFieldIncr(const PylithScalar t0,
+			const PylithScalar t1,
 			const pylith::topology::Field<pylith::topology::Mesh>& field) = 0;
 
     }; // class Constraint

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicit.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicit.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicit.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,13 +43,13 @@
        *
        * @param dt Time step
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Set normalized viscosity for numerical damping.
        *
        * @param viscosity Nondimensional viscosity.
        */
-      void normViscosity(const double viscosity);
+      void normViscosity(const PylithScalar viscosity);
 
       /** Set flag for setting constraints for total field solution or
        *  incremental field solution.
@@ -65,7 +65,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to residual term (r) for operator.
@@ -75,7 +75,7 @@
        * @param fields Solution fields
        */
       void integrateResidualLumped(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-				   const double t,
+				   const PylithScalar t,
 				   pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -86,7 +86,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated
@@ -98,7 +98,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
     }; // ElasticityExplicit

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,13 +43,13 @@
        *
        * @param dt Time step
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
 
       /** Set normalized viscosity for numerical damping.
        *
        * @param viscosity Nondimensional viscosity.
        */
-      void normViscosity(const double viscosity);
+      void normViscosity(const PylithScalar viscosity);
 
       /** Set flag for setting constraints for total field solution or
        *  incremental field solution.
@@ -65,7 +65,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to residual term (r) for operator.
@@ -75,7 +75,7 @@
        * @param fields Solution fields
        */
       void integrateResidualLumped(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-				   const double t,
+				   const PylithScalar t,
 				   pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -86,7 +86,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated
@@ -98,7 +98,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
     }; // ElasticityExplicitLgDeform

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTet4.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTet4.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTet4.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,13 +43,13 @@
        *
        * @param dt Time step
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Set normalized viscosity for numerical damping.
        *
        * @param viscosity Nondimensional viscosity.
        */
-      void normViscosity(const double viscosity);
+      void normViscosity(const PylithScalar viscosity);
 
       /** Set flag for setting constraints for total field solution or
        *  incremental field solution.
@@ -65,7 +65,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to residual term (r) for operator.
@@ -75,7 +75,7 @@
        * @param fields Solution fields
        */
       void integrateResidualLumped(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-				   const double t,
+				   const PylithScalar t,
 				   pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -86,7 +86,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated
@@ -98,7 +98,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
     }; // ElasticityExplicitTet4

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTri3.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTri3.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitTri3.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,13 +43,13 @@
        *
        * @param dt Time step
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Set normalized viscosity for numerical damping.
        *
        * @param viscosity Nondimensional viscosity.
        */
-      void normViscosity(const double viscosity);
+      void normViscosity(const PylithScalar viscosity);
 
       /** Set flag for setting constraints for total field solution or
        *  incremental field solution.
@@ -65,7 +65,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to residual term (r) for operator.
@@ -75,7 +75,7 @@
        * @param fields Solution fields
        */
       void integrateResidualLumped(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-				   const double t,
+				   const PylithScalar t,
 				   pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -86,7 +86,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated
@@ -98,7 +98,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
     }; // ElasticityExplicitTri3

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicit.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicit.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicit.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
        *
        * @param dt Time step
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Get stable time step for advancing from time t to time t+dt.
        *
@@ -52,7 +52,7 @@
        * @param mesh Finite-element mesh.
        * @returns Time step
        */
-      double stableTimeStep(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStep(const pylith::topology::Mesh& mesh);
       
       /** Set flag for setting constraints for total field solution or
        *  incremental field solution.
@@ -76,7 +76,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -87,7 +87,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
   
     }; // ElasticityImplicit

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitCUDA.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitCUDA.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitCUDA.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
        *
        * @param dt Time step
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Get stable time step for advancing from time t to time t+dt.
        *
@@ -52,7 +52,7 @@
        * @param mesh Finite-element mesh.
        * @returns Time step
        */
-      double stableTimeStep(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStep(const pylith::topology::Mesh& mesh);
       
       /** Set flag for setting constraints for total field solution or
        *  incremental field solution.
@@ -76,7 +76,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -87,7 +87,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
   
     }; // ElasticityImplicitCUDA

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
        *
        * @param dt Time step
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
 
       /** Get stable time step for advancing from time t to time t+dt.
        *
@@ -52,7 +52,7 @@
        * @param mesh Finite-element mesh.
        * @returns Time step
        */
-      double stableTimeStep(const pylith::topology::Mesh& mesh) const;
+      PylithScalar stableTimeStep(const pylith::topology::Mesh& mesh) const;
 
       /** Set flag for setting constraints for total field solution or
        *  incremental field solution.
@@ -76,7 +76,7 @@
        * @param fields Solution fields
        */
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -87,7 +87,7 @@
        * @param fields Solution fields
        */
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
     }; // ElasticityImplicitLgDeform

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryHex3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryHex3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryHex3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
       

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine1D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine1D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine1D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine2D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine2D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine2D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryLine3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint1D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint1D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint1D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint2D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint2D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint2D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryPoint3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryQuad2D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryQuad2D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryQuad2D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
       

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryQuad3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryQuad3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryQuad3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
       

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTet3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTet3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTet3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
       

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTri2D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTri2D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTri2D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
       

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTri3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTri3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/GeometryTri3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,9 +57,9 @@
        * @param dim Dimension of global coordinate system.
        * @param npts Number of points to transform.
        */
-      void ptsRefToGlobal(double* ptsGlobal,
-			  const double* ptsRef,
-			  const double* vertices,
+      void ptsRefToGlobal(PylithScalar* ptsGlobal,
+			  const PylithScalar* ptsRef,
+			  const PylithScalar* vertices,
 			  const int dim,
 			  const int npts =1) const;
       
@@ -70,10 +70,10 @@
        * @param vertices Coordinates of vertices of cell.
        * @param location Location in reference cell at which to compute Jacobian.
        */
-      void jacobian(pylith::double_array* jacobian,
-		    double* det,
-		    const pylith::double_array& vertices,
-		    const pylith::double_array& location) const;
+      void jacobian(pylith::scalar_array* jacobian,
+		    PylithScalar* det,
+		    const pylith::scalar_array& vertices,
+		    const pylith::scalar_array& location) const;
       
       /** Compute Jacobian at location in cell.
        *
@@ -84,10 +84,10 @@
        * @param dim Dimension of coordinate system.
        * @param npts Number of points to transform.
        */
-      void jacobian(double* jacobian,
-		    double* det,
-		    const double* vertices,
-		    const double* ptsRef,
+      void jacobian(PylithScalar* jacobian,
+		    PylithScalar* det,
+		    const PylithScalar* vertices,
+		    const PylithScalar* ptsRef,
 		    const int dim,
 		    const int npts =1) const;
       

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -73,7 +73,7 @@
        * @param dt Time step
        */
       virtual
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Get stable time step for advancing from time t to time t+dt.
        *
@@ -83,7 +83,7 @@
        * @returns Time step
        */
       virtual
-      double stableTimeStep(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStep(const pylith::topology::Mesh& mesh);
       
       /** Check whether Jacobian needs to be recomputed.
        *
@@ -129,7 +129,7 @@
        */
       virtual 
       void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -141,7 +141,7 @@
        */
       virtual
       void integrateJacobian(pylith::topology::Jacobian* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
 
       /** Integrate contributions to Jacobian matrix (A) associated with
@@ -153,7 +153,7 @@
        */
       virtual
       void integrateJacobian(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
-			     const double t,
+			     const PylithScalar t,
 			     pylith::topology::SolutionFields* const fields);
       
       /** Update state variables as needed.
@@ -163,7 +163,7 @@
        * @param mesh Finite-element mesh
        */
       virtual
-      void updateStateVars(const double t,
+      void updateStateVars(const PylithScalar t,
 			   pylith::topology::SolutionFields* const fields);
 
       /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -75,7 +75,7 @@
        * @param fields Solution fields
        * @param mesh Finite-element mesh
        */
-      void updateStateVars(const double t,
+      void updateStateVars(const PylithScalar t,
 			   pylith::topology::SolutionFields* const fields);
       
       /** Verify configuration is acceptable.

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticityLgDeform.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticityLgDeform.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticityLgDeform.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
        * @param fields Solution fields
        * @param mesh Finite-element mesh
        */
-      void updateStateVars(const double t,
+      void updateStateVars(const PylithScalar t,
 			   pylith::topology::SolutionFields* const fields);
       
     }; // IntegratorElasticityLgDeform

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/QuadratureRefCell.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/QuadratureRefCell.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/QuadratureRefCell.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -76,45 +76,68 @@
        * @param numQuadPts Number of quadrature points
        * @param spaceDim Number of dimensions in coordinates of cell vertices
        */
+#if defined(PYLITH_USE_SCALAR_SINGLE)
+      %apply(float* IN_ARRAY2, int DIM1, int DIM2) {
+	(const PylithScalar* basis,
+	 const int numQuadPts1,
+	 const int numBasis1)
+	  };
+      %apply(float* IN_ARRAY3, int DIM1, int DIM2, int DIM3) {
+	(const PylithScalar* basisDerivRef,
+	 const int numQuadPts2,
+	 const int numBasis2,
+	 const int cellDim2)
+	  };
+      %apply(float* IN_ARRAY2, int DIM1, int DIM2) {
+	(const PylithScalar* quadPtsRef,
+	 const int numQuadPts3,
+	 const int cellDim3)
+	  };
+      %apply(float* IN_ARRAY1, int DIM1) {
+	(const PylithScalar* quadWts,
+	 const int numQuadPts4)
+	  };
+#else
       %apply(double* IN_ARRAY2, int DIM1, int DIM2) {
-	(const double* basis,
+	(const PylithScalar* basis,
 	 const int numQuadPts1,
 	 const int numBasis1)
 	  };
       %apply(double* IN_ARRAY3, int DIM1, int DIM2, int DIM3) {
-	(const double* basisDerivRef,
+	(const PylithScalar* basisDerivRef,
 	 const int numQuadPts2,
 	 const int numBasis2,
 	 const int cellDim2)
 	  };
       %apply(double* IN_ARRAY2, int DIM1, int DIM2) {
-	(const double* quadPtsRef,
+	(const PylithScalar* quadPtsRef,
 	 const int numQuadPts3,
 	 const int cellDim3)
 	  };
       %apply(double* IN_ARRAY1, int DIM1) {
-	(const double* quadWts,
+	(const PylithScalar* quadWts,
 	 const int numQuadPts4)
 	  };
-      void initialize(const double* basis,
+#endif
+      void initialize(const PylithScalar* basis,
 		      const int numQuadPts1,
 		      const int numBasis1,
-		      const double* basisDerivRef,
+		      const PylithScalar* basisDerivRef,
 		      const int numQuadPts2,
 		      const int numBasis2,
 		      const int cellDim2,
-		      const double* quadPtsRef,
+		      const PylithScalar* quadPtsRef,
 		      const int numQuadPts3,
 		      const int cellDim3,
-		      const double* quadWts,
+		      const PylithScalar* quadWts,
 		      const int numQuadPts4,
 		      const int spaceDim);
-      %clear(const double* basis, const int numQuadPts, const int numBasis);
-      %clear(const double* basisDerivRef, const int numQuadPts,
+      %clear(const PylithScalar* basis, const int numQuadPts, const int numBasis);
+      %clear(const PylithScalar* basisDerivRef, const int numQuadPts,
 	     const int numBasis, const int spaceDim);
-      %clear(const double* quadPtsRef, const int numQuadPts,
+      %clear(const PylithScalar* quadPtsRef, const int numQuadPts,
 	     const int cellDim);
-      %clear(const double* quadWts, const int numQuadPts);
+      %clear(const PylithScalar* quadWts, const int numQuadPts);
       
       /** Set geometry associated with reference cell.
        *
@@ -132,38 +155,38 @@
        *
        * @param tolerance Minimum allowable value for Jacobian
        */
-      void minJacobian(const double min);
+      void minJacobian(const PylithScalar min);
       
       /** Get minimum allowable determinant of Jacobian.
        *
        * @returns Minimum allowable value for Jacobian
        */
-      double minJacobian(void) const;
+      PylithScalar minJacobian(void) const;
       
       /** Get coordinates of quadrature points in reference cell.
        *
        * @returns Array of coordinates of quadrature points in reference cell.
        */
-      const pylith::double_array& quadPtsRef(void) const;
+      const pylith::scalar_array& quadPtsRef(void) const;
       
       /** Get weights of quadrature points.
        *
        * @returns Weights of quadrature points
        */
-      const pylith::double_array& quadWts(void) const;
+      const pylith::scalar_array& quadWts(void) const;
       
       /** Get basis fns evaluated at quadrature points.
        *
        * @returns Array of basis fns evaluated at quadrature points
        */
-      const pylith::double_array& basis(void) const;
+      const pylith::scalar_array& basis(void) const;
       
       /** Get derivates of basis fns evaluated at quadrature points.
        *
        * @returns Array of derivates of basis fns evaluated at
        * quadrature points
        */
-      const pylith::double_array& basisDerivRef(void) const;
+      const pylith::scalar_array& basisDerivRef(void) const;
       
       /** Get number of dimensions in reference cell.
        *

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -64,6 +64,7 @@
 
 %include "typemaps.i"
 %include "../include/doublearray.i"
+%include "../include/pylithtypes.i"
 
 // Numpy interface stuff
 %{

Modified: short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -61,13 +61,13 @@
        * @param dt Current time step.
        */
       virtual
-      void timeStep(const double dt);
+      void timeStep(const float dt);
 
       /** Get current time step.
        *
        * @returns Current time step.
        */
-      double timeStep(void) const;
+      PylithScalar timeStep(void) const;
 
       /** Set database for physical property parameters.
        *
@@ -144,9 +144,9 @@
        *
        * @returns Friction (magnitude of shear traction) at vertex.
        */
-      double calcFriction(const double slip,
-			  const double slipRate,
-			  const double normalTraction);
+      PylithScalar calcFriction(const PylithScalar slip,
+			  const PylithScalar slipRate,
+			  const PylithScalar normalTraction);
   
 
       /** Compute friction at vertex.
@@ -159,9 +159,9 @@
        * @param normalTraction Normal traction at location.
        * @param vertex Finite-element vertex on friction interface.
        */
-      void updateStateVars(const double slip,
-			   const double slipRate,
-			   const double normalTraction,
+      void updateStateVars(const PylithScalar slip,
+			   const PylithScalar slipRate,
+			   const PylithScalar normalTraction,
 			   const int vertex);
   
       // PROTECTED METHODS //////////////////////////////////////////////
@@ -175,8 +175,8 @@
        * @param dbValues Array of database values.
        */
       virtual
-      void _dbToProperties(double* const propValues,
-			   const double_array& dbValues) const = 0;
+      void _dbToProperties(PylithScalar* const propValues,
+			   const scalar_array& dbValues) const = 0;
 
       /** Nondimensionalize properties.
        *
@@ -184,7 +184,7 @@
        * @param nvalues Number of values.
        */
       virtual
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const = 0;
 
       /** Dimensionalize properties.
@@ -193,7 +193,7 @@
        * @param nvalues Number of values.
        */
       virtual
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const = 0;
 
       /** Compute initial state variables from values in spatial database.
@@ -202,8 +202,8 @@
        * @param dbValues Array of database values.
        */
       virtual
-      void _dbToStateVars(double* const stateValues,
-			  const double_array& dbValues) const;
+      void _dbToStateVars(PylithScalar* const stateValues,
+			  const scalar_array& dbValues) const;
 
       /** Nondimensionalize state variables.
        *
@@ -211,7 +211,7 @@
        * @param nvalues Number of values.
        */
       virtual
-      void _nondimStateVars(double* const values,
+      void _nondimStateVars(PylithScalar* const values,
 			    const int nvalues) const;
   
       /** Dimensionalize state variables.
@@ -220,7 +220,7 @@
        * @param nvalues Number of values.
        */
       virtual
-      void _dimStateVars(double* const values,
+      void _dimStateVars(PylithScalar* const values,
 			 const int nvalues) const;
 
       /** Compute friction from properties and state variables.
@@ -234,12 +234,12 @@
        * @param numStateVars Number of state variables.
        */
       virtual
-      double _calcFriction(const double slip,
-			   const double slipRate,
-			   const double normalTraction,
-			   const double* properties,
+      PylithScalar _calcFriction(const PylithScalar slip,
+			   const PylithScalar slipRate,
+			   const PylithScalar normalTraction,
+			   const PylithScalar* properties,
 			   const int numProperties,
-			   const double* stateVars,
+			   const PylithScalar* stateVars,
 			   const int numStateVars) = 0;
 
       /** Update state variables (for next time step).
@@ -250,11 +250,11 @@
        * @param numProperties Number of properties.
        */
       virtual
-      void _updateStateVars(const double slip,
-			    const double slipRate,
-			    double* const stateVars,
+      void _updateStateVars(const PylithScalar slip,
+			    const PylithScalar slipRate,
+			    PylithScalar* const stateVars,
 			    const int numStateVars,
-			    const double* properties,
+			    const PylithScalar* properties,
 			    const int numProperties);
 
     }; // class FrictionModel

Modified: short/3D/PyLith/trunk/modulesrc/friction/RateStateAgeing.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/RateStateAgeing.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/friction/RateStateAgeing.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,15 +44,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const double_array& dbValues) const;
+      void _dbToProperties(PylithScalar* const propValues,
+			   const scalar_array& dbValues) const;
 
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
 
       /** Dimensionalize properties.
@@ -60,7 +60,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
 
       /** Compute friction from properties and state variables.
@@ -73,12 +73,12 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      double _calcFriction(const double slip,
-			   const double slipRate,
-			   const double normalTraction,
-			   const double* properties,
+      PylithScalar _calcFriction(const PylithScalar slip,
+			   const PylithScalar slipRate,
+			   const PylithScalar normalTraction,
+			   const PylithScalar* properties,
 			   const int numProperties,
-			   const double* stateVars,
+			   const PylithScalar* stateVars,
 			   const int numStateVars);
 
     }; // class RateStateAgeing

Modified: short/3D/PyLith/trunk/modulesrc/friction/SlipWeakening.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/SlipWeakening.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/friction/SlipWeakening.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,15 +44,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const double_array& dbValues) const;
+      void _dbToProperties(PylithScalar* const propValues,
+			   const scalar_array& dbValues) const;
 
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
 
       /** Dimensionalize properties.
@@ -60,7 +60,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
 
       /** Compute friction from properties and state variables.
@@ -73,12 +73,12 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      double _calcFriction(const double slip,
-			   const double slipRate,
-			   const double normalTraction,
-			   const double* properties,
+      PylithScalar _calcFriction(const PylithScalar slip,
+			   const PylithScalar slipRate,
+			   const PylithScalar normalTraction,
+			   const PylithScalar* properties,
 			   const int numProperties,
-			   const double* stateVars,
+			   const PylithScalar* stateVars,
 			   const int numStateVars);
 
     }; // class SlipWeakening

Modified: short/3D/PyLith/trunk/modulesrc/friction/StaticFriction.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/StaticFriction.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/friction/StaticFriction.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,15 +44,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const double_array& dbValues) const;
+      void _dbToProperties(PylithScalar* const propValues,
+			   const scalar_array& dbValues) const;
 
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
 
       /** Dimensionalize properties.
@@ -60,7 +60,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
 
       /** Compute friction from properties and state variables.
@@ -73,12 +73,12 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      double _calcFriction(const double slip,
-			   const double slipRate,
-			   const double normalTraction,
-			   const double* properties,
+      PylithScalar _calcFriction(const PylithScalar slip,
+			   const PylithScalar slipRate,
+			   const PylithScalar normalTraction,
+			   const PylithScalar* properties,
 			   const int numProperties,
-			   const double* stateVars,
+			   const PylithScalar* stateVars,
 			   const int numStateVars);
 
     }; // class StaticFriction

Modified: short/3D/PyLith/trunk/modulesrc/friction/TimeWeakening.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/TimeWeakening.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/friction/TimeWeakening.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,15 +44,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const double_array& dbValues) const;
+      void _dbToProperties(PylithScalar* const propValues,
+			   const scalar_array& dbValues) const;
 
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
 
       /** Dimensionalize properties.
@@ -60,7 +60,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
 
       /** Compute friction from properties and state variables.
@@ -73,12 +73,12 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      double _calcFriction(const double slip,
-			   const double slipRate,
-			   const double normalTraction,
-			   const double* properties,
+      PylithScalar _calcFriction(const PylithScalar slip,
+			   const PylithScalar slipRate,
+			   const PylithScalar normalTraction,
+			   const PylithScalar* properties,
 			   const int numProperties,
-			   const double* stateVars,
+			   const PylithScalar* stateVars,
 			   const int numStateVars);
 
     }; // class TimeWeakening

Modified: short/3D/PyLith/trunk/modulesrc/friction/friction.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/friction.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/friction/friction.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,7 +32,8 @@
 #include "pylith/friction/RateStateAgeing.hh"
 #include "pylith/friction/TimeWeakening.hh"
 
-#include "pylith/utils/arrayfwd.hh"
+#include "pylith/utils/types.hh"
+#include "pylith/utils/array.hh"
 #include "pylith/utils/sievetypes.hh"
 %}
 
@@ -49,6 +50,7 @@
 
 %include "typemaps.i"
 %include "../include/doublearray.i"
+%include "../include/pylithtypes.i"
 
 // Numpy interface stuff
 %{

Modified: short/3D/PyLith/trunk/modulesrc/include/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/modulesrc/include/Makefile.am	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/include/Makefile.am	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,6 +23,7 @@
 	numpy.i \
 	chararray.i \
 	doublearray.i \
+	pylithtypes.i \
 	eqkinsrcarray.i \
 	integratorarray.i \
 	submeshfield.i

Modified: short/3D/PyLith/trunk/modulesrc/include/doublearray.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/include/doublearray.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/include/doublearray.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,4 +52,40 @@
  } // typemap
 
 
+%{
+static
+int
+convert_floatarray(PyObject* input,
+		    float* const values,
+		    const int size) {
+  if (!PySequence_Check(input)) {
+    PyErr_SetString(PyExc_TypeError, "Expecting a sequence of floats.");
+    return 0;
+  } // if
+  if (PyObject_Length(input) != size) {
+    PyErr_SetString(PyExc_ValueError, "Sequence size mismatch.");
+    return 0;
+  } // if
+  for (int i=0; i < size; i++) {
+    PyObject *o = PySequence_GetItem(input,i);
+    if (!PyFloat_Check(o)) {
+      Py_XDECREF(o);
+      PyErr_SetString(PyExc_ValueError,"Expecting a sequence of floats.");
+      return 0;
+    } // if
+    values[i] = PyFloat_AsDouble(o);
+    Py_DECREF(o);
+  } // for
+  return 1;
+} // convert_floatarray
+%}
+
+// Map a Python sequence of floats into a C float array.
+%typemap(in) float [ANY] (float values[$1_dim0]) {
+  if (!convert_floatarray($input, values, $1_dim0))
+    return NULL;
+  $1 = &values[0];
+ } // typemap
+
+
 // End of file

Added: short/3D/PyLith/trunk/modulesrc/include/pylithtypes.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/include/pylithtypes.i	                        (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/include/pylithtypes.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -0,0 +1,28 @@
+// -*- 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-2011 University of California, Davis
+//
+// See COPYING for license information.
+//
+// ======================================================================
+//
+
+#if (PETSC_PRECISION == single)
+#define PYLITH_USE_SCALAR_SINGLE
+typedef float PylithScalar;
+#else
+#define PYLITH_USE_SCALAR_DOUBLE
+typedef double PylithScalar;
+#endif
+
+
+// End of file

Modified: short/3D/PyLith/trunk/modulesrc/materials/DruckerPrager3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/DruckerPrager3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/DruckerPrager3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
        *
        * @param dt Current time step.
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Set whether elastic or inelastic constitutive relations are used.
        *
@@ -59,15 +59,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -75,7 +75,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute initial state variables from values in spatial database.
@@ -83,15 +83,15 @@
        * @param stateValues Array of state variable values.
        * @param dbValues Array of database values.
        */
-      void _dbToStateVars(double* const stateValues,
-			  const pylith::double_array& dbValues);
+      void _dbToStateVars(PylithScalar* const stateValues,
+			  const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize state variables..
        *
        * @param values Array of state variables.
        * @param nvalues Number of values.
        */
-      void _nondimStateVars(double* const values,
+      void _nondimStateVars(PylithScalar* const values,
 			    const int nvalues) const;
       
       /** Dimensionalize state variables.
@@ -99,7 +99,7 @@
        * @param values Array of state variables.
        * @param nvalues Number of values.
        */
-      void _dimStateVars(double* const values,
+      void _dimStateVars(PylithScalar* const values,
 			 const int nvalues) const;
       
       /** Compute density from properties.
@@ -110,10 +110,10 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -136,17 +136,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -165,17 +165,17 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -187,9 +187,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
       
       /** Update state variables (for next time step).
@@ -205,15 +205,15 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _updateStateVars(double* const stateVars,
+      void _updateStateVars(PylithScalar* const stateVars,
 			    const int numStateVars,
-			    const double* properties,
+			    const PylithScalar* properties,
 			    const int numProperties,
-			    const double* totalStrain,
+			    const PylithScalar* totalStrain,
 			    const int strainSize,
-			    const double* initialStress,
+			    const PylithScalar* initialStress,
 			    const int initialStressSize,
-			    const double* initialStrain,
+			    const PylithScalar* initialStrain,
 			    const int initialStrainSize);
 
     }; // class DruckerPrager3D

Modified: short/3D/PyLith/trunk/modulesrc/materials/ElasticIsotropic3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/ElasticIsotropic3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/ElasticIsotropic3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
        * @param mesh Finite-element mesh.
        * @returns Time step
        */
-      double stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
 
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :
@@ -57,15 +57,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
 
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
 
       /** Dimensionalize properties.
@@ -73,7 +73,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
 
       /** Compute density from properties.
@@ -82,10 +82,10 @@
        * @param properties Properties at location.
        * @param numProperties Number of properties.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
 
       /** Compute stress tensor from properties and state variables. If
@@ -109,17 +109,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
 
@@ -138,17 +138,17 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
 
       /** Get stable time step for implicit time integration.
@@ -160,9 +160,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class ElasticIsotropic3D

Modified: short/3D/PyLith/trunk/modulesrc/materials/ElasticMaterial.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/ElasticMaterial.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/ElasticMaterial.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -79,7 +79,7 @@
        * @returns Time step
        */
       virtual
-      double stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
 
       /** Set whether elastic or inelastic constitutive relations are used.
        *
@@ -104,10 +104,10 @@
        * @param numProperties Number of properties.
        */
       virtual
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars) = 0;
       
       /** Compute stress tensor from properties and state variables. If
@@ -132,17 +132,17 @@
        * state variables.
        */
       virtual
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars) = 0;
       
@@ -162,17 +162,17 @@
        * @param initialStrainSize Size of initial strain array.
        */
       virtual
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize) = 0;
       
       /** Get stable time step for implicit time integration.
@@ -185,9 +185,9 @@
        * @returns Time step
        */
       virtual
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const = 0;
       
     }; // class ElasticMaterial

Modified: short/3D/PyLith/trunk/modulesrc/materials/ElasticPlaneStrain.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/ElasticPlaneStrain.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/ElasticPlaneStrain.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
        * @param mesh Finite-element mesh.
        * @returns Time step
        */
-      double stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
 
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :
@@ -57,15 +57,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
 
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
 
       /** Dimensionalize properties.
@@ -73,7 +73,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
 
       /** Compute density from properties.
@@ -82,10 +82,10 @@
        * @param properties Properties at location.
        * @param numProperties Number of properties.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
 
       /** Compute stress tensor from properties and state variables. If
@@ -109,17 +109,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
 
@@ -138,17 +138,17 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
 
       /** Get stable time step for implicit time integration.
@@ -160,9 +160,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class ElasticPlaneStrain

Modified: short/3D/PyLith/trunk/modulesrc/materials/ElasticPlaneStress.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/ElasticPlaneStress.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/ElasticPlaneStress.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
        * @param mesh Finite-element mesh.
        * @returns Time step
        */
-      double stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
 
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :
@@ -57,15 +57,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
 
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
 
       /** Dimensionalize properties.
@@ -73,7 +73,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
 
       /** Compute density from properties.
@@ -82,10 +82,10 @@
        * @param properties Properties at location.
        * @param numProperties Number of properties.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
 
       /** Compute stress tensor from properties and state variables. If
@@ -109,17 +109,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
 
@@ -138,17 +138,17 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
 
       /** Get stable time step for implicit time integration.
@@ -160,9 +160,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class ElasticPlaneStress

Modified: short/3D/PyLith/trunk/modulesrc/materials/ElasticStrain1D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/ElasticStrain1D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/ElasticStrain1D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
        * @param mesh Finite-element mesh.
        * @returns Time step
        */
-      double stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
 
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :
@@ -57,15 +57,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -73,7 +73,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute density from properties.
@@ -82,10 +82,10 @@
        * @param properties Properties at location.
        * @param numProperties Number of properties.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -109,17 +109,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -138,17 +138,17 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -160,9 +160,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class ElasticStrain1D

Modified: short/3D/PyLith/trunk/modulesrc/materials/ElasticStress1D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/ElasticStress1D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/ElasticStress1D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
        * @param mesh Finite-element mesh.
        * @returns Time step
        */
-      double stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
+      PylithScalar stableTimeStepImplicit(const pylith::topology::Mesh& mesh);
 
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :
@@ -57,15 +57,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -73,7 +73,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute density from properties.
@@ -82,10 +82,10 @@
        * @param properties Properties at location.
        * @param numProperties Number of properties.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -109,17 +109,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -138,17 +138,17 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -160,9 +160,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class ElasticStress1D

Modified: short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellIsotropic3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellIsotropic3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellIsotropic3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
        *
        * @param dt Current time step.
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Set whether elastic or inelastic constitutive relations are used.
        *
@@ -59,15 +59,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -75,7 +75,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute initial state variables from values in spatial database.
@@ -83,8 +83,8 @@
        * @param stateValues Array of state variable values.
        * @param dbValues Array of database values.
        */
-      void _dbToStateVars(double* const stateValues,
-			  const pylith::double_array& dbValues);
+      void _dbToStateVars(PylithScalar* const stateValues,
+			  const pylith::scalar_array& dbValues);
       
       /** Compute density from properties.
        *
@@ -94,10 +94,10 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -120,17 +120,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -149,17 +149,17 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Update state variables (for next time step).
@@ -175,15 +175,15 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _updateStateVars(double* const stateVars,
+      void _updateStateVars(PylithScalar* const stateVars,
 			    const int numStateVars,
-			    const double* properties,
+			    const PylithScalar* properties,
 			    const int numProperties,
-			    const double* totalStrain,
+			    const PylithScalar* totalStrain,
 			    const int strainSize,
-			    const double* initialStress,
+			    const PylithScalar* initialStress,
 			    const int initialStressSize,
-			    const double* initialStrain,
+			    const PylithScalar* initialStrain,
 			    const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -195,9 +195,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class GenMaxwellIsotropic3D

Modified: short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellPlaneStrain.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellPlaneStrain.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellPlaneStrain.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
        *
        * @param dt Current time step.
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Set whether elastic or inelastic constitutive relations are used.
        *
@@ -59,15 +59,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -75,7 +75,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute initial state variables from values in spatial database.
@@ -83,8 +83,8 @@
        * @param stateValues Array of state variable values.
        * @param dbValues Array of database values.
        */
-      void _dbToStateVars(double* const stateValues,
-			  const pylith::double_array& dbValues);
+      void _dbToStateVars(PylithScalar* const stateValues,
+			  const pylith::scalar_array& dbValues);
       
       /** Compute density from properties.
        *
@@ -94,10 +94,10 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -120,17 +120,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -149,17 +149,17 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Update state variables (for next time step).
@@ -175,15 +175,15 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _updateStateVars(double* const stateVars,
+      void _updateStateVars(PylithScalar* const stateVars,
 			    const int numStateVars,
-			    const double* properties,
+			    const PylithScalar* properties,
 			    const int numProperties,
-			    const double* totalStrain,
+			    const PylithScalar* totalStrain,
 			    const int strainSize,
-			    const double* initialStress,
+			    const PylithScalar* initialStress,
 			    const int initialStressSize,
-			    const double* initialStrain,
+			    const PylithScalar* initialStrain,
 			    const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -195,9 +195,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class GenMaxwellPlaneStrain

Modified: short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellQpQsIsotropic3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellQpQsIsotropic3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/GenMaxwellQpQsIsotropic3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
        *
        * @param dt Current time step.
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Set whether elastic or inelastic constitutive relations are used.
        *
@@ -59,15 +59,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -75,7 +75,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute initial state variables from values in spatial database.
@@ -83,8 +83,8 @@
        * @param stateValues Array of state variable values.
        * @param dbValues Array of database values.
        */
-      void _dbToStateVars(double* const stateValues,
-			  const pylith::double_array& dbValues);
+      void _dbToStateVars(PylithScalar* const stateValues,
+			  const pylith::scalar_array& dbValues);
       
       /** Compute density from properties.
        *
@@ -94,10 +94,10 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -120,17 +120,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -149,17 +149,17 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Update state variables (for next time step).
@@ -175,15 +175,15 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _updateStateVars(double* const stateVars,
+      void _updateStateVars(PylithScalar* const stateVars,
 			    const int numStateVars,
-			    const double* properties,
+			    const PylithScalar* properties,
 			    const int numProperties,
-			    const double* totalStrain,
+			    const PylithScalar* totalStrain,
 			    const int strainSize,
-			    const double* initialStress,
+			    const PylithScalar* initialStress,
 			    const int initialStressSize,
-			    const double* initialStrain,
+			    const PylithScalar* initialStrain,
 			    const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -195,9 +195,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class GenMaxwellQpQsIsotropic3D

Modified: short/3D/PyLith/trunk/modulesrc/materials/Material.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/Material.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/Material.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -83,13 +83,13 @@
        * @param dt Current time step.
        */
       virtual
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Get current time step.
        *
        * @returns Current time step.
        */
-      double timeStep(void) const;
+      PylithScalar timeStep(void) const;
       
       /** Set database for physical property parameters.
        *
@@ -162,8 +162,8 @@
        * @param dbValues Array of database values.
        */
       virtual
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues) = 0;
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues) = 0;
       
       /** Nondimensionalize properties.
        *
@@ -171,7 +171,7 @@
        * @param nvalues Number of values.
        */
       virtual
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const = 0;
       
       /** Dimensionalize properties.
@@ -180,7 +180,7 @@
        * @param nvalues Number of values.
        */
       virtual
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const = 0;
 
     }; // class Material

Modified: short/3D/PyLith/trunk/modulesrc/materials/MaxwellIsotropic3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/MaxwellIsotropic3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/MaxwellIsotropic3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
        *
        * @param dt Current time step.
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
 
       /** Set whether elastic or inelastic constitutive relations are used.
        *
@@ -59,15 +59,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -75,7 +75,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute initial state variables from values in spatial database.
@@ -83,8 +83,8 @@
        * @param stateValues Array of state variable values.
        * @param dbValues Array of database values.
        */
-      void _dbToStateVars(double* const stateValues,
-			  const pylith::double_array& dbValues);
+      void _dbToStateVars(PylithScalar* const stateValues,
+			  const pylith::scalar_array& dbValues);
       
       // Note: We do not need to dimensionalize or nondimensionalize state
       // variables because there are strains, which are dimensionless.
@@ -96,10 +96,10 @@
        * @param properties Properties at location.
        * @param numProperties Number of properties.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -122,17 +122,17 @@
        * @param initialStrainSize Size of initial strain array.
        * @param computeStateVars Flag indicating to compute updated state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -151,17 +151,17 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Update state variables (for next time step).
@@ -177,15 +177,15 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _updateStateVars(double* const stateVars,
+      void _updateStateVars(PylithScalar* const stateVars,
 			    const int numStateVars,
-			    const double* properties,
+			    const PylithScalar* properties,
 			    const int numProperties,
-			    const double* totalStrain,
+			    const PylithScalar* totalStrain,
 			    const int strainSize,
-			    const double* initialStress,
+			    const PylithScalar* initialStress,
 			    const int initialStressSize,
-			    const double* initialStrain,
+			    const PylithScalar* initialStrain,
 			    const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -197,9 +197,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class MaxwellIsotropic3D

Modified: short/3D/PyLith/trunk/modulesrc/materials/MaxwellPlaneStrain.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/MaxwellPlaneStrain.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/MaxwellPlaneStrain.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
        *
        * @param dt Current time step.
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
 
       /** Set whether elastic or inelastic constitutive relations are used.
        *
@@ -59,15 +59,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -75,7 +75,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute initial state variables from values in spatial database.
@@ -83,8 +83,8 @@
        * @param stateValues Array of state variable values.
        * @param dbValues Array of database values.
        */
-      void _dbToStateVars(double* const stateValues,
-			  const pylith::double_array& dbValues);
+      void _dbToStateVars(PylithScalar* const stateValues,
+			  const pylith::scalar_array& dbValues);
       
       // Note: We do not need to dimensionalize or nondimensionalize state
       // variables because there are strains, which are dimensionless.
@@ -96,10 +96,10 @@
        * @param properties Properties at location.
        * @param numProperties Number of properties.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -122,17 +122,17 @@
        * @param initialStrainSize Size of initial strain array.
        * @param computeStateVars Flag indicating to compute updated state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -151,17 +151,17 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Update state variables (for next time step).
@@ -177,15 +177,15 @@
        * @param initialStrain Initial strain tensor at location.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _updateStateVars(double* const stateVars,
+      void _updateStateVars(PylithScalar* const stateVars,
 			    const int numStateVars,
-			    const double* properties,
+			    const PylithScalar* properties,
 			    const int numProperties,
-			    const double* totalStrain,
+			    const PylithScalar* totalStrain,
 			    const int strainSize,
-			    const double* initialStress,
+			    const PylithScalar* initialStress,
 			    const int initialStressSize,
-			    const double* initialStrain,
+			    const PylithScalar* initialStrain,
 			    const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -197,9 +197,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
 
     }; // class MaxwellPlaneStrain

Modified: short/3D/PyLith/trunk/modulesrc/materials/PowerLaw3D.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/PowerLaw3D.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/PowerLaw3D.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
        *
        * @param dt Current time step.
        */
-      void timeStep(const double dt);
+      void timeStep(const PylithScalar dt);
       
       /** Set whether elastic or inelastic constitutive relations are used.
        *
@@ -59,15 +59,15 @@
        * @param propValues Array of property values.
        * @param dbValues Array of database values.
        */
-      void _dbToProperties(double* const propValues,
-			   const pylith::double_array& dbValues);
+      void _dbToProperties(PylithScalar* const propValues,
+			   const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize properties.
        *
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _nondimProperties(double* const values,
+      void _nondimProperties(PylithScalar* const values,
 			     const int nvalues) const;
       
       /** Dimensionalize properties.
@@ -75,7 +75,7 @@
        * @param values Array of property values.
        * @param nvalues Number of values.
        */
-      void _dimProperties(double* const values,
+      void _dimProperties(PylithScalar* const values,
 			  const int nvalues) const;
       
       /** Compute initial state variables from values in spatial database.
@@ -83,15 +83,15 @@
        * @param stateValues Array of state variable values.
        * @param dbValues Array of database values.
        */
-      void _dbToStateVars(double* const stateValues,
-			  const pylith::double_array& dbValues);
+      void _dbToStateVars(PylithScalar* const stateValues,
+			  const pylith::scalar_array& dbValues);
       
       /** Nondimensionalize state variables..
        *
        * @param values Array of state variables.
        * @param nvalues Number of values.
        */
-      void _nondimStateVars(double* const values,
+      void _nondimStateVars(PylithScalar* const values,
 			    const int nvalues) const;
       
       /** Dimensionalize state variables.
@@ -99,7 +99,7 @@
        * @param values Array of state variables.
        * @param nvalues Number of values.
        */
-      void _dimStateVars(double* const values,
+      void _dimStateVars(PylithScalar* const values,
 			 const int nvalues) const;
       
       /** Compute density from properties.
@@ -110,10 +110,10 @@
        * @param stateVars State variables at location.
        * @param numStateVars Number of state variables.
        */
-      void _calcDensity(double* const density,
-			const double* properties,
+      void _calcDensity(PylithScalar* const density,
+			const PylithScalar* properties,
 			const int numProperties,
-			const double* stateVars,
+			const PylithScalar* stateVars,
 			const int numStateVars);
       
       /** Compute stress tensor from properties and state variables. If
@@ -136,17 +136,17 @@
        * @param computeStateVars Flag indicating to compute updated
        * state variables.
        */
-      void _calcStress(double* const stress,
+      void _calcStress(PylithScalar* const stress,
 		       const int stressSize,
-		       const double* properties,
+		       const PylithScalar* properties,
 		       const int numProperties,
-		       const double* stateVars,
+		       const PylithScalar* stateVars,
 		       const int numStateVars,
-		       const double* totalStrain,
+		       const PylithScalar* totalStrain,
 		       const int strainSize,
-		       const double* initialStress,
+		       const PylithScalar* initialStress,
 		       const int initialStressSize,
-		       const double* initialStrain,
+		       const PylithScalar* initialStrain,
 		       const int initialStrainSize,
 		       const bool computeStateVars);
       
@@ -165,17 +165,17 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _calcElasticConsts(double* const elasticConsts,
+      void _calcElasticConsts(PylithScalar* const elasticConsts,
 			      const int numElasticConsts,
-			      const double* properties,
+			      const PylithScalar* properties,
 			      const int numProperties,
-			      const double* stateVars,
+			      const PylithScalar* stateVars,
 			      const int numStateVars,
-			      const double* totalStrain,
+			      const PylithScalar* totalStrain,
 			      const int strainSize,
-			      const double* initialStress,
+			      const PylithScalar* initialStress,
 			      const int initialStressSize,
-			      const double* initialStrain,
+			      const PylithScalar* initialStrain,
 			      const int initialStrainSize);
       
       /** Get stable time step for implicit time integration.
@@ -187,9 +187,9 @@
        *
        * @returns Time step
        */
-      double _stableTimeStepImplicit(const double* properties,
+      PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
 				     const int numProperties,
-				     const double* stateVars,
+				     const PylithScalar* stateVars,
 				     const int numStateVars) const;
       
       /** Update state variables (for next time step).
@@ -205,15 +205,15 @@
        * @param initialStrain Initial strain values.
        * @param initialStrainSize Size of initial strain array.
        */
-      void _updateStateVars(double* const stateVars,
+      void _updateStateVars(PylithScalar* const stateVars,
 			    const int numStateVars,
-			    const double* properties,
+			    const PylithScalar* properties,
 			    const int numProperties,
-			    const double* totalStrain,
+			    const PylithScalar* totalStrain,
 			    const int strainSize,
-			    const double* initialStress,
+			    const PylithScalar* initialStress,
 			    const int initialStressSize,
-			    const double* initialStrain,
+			    const PylithScalar* initialStrain,
 			    const int initialStrainSize);
 
     }; // class PowerLaw3D

Modified: short/3D/PyLith/trunk/modulesrc/materials/materials.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/materials.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/materials/materials.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,6 +57,7 @@
 
 %include "typemaps.i"
 %include "../include/doublearray.i"
+%include "../include/pylithtypes.i"
 
 // Numpy interface stuff
 %{

Modified: short/3D/PyLith/trunk/modulesrc/meshio/DataWriter.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/DataWriter.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriter.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -77,7 +77,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       virtual
-      void openTimeStep(const double t,
+      void openTimeStep(const PylithScalar t,
 			const mesh_type& mesh,
 			const char* label =0,
 			const int labelId =0);
@@ -93,7 +93,7 @@
        * @param mesh Mesh for output.
        */
       virtual
-      void writeVertexField(const double t,
+      void writeVertexField(const PylithScalar t,
 			    field_type& field,
 			    const mesh_type& mesh) = 0;
       
@@ -106,7 +106,7 @@
        * @param labelId Value of label defining which cells to include.
        */
       virtual
-      void writeCellField(const double t,
+      void writeCellField(const PylithScalar t,
 			  field_type& 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	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -76,7 +76,7 @@
        * @param field Field over vertices.
        * @param mesh Mesh for output.
        */
-      void writeVertexField(const double t,
+      void writeVertexField(const PylithScalar t,
 			    field_type& field,
 			    const mesh_type& mesh);
       
@@ -88,7 +88,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void writeCellField(const double t,
+      void writeCellField(const PylithScalar t,
 			  field_type& 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	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriterHDF5Ext.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -76,7 +76,7 @@
        * @param field Field over vertices.
        * @param mesh Mesh for output.
        */
-      void writeVertexField(const double t,
+      void writeVertexField(const PylithScalar t,
 			    field_type& field,
 			    const mesh_type& mesh);
       
@@ -88,7 +88,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void writeCellField(const double t,
+      void writeCellField(const PylithScalar t,
 			  field_type& 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	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -67,7 +67,7 @@
        * @param value Value (time in seconds) used to normalize time stamp in
        * filename.
        */
-      void timeConstant(const double value);
+      void timeConstant(const PylithScalar value);
       
 	  /** Set precision of floating point values in output.
    	   *	
@@ -83,7 +83,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void openTimeStep(const double t,
+      void openTimeStep(const PylithScalar t,
 			const mesh_type& mesh,
 			const char* label =0,
 			const int labelId =0);
@@ -97,7 +97,7 @@
        * @param field Field over vertices.
        * @param mesh Mesh for output.
        */
-      void writeVertexField(const double t,
+      void writeVertexField(const PylithScalar t,
 			    field_type& field,
 			    const mesh_type& mesh);
       
@@ -109,7 +109,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void writeCellField(const double t,
+      void writeCellField(const PylithScalar t,
 			  field_type& 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	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/meshio/OutputManager.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -98,7 +98,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void openTimeStep(const double t,
+      void openTimeStep(const PylithScalar t,
 			const mesh_type& mesh,
 			const char* label =0,
 			const int labelId =0);
@@ -112,7 +112,7 @@
        * @param field Vertex field.
        * @param mesh Mesh for output.
        */
-      void appendVertexField(const double t,
+      void appendVertexField(const PylithScalar t,
 			     field_type& field,
 			     const mesh_type& mesh);
       
@@ -124,7 +124,7 @@
        *   (=0 means use all cells in mesh).
        * @param labelId Value of label defining which cells to include.
        */
-      void appendCellField(const double t,
+      void appendCellField(const PylithScalar t,
 			   field_type& field,
 			   const char* label =0,
 			   const int labelId =0);

Modified: short/3D/PyLith/trunk/modulesrc/meshio/meshio.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/meshio.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/meshio/meshio.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -58,6 +58,7 @@
  } // exception
 
 %include "typemaps.i"
+%include "../include/pylithtypes.i"
 
 // Interfaces
 %include "MeshIOObj.i"

Modified: short/3D/PyLith/trunk/modulesrc/mpi/mpi.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/mpi/mpi.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/mpi/mpi.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -25,6 +25,7 @@
 %}
 
 %include "typemaps.i"
+%include "../include/pylithtypes.i"
 
 // Interfaces
 %include "mpi_comm.i"

Modified: short/3D/PyLith/trunk/modulesrc/problems/Formulation.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/problems/Formulation.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/problems/Formulation.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -104,8 +104,8 @@
        */
       void updateSettings(pylith::topology::Jacobian* jacobian,
 			  pylith::topology::SolutionFields* fields,
-			  const double t,
-			  const double dt);
+			  const PylithScalar t,
+			  const PylithScalar dt);
       
       /** Update handles and parameters for reforming the Jacobian and
        *  residual.
@@ -118,8 +118,8 @@
        */
       void updateSettings(pylith::topology::Field<pylith::topology::Mesh>* jacobian,
 			  pylith::topology::SolutionFields* fields,
-			  const double t,
-			  const double dt);
+			  const PylithScalar t,
+			  const PylithScalar dt);
 
       /** Reform system residual.
        *

Modified: short/3D/PyLith/trunk/modulesrc/problems/problems.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/problems/problems.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/problems/problems.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,6 +50,7 @@
 
 %include "typemaps.i"
 %include "../include/integratorarray.i"
+%include "../include/pylithtypes.i"
 
 // Interfaces
 %include "Formulation.i"

Modified: short/3D/PyLith/trunk/modulesrc/topology/Field.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Field.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/topology/Field.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -101,13 +101,13 @@
        *
        * @param value Scale associated with field.
        */
-      void scale(const double value);
+      void scale(const PylithScalar value);
 
       /** Get scale for dimensionalizing field.
        *
        * @returns Scale associated with field.
        */
-      double scale(void) const;
+      PylithScalar scale(void) const;
       
       /** Set flag indicating whether it is okay to dimensionalize field.
        *

Modified: short/3D/PyLith/trunk/modulesrc/topology/FieldsNew.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/FieldsNew.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/topology/FieldsNew.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,7 +63,7 @@
 	       const char* label,
 	       const int fiberDim,
 	       FieldBase::VectorFieldEnum vectorFieldType =FieldBase::OTHER,
-	       const double scale =1.0,
+	       const PylithScalar scale =1.0,
 	       const bool dimsOkay =false);
 
       /** Create and allocate Sieve section.

Modified: short/3D/PyLith/trunk/modulesrc/topology/topology.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/topology.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/topology/topology.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,6 +49,7 @@
 %include "typemaps.i"
 %include "../include/chararray.i"
 %include "../include/submeshfield.i"
+%include "../include/pylithtypes.i"
 
 // Numpy interface stuff
 %{

Modified: short/3D/PyLith/trunk/modulesrc/utils/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/modulesrc/utils/Makefile.am	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/utils/Makefile.am	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,6 +39,7 @@
 
 utils_swig_sources = \
 	utils.i \
+	pylith_general.i \
 	EventLogger.i \
 	TestArray.i
 

Modified: short/3D/PyLith/trunk/modulesrc/utils/TestArray.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/utils/TestArray.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/utils/TestArray.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,10 +22,17 @@
  * @brief Python interface to C++ TestArray object.
  */
 
+#if defined(PYLITH_USE_SCALAR_SINGLE)
+%apply(float* IN_ARRAY1, int DIM1) {
+  (const PylithScalar* valuesE,
+   const int nvalues)
+    };
+#else
 %apply(double* IN_ARRAY1, int DIM1) {
-  (const double* valuesE,
+  (const PylithScalar* valuesE,
    const int nvalues)
     };
+#endif
 %inline %{
   /** Check to make sure array of values match expected values.
    *
@@ -34,13 +41,13 @@
    * @param values Array of values to check.
    */
   bool
-  TestArray_checkDouble(const double* valuesE,
+  TestArray_checkScalar(const PylithScalar* valuesE,
 			const int nvalues,
-			const pylith::double_array& values) {
+			const pylith::scalar_array& values) {
     pylith::utils::TestArray::check(valuesE, nvalues, values);
-  } // check(double)
+  } // check(PylithScalar)
 %} // inline
-%clear(const double* valuesE, const int nvalues);
+%clear(const PylithScalar* valuesE, const int nvalues);
 
 
 // End of file 

Added: short/3D/PyLith/trunk/modulesrc/utils/pylith_general.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/utils/pylith_general.i	                        (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/utils/pylith_general.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -0,0 +1,31 @@
+// -*- 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-2011 University of California, Davis
+//
+// See COPYING for license information.
+//
+// ======================================================================
+//
+
+// ----------------------------------------------------------------------
+// sizeofPylithScalar
+%inline %{
+  int
+  sizeofPylithScalar(void)
+  { // sizeofPylithScalar
+    return sizeof(PylithScalar);
+  } // sizeofPylithScalar
+%} // inline
+
+
+// End of file
+

Modified: short/3D/PyLith/trunk/modulesrc/utils/utils.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/utils/utils.i	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/modulesrc/utils/utils.i	2011-09-17 18:48:29 UTC (rev 18927)
@@ -25,7 +25,7 @@
 #include "pylith/utils/TestArray.hh"
 
 #include <petsclog.h> // USES PetscLogEventBegin/End() in inline methods
-#include "pylith/utils/arrayfwd.hh" // USES double_array
+#include "pylith/utils/arrayfwd.hh" // USES scalar_array
 #include "pylith/utils/sievetypes.hh"
 %}
 
@@ -41,6 +41,7 @@
  } // exception
 
 %include "typemaps.i"
+%include "../include/pylithtypes.i"
 
 // Numpy interface stuff
 %{
@@ -52,6 +53,7 @@
 %}
 
 // Interfaces
+%include "pylith_general.i"
 %include "EventLogger.i"
 %include "TestArray.i"
 

Modified: short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -133,9 +133,23 @@
     """
     Initialize C++ quadrature object.
     """
-    ModuleMeshQuadrature.initialize(self, cell.basis, cell.basisDeriv,
-                                    cell.quadPts, cell.quadWts,
-                                    cell.geometry.spaceDim())
+    import numpy
+    from pylith.utils.utils import sizeofPylithScalar
+    size = sizeofPylithScalar()
+    if 8 == size:
+        ModuleMeshQuadrature.initialize(self, cell.basis,
+                                        cell.basisDeriv,
+                                        cell.quadPts,
+                                        cell.quadWts,
+                                        cell.geometry.spaceDim())
+    elif 4 == size:
+        ModuleMeshQuadrature.initialize(self, numpy.float32(cell.basis),
+                                        numpy.float32(cell.basisDeriv),
+                                        numpy.float32(cell.quadPts),
+                                        numpy.float32(cell.quadWts),
+                                        cell.geometry.spaceDim())
+    else:
+        raise ValueError("Unknown size for PylithScalar")
     return
 
 
@@ -165,9 +179,23 @@
     """
     Initialize C++ quadrature object.
     """
-    ModuleSubMeshQuadrature.initialize(self, cell.basis, cell.basisDeriv,
-                                       cell.quadPts, cell.quadWts,
-                                       cell.geometry.spaceDim())
+    import numpy
+    from pylith.utils.utils import sizeofPylithScalar
+    size = sizeofPylithScalar()
+    if 8 == size:
+        ModuleSubMeshQuadrature.initialize(self, cell.basis,
+                                           cell.basisDeriv,
+                                           cell.quadPts,
+                                           cell.quadWts,
+                                           cell.geometry.spaceDim())
+    elif 4 == size:
+        ModuleSubMeshQuadrature.initialize(self, numpy.float32(cell.basis),
+                                           numpy.float32(cell.basisDeriv),
+                                           numpy.float32(cell.quadPts),
+                                           numpy.float32(cell.quadWts),
+                                           cell.geometry.spaceDim())
+    else:
+        raise ValueError("Unknown size for PylithScalar")
     return
 
 

Modified: short/3D/PyLith/trunk/pylith/utils/testarray.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/testarray.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/pylith/utils/testarray.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -18,7 +18,7 @@
 
 import numpy
 
-def test_double(obj, valuesE, values):
+def test_scalararray(obj, valuesE, values, places=6):
     """
     Check whether arrays containing double values match.
 
@@ -36,9 +36,9 @@
     for (vE, v) in zip(numpy.reshape(valuesE, -1),
                        numpy.reshape(values, -1)):
         if vE == 0.0:
-            obj.assertAlmostEqual(v, vE, 6)
+            obj.assertAlmostEqual(v, vE, places)
         else:
-            obj.assertAlmostEqual(1.0, v/vE, 6)
+            obj.assertAlmostEqual(1.0, v/vE, places)
 
     return
 

Copied: short/3D/PyLith/trunk/tests/refinefaulttip/Makefile.in (from rev 18690, short/3D/PyLith/trunk/tests/refinefaulttip/Makefile.in)
===================================================================
--- short/3D/PyLith/trunk/tests/refinefaulttip/Makefile.in	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/refinefaulttip/Makefile.in	2011-09-17 18:48:29 UTC (rev 18927)
@@ -0,0 +1,422 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# -*- Makefile -*-
+#
+# ----------------------------------------------------------------------
+#
+# 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-2011 University of California, Davis
+#
+# See COPYING for license information.
+#
+# ----------------------------------------------------------------------
+#
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/refinefaulttip
+DIST_COMMON = $(dist_noinst_DATA) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_pkg_swig.m4 \
+	$(top_srcdir)/m4/cit_cppunit.m4 $(top_srcdir)/m4/cit_cuda.m4 \
+	$(top_srcdir)/m4/cit_funcstring.m4 \
+	$(top_srcdir)/m4/cit_hdf5.m4 $(top_srcdir)/m4/cit_mpi.m4 \
+	$(top_srcdir)/m4/cit_netcdf.m4 $(top_srcdir)/m4/cit_numpy.m4 \
+	$(top_srcdir)/m4/cit_petsc.m4 $(top_srcdir)/m4/cit_proj4.m4 \
+	$(top_srcdir)/m4/cit_python.m4 \
+	$(top_srcdir)/m4/cit_spatialdata.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/portinfo
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DATA = $(dist_noinst_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NUMPY_INCDIR = @NUMPY_INCDIR@
+NVCC = @NVCC@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PETSC_ARCH = @PETSC_ARCH@
+PETSC_CC = @PETSC_CC@
+PETSC_CC_INCLUDES = @PETSC_CC_INCLUDES@
+PETSC_CXX = @PETSC_CXX@
+PETSC_CXX_INCLUDE = @PETSC_CXX_INCLUDE@
+PETSC_CXX_LIB = @PETSC_CXX_LIB@
+PETSC_DIR = @PETSC_DIR@
+PETSC_FC = @PETSC_FC@
+PETSC_FC_INCLUDES = @PETSC_FC_INCLUDES@
+PETSC_FORTRAN_LIB = @PETSC_FORTRAN_LIB@
+PETSC_LIB = @PETSC_LIB@
+PETSC_MPI_INCLUDE = @PETSC_MPI_INCLUDE@
+PETSC_MPI_LIB = @PETSC_MPI_LIB@
+PETSC_SIEVE_FLAGS = @PETSC_SIEVE_FLAGS@
+PETSC_VERSION_MAJOR = @PETSC_VERSION_MAJOR@
+PETSC_VERSION_MINOR = @PETSC_VERSION_MINOR@
+PETSC_VERSION_SUBMINOR = @PETSC_VERSION_SUBMINOR@
+PYLITH_SWIG_CPPFLAGS = @PYLITH_SWIG_CPPFLAGS@
+PYTHON = @PYTHON@
+PYTHONPATH = @PYTHONPATH@
+PYTHON_BLDLIBRARY = @PYTHON_BLDLIBRARY@
+PYTHON_EGG_CFLAGS = @PYTHON_EGG_CFLAGS@
+PYTHON_EGG_CPPFLAGS = @PYTHON_EGG_CPPFLAGS@
+PYTHON_EGG_LDFLAGS = @PYTHON_EGG_LDFLAGS@
+PYTHON_EGG_LIBS = @PYTHON_EGG_LIBS@
+PYTHON_EGG_PYXFLAGS = @PYTHON_EGG_PYXFLAGS@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCDIR = @PYTHON_INCDIR@
+PYTHON_LA_LDFLAGS = @PYTHON_LA_LDFLAGS@
+PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
+PYTHON_LDLAST = @PYTHON_LDLAST@
+PYTHON_LDLIBRARY = @PYTHON_LDLIBRARY@
+PYTHON_LIBDIR = @PYTHON_LIBDIR@
+PYTHON_LIBP = @PYTHON_LIBP@
+PYTHON_LIBPL = @PYTHON_LIBPL@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LINKFORSHARED = @PYTHON_LINKFORSHARED@
+PYTHON_MODLIBS = @PYTHON_MODLIBS@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_SYSLIBS = @PYTHON_SYSLIBS@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SWIG = @SWIG@
+SWIG_LIB = @SWIG_LIB@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+have_doxygen = @have_doxygen@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_noinst_DATA = \
+	tri3.cfg \
+	tri3.mesh \
+	quad4.cfg \
+	quad4.mesh \
+	tet4.cfg \
+	tet4.mesh \
+	hex8.cfg \
+	hex8.mesh
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  tests/refinefaulttip/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign  tests/refinefaulttip/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# End of file 
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -138,13 +138,13 @@
   // Check damping constants
   const int numQuadPts = _data->numQuadPts;
   const int fiberDim = numQuadPts * spaceDim;
-  double_array dampersCell(fiberDim);
+  scalar_array dampersCell(fiberDim);
   int index = 0;
   CPPUNIT_ASSERT(0 != bc._parameters);
   const ALE::Obj<SubRealUniformSection>& dampersSection = 
     bc._parameters->section();
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for(SieveSubMesh::label_sequence::iterator c_iter = cells->begin();
       c_iter != cells->end();
       ++c_iter) {
@@ -152,7 +152,7 @@
 				  &dampersCell[0], dampersCell.size());
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
       for (int iDim =0; iDim < spaceDim; ++iDim) {
-	const double dampersCellData = _data->dampingConsts[index];
+	const PylithScalar dampersCellData = _data->dampingConsts[index];
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
 				     dampersCell[iQuad*spaceDim+iDim]/dampersCellData,
 				     tolerance);
@@ -177,27 +177,27 @@
   const ALE::Obj<SieveSubMesh>& submesh = boundaryMesh.sieveMesh();
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 0.0;
+  const PylithScalar t = 0.0;
   bc.integrateResidual(residual, t, &fields);
 
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CPPUNIT_ASSERT(!sieveMesh->depthStratum(0).isNull());
 
-  const double* valsE = _data->valsResidual;
+  const PylithScalar* valsE = _data->valsResidual;
   const int totalNumVertices = sieveMesh->depthStratum(0)->size();
   const int sizeE = _data->spaceDim * totalNumVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
 
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
   //residual->view("RESIDUAL");
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -229,14 +229,14 @@
 
   topology::Jacobian jacobian(solution);
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   bc.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, bc.needNewJacobian());
   jacobian.assemble("final_assembly");
 
   CPPUNIT_ASSERT(!sieveMesh->depthStratum(0).isNull());
 
-  const double* valsE = _data->valsJacobian;
+  const PylithScalar* valsE = _data->valsJacobian;
   const int totalNumVertices = sieveMesh->depthStratum(0)->size();
   const int nrowsE = totalNumVertices * _data->spaceDim;
   const int ncolsE = totalNumVertices * _data->spaceDim;
@@ -253,7 +253,7 @@
   MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
   MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -269,7 +269,7 @@
       std::cout << "  iRow: " << iRow << ", iCol: " << iCol << ", value: " << vals[i] << ", valueE: " << valsE[i] << std::endl;
 #endif
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int index = ncols*iRow+iCol;
@@ -311,20 +311,20 @@
   const ALE::Obj<RealSection>& solutionSection = solution.section();
   CPPUNIT_ASSERT(!solutionSection.isNull());
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   bc.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, bc.needNewJacobian());
   jacobian.complete();
 
-  const double* valsMatrixE = _data->valsJacobian;
+  const PylithScalar* valsMatrixE = _data->valsJacobian;
   const int totalNumVertices = sieveMesh->depthStratum(0)->size();
   const int sizeE = totalNumVertices * _data->spaceDim;
-  double_array valsE(sizeE);
+  scalar_array valsE(sizeE);
   const int spaceDim = _data->spaceDim;
   for (int iVertex=0; iVertex < totalNumVertices; ++iVertex)
     for (int iDim=0; iDim < spaceDim; ++iDim) {
       const int indexRow = (iVertex*spaceDim+iDim)*totalNumVertices*spaceDim;
-      double value = 0.0;
+      PylithScalar value = 0.0;
       for (int jVertex=0; jVertex < totalNumVertices; ++jVertex)
 	value += valsMatrixE[indexRow + jVertex*spaceDim+iDim];
       valsE[iVertex*spaceDim+iDim] = value;
@@ -343,11 +343,11 @@
 
   const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
   CPPUNIT_ASSERT(!jacobianSection.isNull());
-  const double* vals = jacobianSection->restrictSpace();
+  const PylithScalar* vals = jacobianSection->restrictSpace();
   const int size = jacobianSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -445,8 +445,8 @@
     CPPUNIT_ASSERT(!velSection.isNull());
     const int offset = numMeshCells;
     const int spaceDim = _data->spaceDim;
-    const double dt = _data->dt;
-    double_array velVertex(spaceDim);
+    const PylithScalar dt = _data->dt;
+    scalar_array velVertex(spaceDim);
     for (int iVertex=0; iVertex < totalNumVertices; ++iVertex) {
       dispTIncrSection->updatePoint(iVertex+offset, 
 				    &_data->fieldTIncr[iVertex*spaceDim]);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBC.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBC.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBC.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -102,12 +102,12 @@
     const int initialFiberDim = bc._parameters->sectionFiberDim("initial");
     CPPUNIT_ASSERT_EQUAL(numFixedDOF, initialFiberDim);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < numPoints; ++i) {
       const int p_value = _data->constrainedPoints[i]+offset;
       CPPUNIT_ASSERT_EQUAL(parametersFiberDim, 
 			   parametersSection->getFiberDimension(p_value));
-      const double* parametersVertex = 
+      const PylithScalar* parametersVertex = 
 	parametersSection->restrictPoint(p_value);
       CPPUNIT_ASSERT(parametersVertex);
       for (int iDOF=0; iDOF < numFixedDOF; ++iDOF) 
@@ -125,7 +125,7 @@
       const int p_value = _data->constrainedPoints[i]+offset;
       CPPUNIT_ASSERT_EQUAL(parametersFiberDim, 
 			   parametersSection->getFiberDimension(p_value));
-      const double* parametersVertex = 
+      const PylithScalar* parametersVertex = 
 	parametersSection->restrictPoint(p_value);
       CPPUNIT_ASSERT(parametersVertex);
       for (int iDOF=0; iDOF < numFixedDOF; ++iDOF) 
@@ -324,7 +324,7 @@
   field.allocate();
   bc.setConstraints(field);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   // All values should be zero.
   field.zero();
@@ -339,7 +339,7 @@
   } // for
 
   // Only unconstrained values should be zero.
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   bc.setField(t, field);
 
   // Create list of unconstrained DOF at constrained DOF
@@ -380,7 +380,7 @@
       // check constrained DOF
       for (int iDOF=0; iDOF < numFixedDOF; ++iDOF) {
 	const int index = iConstraint * numFixedDOF + iDOF;
-	const double valueE = (t > _data->tRef) ?
+	const PylithScalar valueE = (t > _data->tRef) ?
 	  _data->valuesInitial[index] + (t-_data->tRef)*_data->valueRate :
 	  _data->valuesInitial[index];
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(valueE, values[_data->fixedDOF[iDOF]],
@@ -418,7 +418,7 @@
   field.allocate();
   bc.setConstraints(field);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   // All values should be zero.
   field.zero();
@@ -433,8 +433,8 @@
   } // for
 
   // Only unconstrained values should be zero.
-  const double t0 = 1.0;
-  const double t1 = 2.0;
+  const PylithScalar t0 = 1.0;
+  const PylithScalar t1 = 2.0;
   bc.setFieldIncr(t0, t1, field);
 
   // Create list of unconstrained DOF at constrained DOF
@@ -475,7 +475,7 @@
       // check constrained DOF
       for (int iDOF=0; iDOF < numFixedDOF; ++iDOF) {
 	const int index = iConstraint * numFixedDOF + iDOF;
-	const double valueE = (t0 > _data->tRef) ? (t1-t0)*_data->valueRate :
+	const PylithScalar valueE = (t0 > _data->tRef) ? (t1-t0)*_data->valueRate :
 	  (t1 > _data->tRef) ? (t1-_data->tRef)*_data->valueRate : 0.0;
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(valueE, values[_data->fixedDOF[iDOF]],
 				     tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBCMulti.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBCMulti.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBCMulti.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -173,7 +173,7 @@
   bcB.setConstraints(field);
   bcC.setConstraints(field);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   // All values should be zero.
   field.zero();
@@ -188,7 +188,7 @@
 
   // Only unconstrained values should be zero.
   // Expected values set in _data->field
-  const double t = 10.0;
+  const PylithScalar t = 10.0;
   bcA.setField(t, field);
   bcB.setField(t, field);
   bcC.setField(t, field);
@@ -239,7 +239,7 @@
   bcB.setConstraints(field);
   bcC.setConstraints(field);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   // All values should be zero.
   field.zero();
@@ -254,8 +254,8 @@
 
   // Only unconstrained values should be zero.
   // Expected values set in _data->field
-  const double t0 = 10.0;
-  const double t1 = 14.0;
+  const PylithScalar t0 = 10.0;
+  const PylithScalar t1 = 14.0;
   bcA.setFieldIncr(t0, t1, field);
   bcB.setFieldIncr(t0, t1, field);
   bcC.setFieldIncr(t0, t1, field);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -56,51 +56,51 @@
 namespace pylith {
   namespace bc {
     namespace _TestNeumann {
-      const double pressureScale = 4.0;
-      const double lengthScale = 1.0; // Mesh coordinates have scale=1.0
-      const double timeScale = 0.5;
+      const PylithScalar pressureScale = 4.0;
+      const PylithScalar lengthScale = 1.0; // Mesh coordinates have scale=1.0
+      const PylithScalar timeScale = 0.5;
       const int ncells = 2;
       const int numQuadPts = 2;
       const int spaceDim = 2;
 
-      const double initial[ncells*numQuadPts*spaceDim] = {
+      const PylithScalar initial[ncells*numQuadPts*spaceDim] = {
 	0.3,  0.4,    0.7,  0.6,
 	1.3,  1.4,    1.7,  1.6,
       };
-      const double rate[ncells*numQuadPts*spaceDim] = {
+      const PylithScalar rate[ncells*numQuadPts*spaceDim] = {
 	-0.2,  -0.1,   0.4, 0.3,
 	-1.2,  -1.1,   1.4, 1.3,
       };
-      const double rateTime[ncells*numQuadPts] = {
+      const PylithScalar rateTime[ncells*numQuadPts] = {
 	0.5,   0.8,
 	0.6,   0.9,
       };
-      const double change[ncells*numQuadPts*spaceDim] = {
+      const PylithScalar change[ncells*numQuadPts*spaceDim] = {
 	1.3,  1.4,    1.7,  1.6,
 	2.3,  2.4,    2.7,  2.6,
       };
-      const double changeTime[ncells*numQuadPts] = {
+      const PylithScalar changeTime[ncells*numQuadPts] = {
 	2.0,  2.4,
 	2.1,  2.5,
       };
 
-      const double tValue = 2.2;
-      const double valuesRate[ncells*numQuadPts*spaceDim] = {
+      const PylithScalar tValue = 2.2;
+      const PylithScalar valuesRate[ncells*numQuadPts*spaceDim] = {
 	-0.34,  -0.17,  0.56,   0.42,
 	-1.92,  -1.76,  1.82,   1.69,
       };
-      const double valuesChange[ncells*numQuadPts*spaceDim] = {
+      const PylithScalar valuesChange[ncells*numQuadPts*spaceDim] = {
 	1.3,  1.4,   0.0,  0.0,
 	2.3,  2.4,   0.0,  0.0,
       };
-      const double valuesChangeTH[ncells*numQuadPts*spaceDim] = {
+      const PylithScalar valuesChangeTH[ncells*numQuadPts*spaceDim] = {
 	1.3*0.98,  1.4*0.98,    0.0,  0.0,
 	2.3*0.99,  2.4*0.99,    0.0,  0.0,
       };
 
       // Check values in section against expected values.
       static
-      void _checkValues(const double* valuesE,
+      void _checkValues(const PylithScalar* valuesE,
 			const int fiberDimE,
 			const topology::Field<topology::SubMesh>& field);
     } // _TestNeumann
@@ -196,7 +196,7 @@
   // Check traction values
   const int numQuadPts = _data->numQuadPts;
   const int fiberDim = numQuadPts * spaceDim;
-  double_array tractionsCell(fiberDim);
+  scalar_array tractionsCell(fiberDim);
   int index = 0;
   CPPUNIT_ASSERT(0 != bc._parameters);
   const ALE::Obj<SubRealUniformSection>& parametersSection =
@@ -206,19 +206,19 @@
   const int initialIndex = bc._parameters->sectionIndex("initial");
   const int initialFiberDim = bc._parameters->sectionFiberDim("initial");
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for(SieveSubMesh::label_sequence::iterator c_iter = cells->begin();
       c_iter != cells->end();
       ++c_iter) {
     CPPUNIT_ASSERT_EQUAL(parametersFiberDim,
 			 parametersSection->getFiberDimension(*c_iter));
-    const double* parametersCell = parametersSection->restrictPoint(*c_iter);
+    const PylithScalar* parametersCell = parametersSection->restrictPoint(*c_iter);
     CPPUNIT_ASSERT(parametersCell);
     CPPUNIT_ASSERT(initialIndex + initialFiberDim <= parametersFiberDim);
-    const double* tractionsCell = &parametersCell[initialIndex];
+    const PylithScalar* tractionsCell = &parametersCell[initialIndex];
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
       for (int iDim =0; iDim < spaceDim; ++iDim) {
-	const double tractionsCellData = _data->tractionsCell[index];
+	const PylithScalar tractionsCellData = _data->tractionsCell[index];
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(tractionsCellData,
 				     tractionsCell[iQuad*spaceDim+iDim],
 				     tolerance);
@@ -241,27 +241,27 @@
   _initialize(&mesh, &bc, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 0.0;
+  const PylithScalar t = 0.0;
   bc.integrateResidual(residual, t, &fields);
 
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CPPUNIT_ASSERT(!sieveMesh->depthStratum(0).isNull());
 
-  const double* valsE = _data->valsResidual;
+  const PylithScalar* valsE = _data->valsResidual;
   const int totalNumVertices = sieveMesh->depthStratum(0)->size();
   const int sizeE = _data->spaceDim * totalNumVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
 
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
   //residual.view("RESIDUAL");
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   // std::cout << "computed residuals: " << std::endl;
   for (int i=0; i < size; ++i)
     // std::cout << "  " << vals[i] << std::endl;
@@ -311,11 +311,11 @@
   bc.dbChange(&dbChange);
   bc.dbTimeHistory(&th);
 
-  const double pressureScale = _TestNeumann::pressureScale;
-  const double timeScale = _TestNeumann::timeScale;
+  const PylithScalar pressureScale = _TestNeumann::pressureScale;
+  const PylithScalar timeScale = _TestNeumann::timeScale;
   bc._queryDatabases();
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int spaceDim = _TestNeumann::spaceDim;
   const int numQuadPts = _TestNeumann::numQuadPts;
   CPPUNIT_ASSERT(0 != bc._parameters);
@@ -389,13 +389,13 @@
   bc.dbRate(&dbRate);
   bc.dbChange(&dbChange);
 
-  const double pressureScale = _TestNeumann::pressureScale;
-  const double timeScale = _TestNeumann::timeScale;
+  const PylithScalar pressureScale = _TestNeumann::pressureScale;
+  const PylithScalar timeScale = _TestNeumann::timeScale;
   bc._queryDatabases();
   const double upDir[3] = { 0.0, 0.0, 1.0 };
   bc._paramsLocalToGlobal(upDir);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int spaceDim = _TestNeumann::spaceDim;
   const int numQuadPts = _TestNeumann::numQuadPts;
   CPPUNIT_ASSERT(0 != bc._parameters);
@@ -403,7 +403,7 @@
   // Orientation for quad4 is +x, -y for shear and normal tractions.
   CPPUNIT_ASSERT_EQUAL(2, spaceDim); 
   const int ncells = _TestNeumann::ncells;
-  double_array valuesE(ncells*numQuadPts*spaceDim);
+  scalar_array valuesE(ncells*numQuadPts*spaceDim);
   
   // Check initial values.
   for (int i=0; i < valuesE.size(); i+=spaceDim) {
@@ -457,11 +457,11 @@
 
   bc.dbInitial(&dbInitial);
 
-  const double timeScale = _TestNeumann::timeScale;
+  const PylithScalar timeScale = _TestNeumann::timeScale;
   bc._queryDatabases();
   bc._calculateValue(_TestNeumann::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int spaceDim = _TestNeumann::spaceDim;
   const int numQuadPts = _TestNeumann::numQuadPts;
   CPPUNIT_ASSERT(0 != bc._parameters);
@@ -495,11 +495,11 @@
 
   bc.dbRate(&dbRate);
 
-  const double timeScale = _TestNeumann::timeScale;
+  const PylithScalar timeScale = _TestNeumann::timeScale;
   bc._queryDatabases();
   bc._calculateValue(_TestNeumann::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int spaceDim = _TestNeumann::spaceDim;
   const int numQuadPts = _TestNeumann::numQuadPts;
   CPPUNIT_ASSERT(0 != bc._parameters);
@@ -533,11 +533,11 @@
 
   bc.dbChange(&dbChange);
 
-  const double timeScale = _TestNeumann::timeScale;
+  const PylithScalar timeScale = _TestNeumann::timeScale;
   bc._queryDatabases();
   bc._calculateValue(_TestNeumann::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int spaceDim = _TestNeumann::spaceDim;
   const int numQuadPts = _TestNeumann::numQuadPts;
   CPPUNIT_ASSERT(0 != bc._parameters);
@@ -576,11 +576,11 @@
   bc.dbChange(&dbChange);
   bc.dbTimeHistory(&th);
 
-  const double timeScale = _TestNeumann::timeScale;
+  const PylithScalar timeScale = _TestNeumann::timeScale;
   bc._queryDatabases();
   bc._calculateValue(_TestNeumann::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int spaceDim = _TestNeumann::spaceDim;
   const int numQuadPts = _TestNeumann::numQuadPts;
   CPPUNIT_ASSERT(0 != bc._parameters);
@@ -633,18 +633,18 @@
   bc.dbChange(&dbChange);
   bc.dbTimeHistory(&th);
 
-  const double timeScale = _TestNeumann::timeScale;
+  const PylithScalar timeScale = _TestNeumann::timeScale;
   bc._queryDatabases();
   bc._calculateValue(_TestNeumann::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int spaceDim = _TestNeumann::spaceDim;
   const int numQuadPts = _TestNeumann::numQuadPts;
   CPPUNIT_ASSERT(0 != bc._parameters);
   
   // Check values.
   const int ncells = _TestNeumann::ncells;
-  double_array valuesE(ncells*numQuadPts*spaceDim);
+  scalar_array valuesE(ncells*numQuadPts*spaceDim);
   for (int i=0; i < valuesE.size(); ++i)
     valuesE[i] = 
       _TestNeumann::initial[i] +
@@ -752,7 +752,7 @@
 // ----------------------------------------------------------------------
 // Check values in section against expected values.
 void
-pylith::bc::_TestNeumann::_checkValues(const double* valuesE,
+pylith::bc::_TestNeumann::_checkValues(const PylithScalar* valuesE,
 					   const int fiberDimE,
 					   const topology::Field<topology::SubMesh>& field)
 { // _checkValues
@@ -766,14 +766,14 @@
   const ALE::Obj<SieveSubMesh::label_sequence>& cells = 
     submesh->heightStratum(1);
 
-  const double scale = field.scale();
+  const PylithScalar scale = field.scale();
 
   const size_t ncells = _TestNeumann::ncells;
   CPPUNIT_ASSERT_EQUAL(ncells, cells->size());
 
   // Check values associated with BC.
   int icell = 0;
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for(SieveSubMesh::label_sequence::iterator c_iter = cells->begin();
       c_iter != cells->end();
       ++c_iter, ++icell) {
@@ -781,7 +781,7 @@
     const int fiberDim = section->getFiberDimension(*c_iter);
     CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
     
-    const double* values = section->restrictPoint(*c_iter);
+    const PylithScalar* values = section->restrictPoint(*c_iter);
     for (int iDim=0; iDim < fiberDimE; ++iDim)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(valuesE[icell*fiberDimE+iDim]/scale,
 				   values[iDim], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestPointForce.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestPointForce.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestPointForce.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -113,7 +113,7 @@
   CPPUNIT_ASSERT(!parametersSection.isNull());
   const int parametersFiberDim = bc._parameters->fiberDim();
   
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   // Check values
   const int initialIndex = bc._parameters->sectionIndex("initial");
@@ -125,7 +125,7 @@
 
     CPPUNIT_ASSERT_EQUAL(parametersFiberDim, 
 			 parametersSection->getFiberDimension(p_force));
-    const double* parametersVertex = parametersSection->restrictPoint(p_force);
+    const PylithScalar* parametersVertex = parametersSection->restrictPoint(p_force);
     CPPUNIT_ASSERT(parametersVertex);
 
     for (int iDOF=0; iDOF < numForceDOF; ++iDOF) 
@@ -144,7 +144,7 @@
 
     CPPUNIT_ASSERT_EQUAL(parametersFiberDim, 
 			 parametersSection->getFiberDimension(p_force));
-    const double* parametersVertex = parametersSection->restrictPoint(p_force);
+    const PylithScalar* parametersVertex = parametersSection->restrictPoint(p_force);
     CPPUNIT_ASSERT(parametersVertex);
 
     for (int iDOF=0; iDOF < numForceDOF; ++iDOF) 
@@ -173,26 +173,26 @@
 
   topology::SolutionFields fields(mesh);
 
-  const double t = _data->tResidual;
+  const PylithScalar t = _data->tResidual;
   bc.integrateResidual(residual, t, &fields);
 
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CPPUNIT_ASSERT(!sieveMesh->depthStratum(0).isNull());
 
-  const double* valsE = _data->residual;
+  const PylithScalar* valsE = _data->residual;
   const int totalNumVertices = sieveMesh->depthStratum(0)->size();
   const int sizeE = spaceDim * totalNumVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
   //residual.view("RESIDUAL");
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestTimeDependentPoints.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestTimeDependentPoints.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestTimeDependentPoints.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,9 +43,9 @@
 namespace pylith {
   namespace bc {
     namespace _TestTimeDependentPoints {
-      const double pressureScale = 4.0;
-      const double lengthScale = 1.5;
-      const double timeScale = 0.5;
+      const PylithScalar pressureScale = 4.0;
+      const PylithScalar lengthScale = 1.5;
+      const PylithScalar timeScale = 0.5;
       const int npointsIn = 2;
       const int pointsIn[npointsIn] = { 3, 5, };
       const int npointsOut = 2;
@@ -53,64 +53,64 @@
 
       const int numBCDOF = 2;
       const int bcDOF[numBCDOF] = { 1, 0 };
-      const double initial[npointsIn*numBCDOF] = {
+      const PylithScalar initial[npointsIn*numBCDOF] = {
 	0.3,  0.4,
 	0.7,  0.6,
       };
-      const double rate[npointsIn*numBCDOF] = {
+      const PylithScalar rate[npointsIn*numBCDOF] = {
 	-0.2,  -0.1,
 	 0.4,   0.3,
       };
-      const double rateTime[npointsIn] = {
+      const PylithScalar rateTime[npointsIn] = {
 	0.5,
 	0.8,
       };
-      const double change[npointsIn*numBCDOF] = {
+      const PylithScalar change[npointsIn*numBCDOF] = {
 	1.3,  1.4,
 	1.7,  1.6,
       };
-      const double changeTime[npointsIn] = {
+      const PylithScalar changeTime[npointsIn] = {
 	2.0,
 	2.4,
       };
 
-      const double tValue = 2.2;
-      const double tValue2 = 2.6;
-      const double valuesRate[npointsIn*numBCDOF] = {
+      const PylithScalar tValue = 2.2;
+      const PylithScalar tValue2 = 2.6;
+      const PylithScalar valuesRate[npointsIn*numBCDOF] = {
 	-0.34,  -0.17,
 	 0.56,   0.42,
       };
-      const double valuesChange[npointsIn*numBCDOF] = {
+      const PylithScalar valuesChange[npointsIn*numBCDOF] = {
 	1.3,  1.4,
 	0.0,  0.0,
       };
-      const double valuesChangeTH[npointsIn*numBCDOF] = {
+      const PylithScalar valuesChangeTH[npointsIn*numBCDOF] = {
 	1.3*0.98,  1.4*0.98,
 	0.0,  0.0,
       };
-      const double valuesIncrInitial[npointsIn*numBCDOF] = {
+      const PylithScalar valuesIncrInitial[npointsIn*numBCDOF] = {
 	0.0,  0.0,
 	0.0,  0.0,
       };
-      const double valuesIncrRate[npointsIn*numBCDOF] = {
+      const PylithScalar valuesIncrRate[npointsIn*numBCDOF] = {
 	-0.08,  -0.04,
 	 0.16,   0.12,
       };
-      const double valuesIncrChange[npointsIn*numBCDOF] = {
+      const PylithScalar valuesIncrChange[npointsIn*numBCDOF] = {
 	0.0,  0.0,
 	1.7,  1.6,
       };
-      const double valuesIncrChangeTH[npointsIn*numBCDOF] = {
+      const PylithScalar valuesIncrChangeTH[npointsIn*numBCDOF] = {
 	1.3*-0.04,  1.4*-0.04,
 	1.7*0.98,  1.6*0.98,
       };
 
       // Check values in section against expected values.
       static
-      void _checkValues(const double* valuesE,
+      void _checkValues(const PylithScalar* valuesE,
 			const int fiberDimE,
 			const ALE::Obj<RealSection>& section,
-			const double scale);
+			const PylithScalar scale);
     } // _TestTimeDependentPoints
   } // bc
 } // pylith
@@ -190,25 +190,25 @@
   CPPUNIT_ASSERT(_mesh);
   CPPUNIT_ASSERT(_bc);
 
-  spatialdata::spatialdb::SimpleDB dbInitial("TestTimeDependentPoints _queryDatabases");
+  spatialdata::spatialdb::SimpleDB dbInitial("TestTimeDependentPoints _queryDatabases initial");
   spatialdata::spatialdb::SimpleIOAscii dbInitialIO;
   dbInitialIO.filename("data/tri3_force.spatialdb");
   dbInitial.ioHandler(&dbInitialIO);
   dbInitial.queryType(spatialdata::spatialdb::SimpleDB::NEAREST);
 
-  spatialdata::spatialdb::SimpleDB dbRate("TestTimeDependentPoints _queryDatabases");
+  spatialdata::spatialdb::SimpleDB dbRate("TestTimeDependentPoints _queryDatabases rate");
   spatialdata::spatialdb::SimpleIOAscii dbRateIO;
   dbRateIO.filename("data/tri3_force_rate.spatialdb");
   dbRate.ioHandler(&dbRateIO);
   dbRate.queryType(spatialdata::spatialdb::SimpleDB::NEAREST);
 
-  spatialdata::spatialdb::SimpleDB dbChange("TestTimeDependentPoints _queryDatabases");
+  spatialdata::spatialdb::SimpleDB dbChange("TestTimeDependentPoints _queryDatabases change");
   spatialdata::spatialdb::SimpleIOAscii dbChangeIO;
   dbChangeIO.filename("data/tri3_force_change.spatialdb");
   dbChange.ioHandler(&dbChangeIO);
   dbChange.queryType(spatialdata::spatialdb::SimpleDB::NEAREST);
 
-  spatialdata::spatialdb::TimeHistory th("TestTimeDependentPoints _queryDatabases");
+  spatialdata::spatialdb::TimeHistory th("TestTimeDependentPoints _queryDatabases time history");
   th.filename("data/tri3_force.timedb");
 
   _bc->dbInitial(&dbInitial);
@@ -216,14 +216,14 @@
   _bc->dbChange(&dbChange);
   _bc->dbTimeHistory(&th);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -280,15 +280,15 @@
 
   _bc->dbInitial(&dbInitial);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
   _bc->_calculateValue(_TestTimeDependentPoints::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -316,15 +316,15 @@
 
   _bc->dbRate(&dbRate);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
   _bc->_calculateValue(_TestTimeDependentPoints::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -352,15 +352,15 @@
 
   _bc->dbChange(&dbChange);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
   _bc->_calculateValue(_TestTimeDependentPoints::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -391,15 +391,15 @@
   _bc->dbChange(&dbChange);
   _bc->dbTimeHistory(&th);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
   _bc->_calculateValue(_TestTimeDependentPoints::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -445,21 +445,21 @@
   _bc->dbChange(&dbChange);
   _bc->dbTimeHistory(&th);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
   _bc->_calculateValue(_TestTimeDependentPoints::tValue/timeScale);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
   // Check values.
   const int npoints = _TestTimeDependentPoints::npointsIn;
-  double_array valuesE(npoints*numBCDOF);
+  scalar_array valuesE(npoints*numBCDOF);
   for (int i=0; i < valuesE.size(); ++i)
     valuesE[i] = 
       _TestTimeDependentPoints::initial[i] +
@@ -489,17 +489,17 @@
 
   _bc->dbInitial(&dbInitial);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
-  const double t0 = _TestTimeDependentPoints::tValue / timeScale;
-  const double t1 = _TestTimeDependentPoints::tValue2 / timeScale;
+  const PylithScalar t0 = _TestTimeDependentPoints::tValue / timeScale;
+  const PylithScalar t1 = _TestTimeDependentPoints::tValue2 / timeScale;
   _bc->_calculateValueIncr(t0, t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -527,17 +527,17 @@
 
   _bc->dbRate(&dbRate);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
-  const double t0 = _TestTimeDependentPoints::tValue / timeScale;
-  const double t1 = _TestTimeDependentPoints::tValue2 / timeScale;
+  const PylithScalar t0 = _TestTimeDependentPoints::tValue / timeScale;
+  const PylithScalar t1 = _TestTimeDependentPoints::tValue2 / timeScale;
   _bc->_calculateValueIncr(t0, t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -565,17 +565,17 @@
 
   _bc->dbChange(&dbChange);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
-  const double t0 = _TestTimeDependentPoints::tValue / timeScale;
-  const double t1 = _TestTimeDependentPoints::tValue2 / timeScale;
+  const PylithScalar t0 = _TestTimeDependentPoints::tValue / timeScale;
+  const PylithScalar t1 = _TestTimeDependentPoints::tValue2 / timeScale;
   _bc->_calculateValueIncr(t0, t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -606,17 +606,17 @@
   _bc->dbChange(&dbChange);
   _bc->dbTimeHistory(&th);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
-  const double t0 = _TestTimeDependentPoints::tValue / timeScale;
-  const double t1 = _TestTimeDependentPoints::tValue2 / timeScale;
+  const PylithScalar t0 = _TestTimeDependentPoints::tValue / timeScale;
+  const PylithScalar t1 = _TestTimeDependentPoints::tValue2 / timeScale;
   _bc->_calculateValueIncr(t0, t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
@@ -662,23 +662,23 @@
   _bc->dbChange(&dbChange);
   _bc->dbTimeHistory(&th);
 
-  const double pressureScale = _TestTimeDependentPoints::pressureScale;
-  const double lengthScale = _TestTimeDependentPoints::lengthScale;
-  const double timeScale = _TestTimeDependentPoints::timeScale;
-  const double forceScale = pressureScale * lengthScale * lengthScale;
+  const PylithScalar pressureScale = _TestTimeDependentPoints::pressureScale;
+  const PylithScalar lengthScale = _TestTimeDependentPoints::lengthScale;
+  const PylithScalar timeScale = _TestTimeDependentPoints::timeScale;
+  const PylithScalar forceScale = pressureScale * lengthScale * lengthScale;
   const char* fieldName = "force";
   _bc->_queryDatabases(*_mesh, forceScale, fieldName);
-  const double t0 = _TestTimeDependentPoints::tValue / timeScale;
-  const double t1 = _TestTimeDependentPoints::tValue2 / timeScale;
+  const PylithScalar t0 = _TestTimeDependentPoints::tValue / timeScale;
+  const PylithScalar t1 = _TestTimeDependentPoints::tValue2 / timeScale;
   _bc->_calculateValueIncr(t0, t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int numBCDOF = _TestTimeDependentPoints::numBCDOF;
   CPPUNIT_ASSERT(_bc->_parameters);
   
   // Check values.
   const int npoints = _TestTimeDependentPoints::npointsIn;
-  double_array valuesE(npoints*numBCDOF);
+  scalar_array valuesE(npoints*numBCDOF);
   for (int i=0; i < valuesE.size(); ++i)
     valuesE[i] = 
       _TestTimeDependentPoints::valuesIncrInitial[i] +
@@ -695,14 +695,14 @@
 // ----------------------------------------------------------------------
 // Check values in section against expected values.
 void
-pylith::bc::_TestTimeDependentPoints::_checkValues(const double* valuesE,
+pylith::bc::_TestTimeDependentPoints::_checkValues(const PylithScalar* valuesE,
 						   const int fiberDimE,
 						   const ALE::Obj<RealSection>& section,
-						   const double scale)
+						   const PylithScalar scale)
 { // _checkValues
   CPPUNIT_ASSERT(!section.isNull());
   
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   // Check values at points associated with BC.
   const int npointsIn = _TestTimeDependentPoints::npointsIn;
@@ -711,7 +711,7 @@
     const int fiberDim = section->getFiberDimension(p_bc);
     CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
 
-    const double* values = section->restrictPoint(p_bc);
+    const PylithScalar* values = section->restrictPoint(p_bc);
     CPPUNIT_ASSERT(values);
     for (int iDim=0; iDim < fiberDimE; ++iDim)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(valuesE[i*fiberDimE+iDim]/scale,

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_bc_absorbingdampersdata_hh)
 #define pylith_bc_absorbingdampersdata_hh
 
+#include "pylith/utils/types.hh" // USES PylithScalar
+
 namespace pylith {
   namespace bc {
      class AbsorbingDampersData;
@@ -46,10 +48,10 @@
   //@{
   int numBasis; ///< Number of basis functions for cell
   int numQuadPts; ///< Number of quadrature points
-  double* quadPts; ///< Coordinates of quad pts in ref cell
-  double* quadWts; ///< Weights of quadrature points
-  double* basis; ///< Basis fns at quadrature points
-  double* basisDerivRef; ///< Derivatives of basis fns at quad pts
+  PylithScalar* quadPts; ///< Coordinates of quad pts in ref cell
+  PylithScalar* quadWts; ///< Weights of quadrature points
+  PylithScalar* basis; ///< Basis fns at quadrature points
+  PylithScalar* basisDerivRef; ///< Derivatives of basis fns at quad pts
   //@}
 
   /// @name Parameter information
@@ -61,10 +63,10 @@
 
   /// @name Input fields
   //@{
-  double dt; ///< Time step
-  double* fieldTIncr; ///< Input increment field for time to to t+dt.
-  double* fieldT; ///< Input field at time t.
-  double* fieldTmdt; ///< Input field at time t-dt.
+  PylithScalar dt; ///< Time step
+  PylithScalar* fieldTIncr; ///< Input increment field for time to to t+dt.
+  PylithScalar* fieldT; ///< Input field at time t.
+  PylithScalar* fieldTmdt; ///< Input field at time t-dt.
   //@}
 
   /// @name Boundary mesh information
@@ -79,9 +81,9 @@
 
   /// @name Calculated values.
   //@{
-  double* dampingConsts; ///< Expected values from initialization.
-  double* valsResidual; ///< Expected values from residual calculation.
-  double* valsJacobian; ///< Expected values from Jacobian calculation.
+  PylithScalar* dampingConsts; ///< Expected values from initialization.
+  PylithScalar* valsResidual; ///< Expected values from residual calculation.
+  PylithScalar* valsJacobian; ///< Expected values from Jacobian calculation.
   //@}
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,22 +23,22 @@
 
 const int pylith::bc::AbsorbingDampersDataHex8::_numBasis = 4;
 const int pylith::bc::AbsorbingDampersDataHex8::_numQuadPts = 4;
-const double pylith::bc::AbsorbingDampersDataHex8::_quadPts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_quadPts[] = {
   -0.57735027, -0.57735027,
    0.57735027, -0.57735027,
    0.57735027,  0.57735027,
   -0.57735027,  0.57735027,
 };
-const double pylith::bc::AbsorbingDampersDataHex8::_quadWts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_quadWts[] = {
   1.0, 1.0, 1.0, 1.0,
 };
-const double pylith::bc::AbsorbingDampersDataHex8::_basis[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_basis[] = {
   0.62200847,  0.16666667,  0.0446582,   0.16666667,
   0.16666667,  0.62200847,  0.16666667,  0.0446582,
   0.0446582,   0.16666667,  0.62200847,  0.16666667,
   0.16666667,  0.0446582,   0.16666667,  0.62200847,
 };
-const double pylith::bc::AbsorbingDampersDataHex8::_basisDerivRef[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_basisDerivRef[] = {
   -0.39433757, -0.39433757,
    0.39433757, -0.10566243,
    0.10566243,  0.10566243,
@@ -62,8 +62,8 @@
 const int pylith::bc::AbsorbingDampersDataHex8::_id = 2;
 const char* pylith::bc::AbsorbingDampersDataHex8::_label = "bc2";
 
-const double pylith::bc::AbsorbingDampersDataHex8::_dt =   0.25;
-const double pylith::bc::AbsorbingDampersDataHex8::_fieldTmdt[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_dt =   0.25;
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_fieldTmdt[] = {
   1.0,  2.4,  3.0,
   1.1,  2.2,  3.2,
   1.2,  2.0,  3.4,
@@ -77,7 +77,7 @@
   2.0,  0.4,  5.0,
   2.1,  0.2,  5.2,
 };
-const double pylith::bc::AbsorbingDampersDataHex8::_fieldT[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_fieldT[] = {
   1.1,  2.3,  3.2,
   1.3,  2.1,  3.6,
   1.5,  1.9,  4.0,
@@ -91,7 +91,7 @@
   3.1,  0.3,  7.2,
   3.3,  0.1,  7.6,
 };
-const double pylith::bc::AbsorbingDampersDataHex8::_fieldTIncr[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_fieldTIncr[] = {
   1.2,  1.1,  3.4,
   1.5,  1.0,  4.0,
   1.8,  0.9,  4.6,
@@ -117,7 +117,7 @@
 };
 
 
-const double pylith::bc::AbsorbingDampersDataHex8::_dampingConsts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_dampingConsts[] = {
   7.5e+06,  1.25e+07,  7.5e+06,
   7.5e+06,  1.25e+07,  7.5e+06,
   7.5e+06,  1.25e+07,  7.5e+06,
@@ -127,7 +127,7 @@
   7.5e+06,  1.25e+07,  7.5e+06,
   7.5e+06,  1.25e+07,  7.5e+06,
 };
-const double pylith::bc::AbsorbingDampersDataHex8::_valsResidual[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_valsResidual[] = {
    -1.77500004e+07,   -9.16666682e+06,   -4.30000010e+07,
     0.00000000e+00,    0.00000000e+00,    0.00000000e+00,
    -4.35000010e+07,   -1.50000003e+07,   -1.02000002e+08,
@@ -141,7 +141,7 @@
    -3.17500006e+07,   -3.33333343e+06,   -7.10000013e+07,
     0.00000000e+00,    0.00000000e+00,    0.00000000e+00,
 };
-const double pylith::bc::AbsorbingDampersDataHex8::_valsJacobian[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataHex8::_valsJacobian[] = {
   3.33333333e+06, 0.0, 0.0, // 0x
   0.0, 0.0, 0.0,
   1.66666667e+06, 0.0, 0.0, // 2
@@ -582,19 +582,19 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
   label = const_cast<char*>(_label);
 
   dt = _dt;
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
 
   spaceDim = _spaceDim;
   cellDim = _cellDim;
@@ -603,9 +603,9 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  dampingConsts = const_cast<double*>(_dampingConsts);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  dampingConsts = const_cast<PylithScalar*>(_dampingConsts);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::bc::AbsorbingDampersDataHex8::~AbsorbingDampersDataHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,19 +44,19 @@
 
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   static const char* _spatialDBFilename;
   static const int _id;
   static const char* _label;
 
-  static const double _dt;
-  static const double _fieldTIncr[];
-  static const double _fieldT[];
-  static const double _fieldTmdt[];
+  static const PylithScalar _dt;
+  static const PylithScalar _fieldTIncr[];
+  static const PylithScalar _fieldT[];
+  static const PylithScalar _fieldTmdt[];
 
   static const int _spaceDim;
   static const int _cellDim;
@@ -65,9 +65,9 @@
   static const int _numCorners;
   static const int _cells[];
 
-  static const double _dampingConsts[];
-  static const double _valsResidual[];
-  static const double _valsJacobian[];
+  static const PylithScalar _dampingConsts[];
+  static const PylithScalar _valsResidual[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,16 +23,16 @@
 
 const int pylith::bc::AbsorbingDampersDataLine2::_numBasis = 1;
 const int pylith::bc::AbsorbingDampersDataLine2::_numQuadPts = 1;
-const double pylith::bc::AbsorbingDampersDataLine2::_quadPts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_quadPts[] = {
   0.0,
 };
-const double pylith::bc::AbsorbingDampersDataLine2::_quadWts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_quadWts[] = {
   1.0,
 };
-const double pylith::bc::AbsorbingDampersDataLine2::_basis[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_basis[] = {
   1.0,
 };
-const double pylith::bc::AbsorbingDampersDataLine2::_basisDerivRef[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_basisDerivRef[] = {
   1.0,
 };
 
@@ -40,18 +40,18 @@
 const int pylith::bc::AbsorbingDampersDataLine2::_id = 2;
 const char* pylith::bc::AbsorbingDampersDataLine2::_label = "bc0";
 
-const double pylith::bc::AbsorbingDampersDataLine2::_dt =   0.25;
-const double pylith::bc::AbsorbingDampersDataLine2::_fieldTmdt[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_dt =   0.25;
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_fieldTmdt[] = {
   1.0,
   1.1,
   1.2,
 };
-const double pylith::bc::AbsorbingDampersDataLine2::_fieldT[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_fieldT[] = {
   1.1,
   1.3,
   1.5,
 };
-const double pylith::bc::AbsorbingDampersDataLine2::_fieldTIncr[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_fieldTIncr[] = {
   1.2,
   1.5,
   1.8,
@@ -68,16 +68,16 @@
 };
 
 
-const double pylith::bc::AbsorbingDampersDataLine2::_dampingConsts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_dampingConsts[] = {
   12.5e+6,
   17.5e+6,
 };
-const double pylith::bc::AbsorbingDampersDataLine2::_valsResidual[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_valsResidual[] = {
   -12.5e+6*(1.1+1.2-1.0)/0.5,
   0.0,
   -17.5e+6*(1.5+1.8-1.2)/0.5,
 };
-const double pylith::bc::AbsorbingDampersDataLine2::_valsJacobian[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataLine2::_valsJacobian[] = {
   12.5e+6/0.5, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 17.5e+6/0.5,
@@ -89,19 +89,19 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
   label = const_cast<char*>(_label);
 
   dt = _dt;
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
 
   spaceDim = _spaceDim;
   cellDim = _cellDim;
@@ -110,9 +110,9 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  dampingConsts = const_cast<double*>(_dampingConsts);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  dampingConsts = const_cast<PylithScalar*>(_dampingConsts);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::bc::AbsorbingDampersDataLine2::~AbsorbingDampersDataLine2(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,19 +44,19 @@
 
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   static const char* _spatialDBFilename;
   static const int _id;
   static const char* _label;
 
-  static const double _dt;
-  static const double _fieldTIncr[];
-  static const double _fieldT[];
-  static const double _fieldTmdt[];
+  static const PylithScalar _dt;
+  static const PylithScalar _fieldTIncr[];
+  static const PylithScalar _fieldT[];
+  static const PylithScalar _fieldTmdt[];
 
   static const int _spaceDim;
   static const int _cellDim;
@@ -65,9 +65,9 @@
   static const int _numCorners;
   static const int _cells[];
 
-  static const double _dampingConsts[];
-  static const double _valsResidual[];
-  static const double _valsJacobian[];
+  static const PylithScalar _dampingConsts[];
+  static const PylithScalar _valsResidual[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,17 +23,17 @@
 
 const int pylith::bc::AbsorbingDampersDataQuad4::_numBasis = 2;
 const int pylith::bc::AbsorbingDampersDataQuad4::_numQuadPts = 1;
-const double pylith::bc::AbsorbingDampersDataQuad4::_quadPts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_quadPts[] = {
   0.0,
 };
-const double pylith::bc::AbsorbingDampersDataQuad4::_quadWts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_quadWts[] = {
   2.0,
 };
-const double pylith::bc::AbsorbingDampersDataQuad4::_basis[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_basis[] = {
   0.5,
   0.5,
 };
-const double pylith::bc::AbsorbingDampersDataQuad4::_basisDerivRef[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_basisDerivRef[] = {
   -0.5,
    0.5,
 };
@@ -42,8 +42,8 @@
 const int pylith::bc::AbsorbingDampersDataQuad4::_id = 2;
 const char* pylith::bc::AbsorbingDampersDataQuad4::_label = "bc2";
 
-const double pylith::bc::AbsorbingDampersDataQuad4::_dt =   0.25;
-const double pylith::bc::AbsorbingDampersDataQuad4::_fieldTmdt[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_dt =   0.25;
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_fieldTmdt[] = {
   1.0,  2.4,
   1.1,  1.8,
   1.2,  2.4,
@@ -51,7 +51,7 @@
   1.4,  2.4,
   1.5,  1.6,
 };
-const double pylith::bc::AbsorbingDampersDataQuad4::_fieldT[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_fieldT[] = {
   1.1,  2.0,
   1.3,  2.1,
   1.5,  2.2,
@@ -59,7 +59,7 @@
   1.9,  2.4,
   2.1,  2.5,
 };
-const double pylith::bc::AbsorbingDampersDataQuad4::_fieldTIncr[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_fieldTIncr[] = {
   1.2,  1.6,
   1.5,  2.4,
   1.8,  2.0,
@@ -79,11 +79,11 @@
 };
 
 
-const double pylith::bc::AbsorbingDampersDataQuad4::_dampingConsts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_dampingConsts[] = {
   1.25e+07, 7.5e+06,
   1.25e+07, 7.5e+06,
 };
-const double pylith::bc::AbsorbingDampersDataQuad4::_valsResidual[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_valsResidual[] = {
   -3.75000000e+07,   -2.92500000e+07,
   -3.75000000e+07,   -2.92500000e+07,
   0.0, 0.0, 
@@ -91,7 +91,7 @@
   -7.75000000e+07,   -5.02500000e+07,
   -7.75000000e+07,   -5.02500000e+07,
 };
-const double pylith::bc::AbsorbingDampersDataQuad4::_valsJacobian[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataQuad4::_valsJacobian[] = {
   1.25e+07, 0.0, // 0x
   1.25e+07, 0.0,
   0.0, 0.0,
@@ -172,19 +172,19 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
   label = const_cast<char*>(_label);
 
   dt = _dt;
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
 
   spaceDim = _spaceDim;
   cellDim = _cellDim;
@@ -193,9 +193,9 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  dampingConsts = const_cast<double*>(_dampingConsts);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  dampingConsts = const_cast<PylithScalar*>(_dampingConsts);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::bc::AbsorbingDampersDataQuad4::~AbsorbingDampersDataQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,19 +44,19 @@
 
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   static const char* _spatialDBFilename;
   static const int _id;
   static const char* _label;
 
-  static const double _dt;
-  static const double _fieldTIncr[];
-  static const double _fieldT[];
-  static const double _fieldTmdt[];
+  static const PylithScalar _dt;
+  static const PylithScalar _fieldTIncr[];
+  static const PylithScalar _fieldT[];
+  static const PylithScalar _fieldTmdt[];
 
   static const int _spaceDim;
   static const int _cellDim;
@@ -65,9 +65,9 @@
   static const int _numCorners;
   static const int _cells[];
 
-  static const double _dampingConsts[];
-  static const double _valsResidual[];
-  static const double _valsJacobian[];
+  static const PylithScalar _dampingConsts[];
+  static const PylithScalar _valsResidual[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,18 +23,18 @@
 
 const int pylith::bc::AbsorbingDampersDataTet4::_numBasis = 3;
 const int pylith::bc::AbsorbingDampersDataTet4::_numQuadPts = 1;
-const double pylith::bc::AbsorbingDampersDataTet4::_quadPts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_quadPts[] = {
   -0.3333333333333333, -0.3333333333333333
 };
-const double pylith::bc::AbsorbingDampersDataTet4::_quadWts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_quadWts[] = {
   2.0,
 };
-const double pylith::bc::AbsorbingDampersDataTet4::_basis[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_basis[] = {
   0.3333333333333333,
   0.3333333333333333,
   0.3333333333333333,
 };
-const double pylith::bc::AbsorbingDampersDataTet4::_basisDerivRef[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_basisDerivRef[] = {
  -0.5, -0.5,
   0.5,  0.0,
   0.0,  0.5,
@@ -45,20 +45,20 @@
 const int pylith::bc::AbsorbingDampersDataTet4::_id = 2;
 const char* pylith::bc::AbsorbingDampersDataTet4::_label = "bc2";
 
-const double pylith::bc::AbsorbingDampersDataTet4::_dt =   0.25;
-const double pylith::bc::AbsorbingDampersDataTet4::_fieldTmdt[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_dt =   0.25;
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_fieldTmdt[] = {
   1.0,  2.4,  3.0,
   1.1,  1.8,  3.2,
   1.2,  2.4,  3.4,
   1.3,  2.2,  3.6
 };
-const double pylith::bc::AbsorbingDampersDataTet4::_fieldT[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_fieldT[] = {
   1.1,  2.0,  3.2,
   1.3,  2.1,  3.6,
   1.5,  2.2,  4.0,
   1.7,  2.3,  4.4,
 };
-const double pylith::bc::AbsorbingDampersDataTet4::_fieldTIncr[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_fieldTIncr[] = {
   1.2,  1.6,  3.4,
   1.5,  2.4,  4.0,
   1.8,  2.0,  4.6,
@@ -75,17 +75,17 @@
 };
 
 
-const double pylith::bc::AbsorbingDampersDataTet4::_dampingConsts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_dampingConsts[] = {
   1.25e+07,  7.5e+06,  7.5e+06
 };
-const double pylith::bc::AbsorbingDampersDataTet4::_valsResidual[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_valsResidual[] = {
   -8.19444444e+06, -4.58333333e+06, -1.23333333e+07,
   0.0,              0.0,             0.0,
   -8.19444444e+06, -4.58333333e+06, -1.23333333e+07,
   -8.19444444e+06, -4.58333333e+06, -1.23333333e+07,
   0.0,              0.0,             0.0,  
 };
-const double pylith::bc::AbsorbingDampersDataTet4::_valsJacobian[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTet4::_valsJacobian[] = {
   1.38888889e+06, 0.0, 0.0, // 0x
   0.0, 0.0, 0.0,
   1.38888889e+06, 0.0, 0.0,
@@ -169,19 +169,19 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
   label = const_cast<char*>(_label);
 
   dt = _dt;
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
 
   spaceDim = _spaceDim;
   cellDim = _cellDim;
@@ -190,9 +190,9 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  dampingConsts = const_cast<double*>(_dampingConsts);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  dampingConsts = const_cast<PylithScalar*>(_dampingConsts);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::bc::AbsorbingDampersDataTet4::~AbsorbingDampersDataTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,19 +44,19 @@
 
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   static const char* _spatialDBFilename;
   static const int _id;
   static const char* _label;
 
-  static const double _dt;
-  static const double _fieldTIncr[];
-  static const double _fieldT[];
-  static const double _fieldTmdt[];
+  static const PylithScalar _dt;
+  static const PylithScalar _fieldTIncr[];
+  static const PylithScalar _fieldT[];
+  static const PylithScalar _fieldTmdt[];
 
   static const int _spaceDim;
   static const int _cellDim;
@@ -65,9 +65,9 @@
   static const int _numCorners;
   static const int _cells[];
 
-  static const double _dampingConsts[];
-  static const double _valsResidual[];
-  static const double _valsJacobian[];
+  static const PylithScalar _dampingConsts[];
+  static const PylithScalar _valsResidual[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,17 +23,17 @@
 
 const int pylith::bc::AbsorbingDampersDataTri3::_numBasis = 2;
 const int pylith::bc::AbsorbingDampersDataTri3::_numQuadPts = 1;
-const double pylith::bc::AbsorbingDampersDataTri3::_quadPts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_quadPts[] = {
   0.0,
 };
-const double pylith::bc::AbsorbingDampersDataTri3::_quadWts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_quadWts[] = {
   2.0,
 };
-const double pylith::bc::AbsorbingDampersDataTri3::_basis[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_basis[] = {
   0.5,
   0.5,
 };
-const double pylith::bc::AbsorbingDampersDataTri3::_basisDerivRef[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_basisDerivRef[] = {
   -0.5,
    0.5,
 };
@@ -43,20 +43,20 @@
 const int pylith::bc::AbsorbingDampersDataTri3::_id = 2;
 const char* pylith::bc::AbsorbingDampersDataTri3::_label = "bc";
 
-const double pylith::bc::AbsorbingDampersDataTri3::_dt =   0.25;
-const double pylith::bc::AbsorbingDampersDataTri3::_fieldTmdt[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_dt =   0.25;
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_fieldTmdt[] = {
   1.0,  2.4,
   1.1,  1.8,
   1.2,  2.4,
   1.3,  2.2,
 };
-const double pylith::bc::AbsorbingDampersDataTri3::_fieldT[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_fieldT[] = {
   1.1,  2.0,
   1.3,  2.1,
   1.5,  2.2,
   1.7,  2.3,
 };
-const double pylith::bc::AbsorbingDampersDataTri3::_fieldTIncr[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_fieldTIncr[] = {
   1.2,  1.6,
   1.5,  2.4,
   1.8,  2.0,
@@ -73,16 +73,16 @@
 };
 
 
-const double pylith::bc::AbsorbingDampersDataTri3::_dampingConsts[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_dampingConsts[] = {
   1.41421356e+07,  3.53553391e+06
 };
-const double pylith::bc::AbsorbingDampersDataTri3::_valsResidual[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_valsResidual[] = {
   0.0, 0.0,
   -4.20000000e+07,   -1.30000000e+07,
   0.0, 0.0,
   -4.20000000e+07,   -1.30000000e+07,
 };
-const double pylith::bc::AbsorbingDampersDataTri3::_valsJacobian[] = {
+const PylithScalar pylith::bc::AbsorbingDampersDataTri3::_valsJacobian[] = {
   0.0, 0.0, // 0x
   0.0, 0.0,
   0.0, 0.0,
@@ -123,19 +123,19 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
   label = const_cast<char*>(_label);
 
   dt = _dt;
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
 
   spaceDim = _spaceDim;
   cellDim = _cellDim;
@@ -144,9 +144,9 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  dampingConsts = const_cast<double*>(_dampingConsts);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  dampingConsts = const_cast<PylithScalar*>(_dampingConsts);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::bc::AbsorbingDampersDataTri3::~AbsorbingDampersDataTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,19 +44,19 @@
 
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   static const char* _spatialDBFilename;
   static const int _id;
   static const char* _label;
 
-  static const double _dt;
-  static const double _fieldTIncr[];
-  static const double _fieldT[];
-  static const double _fieldTmdt[];
+  static const PylithScalar _dt;
+  static const PylithScalar _fieldTIncr[];
+  static const PylithScalar _fieldT[];
+  static const PylithScalar _fieldTmdt[];
 
   static const int _spaceDim;
   static const int _cellDim;
@@ -65,9 +65,9 @@
   static const int _numCorners;
   static const int _cells[];
 
-  static const double _dampingConsts[];
-  static const double _valsResidual[];
-  static const double _valsJacobian[];
+  static const PylithScalar _dampingConsts[];
+  static const PylithScalar _valsResidual[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_bc_dirichletdata_hh)
 #define pylith_bc_dirichletdata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace bc {
      class DirichletData;
@@ -40,8 +42,8 @@
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public:
 
-  double tRef; ///< Reference time for rate of change of values
-  double valueRate; ///< Rate of change of value at constrained points.
+  PylithScalar tRef; ///< Reference time for rate of change of values
+  PylithScalar valueRate; ///< Rate of change of value at constrained points.
 
   int numDOF; ///< Number of degrees of freedom at each point.
   int numFixedDOF; ///< Number of fixedDOF at constrained points.
@@ -52,7 +54,7 @@
 
   int* fixedDOF; ///< Degrees of freedom that are constrained at each point
   int* constrainedPoints; ///< Array of indices of constrained points.
-  double* valuesInitial; ///< Values at constrained points.
+  PylithScalar* valuesInitial; ///< Values at constrained points.
 
   char* meshFilename; ///< Filename for input mesh.
   char* dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,9 +45,9 @@
 const int pylith::bc::DirichletDataHex8::_numConstrainedPts = 4;
 const int pylith::bc::DirichletDataHex8::_constrainedPoints[] = { 0, 1, 6, 7 };
 
-const double pylith::bc::DirichletDataHex8::_tRef = 0.2;
-const double pylith::bc::DirichletDataHex8::_valueRate = 0.4;
-const double pylith::bc::DirichletDataHex8::_valuesInitial[] = {
+const PylithScalar pylith::bc::DirichletDataHex8::_tRef = 0.2;
+const PylithScalar pylith::bc::DirichletDataHex8::_valueRate = 0.4;
+const PylithScalar pylith::bc::DirichletDataHex8::_valuesInitial[] = {
   -0.2, 0.3,
    0.1, 0.7,
    0.5, 0.4,
@@ -73,7 +73,7 @@
 
   numConstrainedPts = _numConstrainedPts;
   constrainedPoints = const_cast<int*>(_constrainedPoints);
-  valuesInitial = const_cast<double*>(_valuesInitial);
+  valuesInitial = const_cast<PylithScalar*>(_valuesInitial);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -53,9 +53,9 @@
   static const int _fixedDOF[]; ///< Degrees of freedom constrained at points
 
   static const int _constrainedPoints[]; ///< Array of indices of constrained pts.
-  static const double _tRef; ///< Reference time for rate of change of value
-  static const double _valuesInitial[]; ///< Initial values.
-  static const double _valueRate; ///< Rate of change of values.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of value
+  static const PylithScalar _valuesInitial[]; ///< Initial values.
+  static const PylithScalar _valueRate; ///< Rate of change of values.
 
   static const char* _meshFilename; ///< Filename of input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,9 +44,9 @@
 const int pylith::bc::DirichletDataLine2::_numConstrainedPts = 2;
 const int pylith::bc::DirichletDataLine2::_constrainedPoints[] = { 0, 2 };
 
-const double pylith::bc::DirichletDataLine2::_tRef = 0.6;
-const double pylith::bc::DirichletDataLine2::_valueRate = 0.3;
-const double pylith::bc::DirichletDataLine2::_valuesInitial[] =
+const PylithScalar pylith::bc::DirichletDataLine2::_tRef = 0.6;
+const PylithScalar pylith::bc::DirichletDataLine2::_valueRate = 0.3;
+const PylithScalar pylith::bc::DirichletDataLine2::_valuesInitial[] =
   { 1.1, 2.2 };
 
 const char* pylith::bc::DirichletDataLine2::_meshFilename = 
@@ -68,7 +68,7 @@
 
   tRef = _tRef;
   valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
+  valuesInitial = const_cast<PylithScalar*>(_valuesInitial);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -53,9 +53,9 @@
   static const int _fixedDOF[]; ///< Degrees of freedom constrained at points
 
   static const int _constrainedPoints[]; ///< Array of indices of constrained pts.
-  static const double _tRef; ///< Reference time for rate of change of value
-  static const double _valueRate; ///< Rate of change of values.
-  static const double _valuesInitial[]; ///< Initial values.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of value
+  static const PylithScalar _valueRate; ///< Rate of change of values.
+  static const PylithScalar _valuesInitial[]; ///< Initial values.
 
   static const char* _meshFilename; ///< Filename of input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,9 +36,9 @@
 const int pylith::bc::DirichletDataLine2b::_numConstrainedPts = 2;
 const int pylith::bc::DirichletDataLine2b::_constrainedPoints[] = { 0, 2 };
 
-const double pylith::bc::DirichletDataLine2b::_tRef = -0.2;
-const double pylith::bc::DirichletDataLine2b::_valueRate = 1.0;
-const double pylith::bc::DirichletDataLine2b::_valuesInitial[] = {0};
+const PylithScalar pylith::bc::DirichletDataLine2b::_tRef = -0.2;
+const PylithScalar pylith::bc::DirichletDataLine2b::_valueRate = 1.0;
+const PylithScalar pylith::bc::DirichletDataLine2b::_valuesInitial[] = {0};
 
 const char* pylith::bc::DirichletDataLine2b::_meshFilename = 
   "data/line2.mesh";
@@ -59,7 +59,7 @@
 
   tRef = _tRef;
   valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
+  valuesInitial = const_cast<PylithScalar*>(_valuesInitial);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -53,9 +53,9 @@
   static const int _fixedDOF[]; ///< Degrees of freedom constrained at points
 
   static const int _constrainedPoints[]; ///< Array of indices of constrained pts.
-  static const double _tRef; ///< Reference time for rate of change of value
-  static const double _valueRate; ///< Rate of change of values.
-  static const double _valuesInitial[]; ///< Initial values.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of value
+  static const PylithScalar _valueRate; ///< Rate of change of values.
+  static const PylithScalar _valuesInitial[]; ///< Initial values.
 
   static const char* _meshFilename; ///< Filename of input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_bc_dirichletdatamulti_hh)
 #define pylith_bc_dirichletdatamulti_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace bc {
      class DirichletDataMulti;
@@ -51,7 +53,7 @@
   int* constrainedPointsA; ///< Array of indices of constrained points.
   char* dbFilenameA; ///< Filename for db with initial values.
   char* dbFilenameARate; ///< Filename for db with rate of change of values.
-  double tRefA; ///< Reference time for rate of change of values.
+  PylithScalar tRefA; ///< Reference time for rate of change of values.
   //@}
 
   //@{ Boundary condition B
@@ -63,7 +65,7 @@
   int* constrainedPointsB; ///< Array of indices of constrained points.
   char* dbFilenameB; ///< Filename for db with initial values.
   char* dbFilenameBRate; ///< Filename for db with rate of change of values.
-  double tRefB; ///< Reference time for rate of change of values.
+  PylithScalar tRefB; ///< Reference time for rate of change of values.
   //@}
 
   //@{ Boundary condition C
@@ -75,11 +77,11 @@
   int* constrainedPointsC; ///< Array of indices of constrained points.
   char* dbFilenameC; ///< Filename for db with initial values.
   char* dbFilenameCRate; ///< Filename for db with rate of change of values.
-  double tRefC; ///< Reference time for rate of change of values.
+  PylithScalar tRefC; ///< Reference time for rate of change of values.
   //@}
 
-  double* field; ///< Values in field
-  double* fieldIncr; ///< Increment values in field
+  PylithScalar* field; ///< Values in field
+  PylithScalar* fieldIncr; ///< Increment values in field
   int* constraintSizes; ///< Number of constrained DOF at each vertex
   int* constrainedDOF; ///< Indices of constrained DOF at each constrained vertex
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -78,7 +78,7 @@
   "data/tet4_disp2.spatialdb";
 const char* pylith::bc::DirichletDataMultiTet4::_dbFilenameARate =
   "data/tet4_vel2.spatialdb";
-const double pylith::bc::DirichletDataMultiTet4::_tRefA = 0.0;
+const PylithScalar pylith::bc::DirichletDataMultiTet4::_tRefA = 0.0;
 
 const int pylith::bc::DirichletDataMultiTet4::_idB = 1;
 const char* pylith::bc::DirichletDataMultiTet4::_labelB = "bc2";
@@ -91,7 +91,7 @@
   "data/tet4_disp2.spatialdb";
 const char* pylith::bc::DirichletDataMultiTet4::_dbFilenameBRate =
   "data/tet4_vel2.spatialdb";
-const double pylith::bc::DirichletDataMultiTet4::_tRefB = 0.0;
+const PylithScalar pylith::bc::DirichletDataMultiTet4::_tRefB = 0.0;
 
 const int pylith::bc::DirichletDataMultiTet4::_idC = 1;
 const char* pylith::bc::DirichletDataMultiTet4::_labelC = "bc3";
@@ -104,7 +104,7 @@
   "data/tet4_disp2.spatialdb";
 const char* pylith::bc::DirichletDataMultiTet4::_dbFilenameCRate =
   "data/tet4_vel2.spatialdb";
-const double pylith::bc::DirichletDataMultiTet4::_tRefC = 0.0;
+const PylithScalar pylith::bc::DirichletDataMultiTet4::_tRefC = 0.0;
 
 const int pylith::bc::DirichletDataMultiTet4::_constraintSizes[] = {
   2,
@@ -123,7 +123,7 @@
 };
 
 // Values at t=10.0
-const double pylith::bc::DirichletDataMultiTet4::_field[] = {
+const PylithScalar pylith::bc::DirichletDataMultiTet4::_field[] = {
   10.1, 0.0, -9.99,
    0.0, 111.0, 0.0,
   20.2, 222.0, -19.98,
@@ -132,7 +132,7 @@
 };
 
 // Increment values from t=10.0 to t=14.0
-const double pylith::bc::DirichletDataMultiTet4::_fieldIncr[] = {
+const PylithScalar pylith::bc::DirichletDataMultiTet4::_fieldIncr[] = {
    4.0,   0.0,  -4.0,
    0.0,  40.0,   0.0,
    8.0,  80.0,  -8.0,
@@ -180,8 +180,8 @@
   dbFilenameCRate = const_cast<char*>(_dbFilenameCRate);
   tRefC = _tRefC;
 
-  field = const_cast<double*>(_field);
-  fieldIncr = const_cast<double*>(_fieldIncr);
+  field = const_cast<PylithScalar*>(_field);
+  fieldIncr = const_cast<PylithScalar*>(_fieldIncr);
   constraintSizes = const_cast<int*>(_constraintSizes);
   constrainedDOF = const_cast<int*>(_constrainedDOF);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,7 +52,7 @@
   static const int _constrainedPointsA[]; ///< Array of indices of constrained pts.
   static const char* _dbFilenameA; ///< Filename for db of initial values.
   static const char* _dbFilenameARate; ///< Filename for db of rate of change.
-  static const double _tRefA; ///< Reference time for rate of change.
+  static const PylithScalar _tRefA; ///< Reference time for rate of change.
 
   static const int _numFixedDOFB; ///< Number of fixedDOF at constrained points.
   static const int _numConstrainedPtsB; ///< Number of points constrained.
@@ -62,7 +62,7 @@
   static const int _constrainedPointsB[]; ///< Array of indices of constrained pts.
   static const char* _dbFilenameB; ///< Filename for db of initial values.
   static const char* _dbFilenameBRate; ///< Filename for db of rate of change.
-  static const double _tRefB; ///< Reference time for rate of change.
+  static const PylithScalar _tRefB; ///< Reference time for rate of change.
 
   static const int _numFixedDOFC; ///< Number of fixedDOF at constrained points.
   static const int _numConstrainedPtsC; ///< Number of points constrained.
@@ -72,10 +72,10 @@
   static const int _constrainedPointsC[]; ///< Array of indices of constrained pts.
   static const char* _dbFilenameC; ///< Filename for db of initial values.
   static const char* _dbFilenameCRate; ///< Filename for db of rate of change.
-  static const double _tRefC; ///< Reference time for rate of change.
+  static const PylithScalar _tRefC; ///< Reference time for rate of change.
 
-  static const double _field[]; ///< Values in field
-  static const double _fieldIncr[]; ///< Increment values in field
+  static const PylithScalar _field[]; ///< Values in field
+  static const PylithScalar _fieldIncr[]; ///< Increment values in field
   static const int _constraintSizes[]; ///< Number of constrained DOF at each vertex
   static const int _constrainedDOF[]; ///< Indices of constrained DOF at each constrained vertex
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -58,7 +58,7 @@
   "data/tri3_disp.spatialdb";
 const char* pylith::bc::DirichletDataMultiTri3::_dbFilenameARate =
   "data/tri3_vel.spatialdb";
-const double pylith::bc::DirichletDataMultiTri3::_tRefA = 3.2;
+const PylithScalar pylith::bc::DirichletDataMultiTri3::_tRefA = 3.2;
 
 const int pylith::bc::DirichletDataMultiTri3::_idB = 1;
 const char* pylith::bc::DirichletDataMultiTri3::_labelB = "bc2";
@@ -71,7 +71,7 @@
   "data/tri3_disp2.spatialdb";
 const char* pylith::bc::DirichletDataMultiTri3::_dbFilenameBRate =
   "data/tri3_vel2.spatialdb";
-const double pylith::bc::DirichletDataMultiTri3::_tRefB = 0.4;
+const PylithScalar pylith::bc::DirichletDataMultiTri3::_tRefB = 0.4;
 
 const int pylith::bc::DirichletDataMultiTri3::_constraintSizes[] = {
   0,
@@ -87,7 +87,7 @@
 };
 
 // Values at t=10.0
-const double pylith::bc::DirichletDataMultiTri3::_field[] = {
+const PylithScalar pylith::bc::DirichletDataMultiTri3::_field[] = {
   0.0, 0.0,
   0.0, 1.66,
   -2.94, 0.0,
@@ -95,7 +95,7 @@
 };
 
 // Values from t=10.0 to t=14.0.
-const double pylith::bc::DirichletDataMultiTri3::_fieldIncr[] = {
+const PylithScalar pylith::bc::DirichletDataMultiTri3::_fieldIncr[] = {
   0.0, 0.0,
   0.0, 0.8,
  -1.6, 0.0,
@@ -131,8 +131,8 @@
   dbFilenameBRate = const_cast<char*>(_dbFilenameBRate);
   tRefB = _tRefB;
 
-  field = const_cast<double*>(_field);
-  fieldIncr = const_cast<double*>(_fieldIncr);
+  field = const_cast<PylithScalar*>(_field);
+  fieldIncr = const_cast<PylithScalar*>(_fieldIncr);
   constraintSizes = const_cast<int*>(_constraintSizes);
   constrainedDOF = const_cast<int*>(_constrainedDOF);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,7 +52,7 @@
   static const int _constrainedPointsA[]; ///< Array of indices of constrained pts.
   static const char* _dbFilenameA; ///< Filename for db of initial values.
   static const char* _dbFilenameARate; ///< Filename for db of rate of change.
-  static const double _tRefA; ///< Reference time for rate of change.
+  static const PylithScalar _tRefA; ///< Reference time for rate of change.
 
   static const int _numFixedDOFB; ///< Number of fixedDOF at constrained points.
   static const int _numConstrainedPtsB; ///< Number of points constrained.
@@ -62,10 +62,10 @@
   static const int _constrainedPointsB[]; ///< Array of indices of constrained pts.
   static const char* _dbFilenameB; ///< Filename for db of initial values.
   static const char* _dbFilenameBRate; ///< Filename for db of rate of change.
-  static const double _tRefB; ///< Reference time for rate of change.
+  static const PylithScalar _tRefB; ///< Reference time for rate of change.
 
-  static const double _field[]; ///< Values in field
-  static const double _fieldIncr[]; ///< Increment values in field
+  static const PylithScalar _field[]; ///< Values in field
+  static const PylithScalar _fieldIncr[]; ///< Increment values in field
   static const int _constraintSizes[]; ///< Number of constrained DOF at each vertex
   static const int _constrainedDOF[]; ///< Indices of constrained DOF at each constrained vertex
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,9 +43,9 @@
 const int pylith::bc::DirichletDataQuad4::_numConstrainedPts = 3;
 const int pylith::bc::DirichletDataQuad4::_constrainedPoints[] = { 0, 2, 4 };
 
-const double pylith::bc::DirichletDataQuad4::_tRef = 3.0;
-const double pylith::bc::DirichletDataQuad4::_valueRate = -0.5;
-const double pylith::bc::DirichletDataQuad4::_valuesInitial[] =
+const PylithScalar pylith::bc::DirichletDataQuad4::_tRef = 3.0;
+const PylithScalar pylith::bc::DirichletDataQuad4::_valueRate = -0.5;
+const PylithScalar pylith::bc::DirichletDataQuad4::_valuesInitial[] =
   { 0.1, 0.6, 0.5, 0.3, 0.4, 0.2 };
 
 const char* pylith::bc::DirichletDataQuad4::_meshFilename = 
@@ -67,7 +67,7 @@
 
   tRef = _tRef;
   valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
+  valuesInitial = const_cast<PylithScalar*>(_valuesInitial);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -53,9 +53,9 @@
   static const int _fixedDOF[]; ///< Degrees of freedom constrained at points
 
   static const int _constrainedPoints[]; ///< Array of indices of constrained pts.
-  static const double _tRef; ///< Reference time for rate of change of value
-  static const double _valueRate; ///< Rate of change of values.
-  static const double _valuesInitial[]; ///< Initial values.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of value
+  static const PylithScalar _valueRate; ///< Rate of change of values.
+  static const PylithScalar _valuesInitial[]; ///< Initial values.
 
   static const char* _meshFilename; ///< Filename of input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,9 +44,9 @@
 const int pylith::bc::DirichletDataTet4::_constrainedPoints[] = { 1, 2, 3 };
 
 
-const double pylith::bc::DirichletDataTet4::_tRef = 1.2;
-const double pylith::bc::DirichletDataTet4::_valueRate = 4.0;
-const double pylith::bc::DirichletDataTet4::_valuesInitial[] = {
+const PylithScalar pylith::bc::DirichletDataTet4::_tRef = 1.2;
+const PylithScalar pylith::bc::DirichletDataTet4::_valueRate = 4.0;
+const PylithScalar pylith::bc::DirichletDataTet4::_valuesInitial[] = {
   0.7, 0.2,
   0.7, 0.2,
   0.7, 0.2,
@@ -71,7 +71,7 @@
 
   tRef = _tRef;
   valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
+  valuesInitial = const_cast<PylithScalar*>(_valuesInitial);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -53,9 +53,9 @@
   static const int _fixedDOF[]; ///< Degrees of freedom constrained at points
 
   static const int _constrainedPoints[]; ///< Array of indices of constrained pts.
-  static const double _tRef; ///< Reference time for rate of change of value
-  static const double _valueRate; ///< Rate of change of values.
-  static const double _valuesInitial[]; ///< Initial values.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of value
+  static const PylithScalar _valueRate; ///< Rate of change of values.
+  static const PylithScalar _valuesInitial[]; ///< Initial values.
 
   static const char* _meshFilename; ///< Filename of input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,9 +42,9 @@
 const int pylith::bc::DirichletDataTri3::_numConstrainedPts = 2;
 const int pylith::bc::DirichletDataTri3::_constrainedPoints[] = { 1, 3 };
 
-const double pylith::bc::DirichletDataTri3::_tRef = 0.7;
-const double pylith::bc::DirichletDataTri3::_valueRate = -0.2;
-const double pylith::bc::DirichletDataTri3::_valuesInitial[] =
+const PylithScalar pylith::bc::DirichletDataTri3::_tRef = 0.7;
+const PylithScalar pylith::bc::DirichletDataTri3::_valueRate = -0.2;
+const PylithScalar pylith::bc::DirichletDataTri3::_valuesInitial[] =
   { 0.3, 0.7 };
 
 const char* pylith::bc::DirichletDataTri3::_meshFilename = 
@@ -66,7 +66,7 @@
 
   tRef = _tRef;
   valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
+  valuesInitial = const_cast<PylithScalar*>(_valuesInitial);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -53,9 +53,9 @@
   static const int _fixedDOF[]; ///< Degrees of freedom constrained at points
 
   static const int _constrainedPoints[]; ///< Array of indices of constrained pts.
-  static const double _tRef; ///< Reference time for rate of change of value
-  static const double _valueRate; ///< Rate of change of values.
-  static const double _valuesInitial[]; ///< Initial values.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of value
+  static const PylithScalar _valueRate; ///< Rate of change of values.
+  static const PylithScalar _valuesInitial[]; ///< Initial values.
 
   static const char* _meshFilename; ///< Filename of input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_bc_neumanndata_hh)
 #define pylith_bc_neumanndata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace bc {
      class NeumannData;
@@ -46,10 +48,10 @@
   //@{
   int numBasis; ///< Number of basis functions for surface cells.
   int numQuadPts; ///< Number of quadrature points per boundary cell.
-  double* quadPts; ///< Coordinates of quadrature points in ref cell.
-  double* quadWts; ///< Weights of quadrature points.
-  double* basis; ///< Cell basis functions at quad points.
-  double* basisDerivRef; ///< Derivatives of basis functions at quad points.
+  PylithScalar* quadPts; ///< Coordinates of quadrature points in ref cell.
+  PylithScalar* quadWts; ///< Weights of quadrature points.
+  PylithScalar* basis; ///< Cell basis functions at quad points.
+  PylithScalar* basisDerivRef; ///< Derivatives of basis functions at quad points.
   //@}
 
   /// @name Parameter information
@@ -71,8 +73,8 @@
 
   /// @name Calculated values.
   //@{
-  double* tractionsCell; ///< Expected traction values at quadrature points.
-  double* valsResidual; ///< Expected residual at each vertex.
+  PylithScalar* tractionsCell; ///< Expected traction values at quadrature points.
+  PylithScalar* valsResidual; ///< Expected residual at each vertex.
   //@}
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -34,22 +34,22 @@
 
 const int pylith::bc::NeumannDataHex8::_numBasis = 4;
 const int pylith::bc::NeumannDataHex8::_numQuadPts = 4;
-const double pylith::bc::NeumannDataHex8::_quadPts[] = {
+const PylithScalar pylith::bc::NeumannDataHex8::_quadPts[] = {
   -0.57735027, -0.57735027,
   +0.57735027, -0.57735027,
   +0.57735027, +0.57735027,
   -0.57735027, +0.57735027,
 };
-const double pylith::bc::NeumannDataHex8::_quadWts[] = {
+const PylithScalar pylith::bc::NeumannDataHex8::_quadWts[] = {
   1.0, 1.0, 1.0, 1.0
 };
-const double pylith::bc::NeumannDataHex8::_basis[] = {
+const PylithScalar pylith::bc::NeumannDataHex8::_basis[] = {
   0.62200847,  0.16666667,  0.0446582,   0.16666667,
   0.16666667,  0.62200847,  0.16666667,   0.0446582,
   0.0446582,   0.16666667,  0.62200847,  0.16666667,
   0.16666667,   0.0446582,  0.16666667,  0.62200847,
 };
-const double pylith::bc::NeumannDataHex8::_basisDerivRef[] = {
+const PylithScalar pylith::bc::NeumannDataHex8::_basisDerivRef[] = {
   -0.39433757, -0.39433757,
   +0.39433757, -0.10566243,
   +0.10566243, +0.10566243,
@@ -86,7 +86,7 @@
   8, 6, 10, 12,
 };
 
-const double pylith::bc::NeumannDataHex8::_tractionsCell[] = { 4.0, 0.0, 0.0,
+const PylithScalar pylith::bc::NeumannDataHex8::_tractionsCell[] = { 4.0, 0.0, 0.0,
 							       4.0, 0.0, 0.0,
 							       4.0, 0.0, 0.0,
 							       4.0, 0.0, 0.0,
@@ -94,7 +94,7 @@
 							       4.0, 0.0, 0.0,
 							       4.0, 0.0, 0.0,
 							       4.0, 0.0, 0.0};
-const double pylith::bc::NeumannDataHex8::_valsResidual[] = { 4.0, 0.0, 0.0,
+const PylithScalar pylith::bc::NeumannDataHex8::_valsResidual[] = { 4.0, 0.0, 0.0,
 							      0.0, 0.0, 0.0,
 							      4.0, 0.0, 0.0,
 							      0.0, 0.0, 0.0,
@@ -114,10 +114,10 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
@@ -130,8 +130,8 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  tractionsCell = const_cast<double*>(_tractionsCell);
-  valsResidual = const_cast<double*>(_valsResidual);
+  tractionsCell = const_cast<PylithScalar*>(_tractionsCell);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
 
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,10 +47,10 @@
   // Quadrature information
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   // BC information
   static const char* _spatialDBFilename;
@@ -66,8 +66,8 @@
   static const int _cells[];
 
   // Calculated values.
-  static const double _tractionsCell[];
-  static const double _valsResidual[];
+  static const PylithScalar _tractionsCell[];
+  static const PylithScalar _valsResidual[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,16 +32,16 @@
 
 const int pylith::bc::NeumannDataLine2::_numBasis = 1;
 const int pylith::bc::NeumannDataLine2::_numQuadPts = 1;
-const double pylith::bc::NeumannDataLine2::_quadPts[] = {
+const PylithScalar pylith::bc::NeumannDataLine2::_quadPts[] = {
   0.0,
 };
-const double pylith::bc::NeumannDataLine2::_quadWts[] = {
+const PylithScalar pylith::bc::NeumannDataLine2::_quadWts[] = {
   1.0,
 };
-const double pylith::bc::NeumannDataLine2::_basis[] = {
+const PylithScalar pylith::bc::NeumannDataLine2::_basis[] = {
   1.0,
 };
-const double pylith::bc::NeumannDataLine2::_basisDerivRef[] = {
+const PylithScalar pylith::bc::NeumannDataLine2::_basisDerivRef[] = {
   1.0,
 };
 
@@ -59,10 +59,10 @@
   2,
 };
 
-const double pylith::bc::NeumannDataLine2::_tractionsCell[] = {
+const PylithScalar pylith::bc::NeumannDataLine2::_tractionsCell[] = {
   1.0,
 };
-const double pylith::bc::NeumannDataLine2::_valsResidual[] = {
+const PylithScalar pylith::bc::NeumannDataLine2::_valsResidual[] = {
   1.0,
   0.0,
   0.0,
@@ -75,10 +75,10 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
@@ -91,8 +91,8 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  tractionsCell = const_cast<double*>(_tractionsCell);
-  valsResidual = const_cast<double*>(_valsResidual);
+  tractionsCell = const_cast<PylithScalar*>(_tractionsCell);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
 
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,10 +47,10 @@
   // Quadrature information
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   // BC information
   static const char* _spatialDBFilename;
@@ -66,8 +66,8 @@
   static const int _cells[];
 
   // Calculated values.
-  static const double _tractionsCell[];
-  static const double _valsResidual[];
+  static const PylithScalar _tractionsCell[];
+  static const PylithScalar _valsResidual[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,21 +42,21 @@
 
 const int pylith::bc::NeumannDataQuad4::_numBasis = 2;
 const int pylith::bc::NeumannDataQuad4::_numQuadPts = 2;
-const double pylith::bc::NeumannDataQuad4::_quadPts[] = {
+const PylithScalar pylith::bc::NeumannDataQuad4::_quadPts[] = {
   -0.57735027,
    0.57735027,
 };
-const double pylith::bc::NeumannDataQuad4::_quadWts[] = {
+const PylithScalar pylith::bc::NeumannDataQuad4::_quadWts[] = {
   1.0,
   1.0,
 };
-const double pylith::bc::NeumannDataQuad4::_basis[] = {
+const PylithScalar pylith::bc::NeumannDataQuad4::_basis[] = {
   0.78867513459,
   0.21132486541,
   0.21132486541,
   0.78867513459,
 };
-const double pylith::bc::NeumannDataQuad4::_basisDerivRef[] = {
+const PylithScalar pylith::bc::NeumannDataQuad4::_basisDerivRef[] = {
  -0.5,
   0.5,
  -0.5,
@@ -78,13 +78,13 @@
   4, 6,
 };
 
-const double pylith::bc::NeumannDataQuad4::_tractionsCell[] = {
+const PylithScalar pylith::bc::NeumannDataQuad4::_tractionsCell[] = {
   0.0, -0.1056624327,
   0.0, -0.3943375673,
   0.0, -0.6056624327,
   0.0, -0.8943375673,
 };
-const double pylith::bc::NeumannDataQuad4::_valsResidual[] = {
+const PylithScalar pylith::bc::NeumannDataQuad4::_valsResidual[] = {
   0.0, -0.08333333333,
   0.0,  0.0,
   0.0, -0.5,
@@ -100,10 +100,10 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
@@ -116,8 +116,8 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  tractionsCell = const_cast<double*>(_tractionsCell);
-  valsResidual = const_cast<double*>(_valsResidual);
+  tractionsCell = const_cast<PylithScalar*>(_tractionsCell);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
 
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,10 +47,10 @@
   // Quadrature information
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   // BC information
   static const char* _spatialDBFilename;
@@ -66,8 +66,8 @@
   static const int _cells[];
 
   // Calculated values.
-  static const double _tractionsCell[];
-  static const double _valsResidual[];
+  static const PylithScalar _tractionsCell[];
+  static const PylithScalar _valsResidual[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,18 +41,18 @@
 
 const int pylith::bc::NeumannDataTet4::_numBasis = 3;
 const int pylith::bc::NeumannDataTet4::_numQuadPts = 1;
-const double pylith::bc::NeumannDataTet4::_quadPts[] = {
+const PylithScalar pylith::bc::NeumannDataTet4::_quadPts[] = {
   -0.3333333333333333, -0.3333333333333333
 };
-const double pylith::bc::NeumannDataTet4::_quadWts[] = {
+const PylithScalar pylith::bc::NeumannDataTet4::_quadWts[] = {
   2.0,
 };
-const double pylith::bc::NeumannDataTet4::_basis[] = {
+const PylithScalar pylith::bc::NeumannDataTet4::_basis[] = {
   0.3333333333333333,
   0.3333333333333333,
   0.3333333333333333,
 };
-const double pylith::bc::NeumannDataTet4::_basisDerivRef[] = {
+const PylithScalar pylith::bc::NeumannDataTet4::_basisDerivRef[] = {
  -0.5, -0.5,
   0.5,  0.0,
   0.0,  0.5,
@@ -72,10 +72,10 @@
   3, 4, 5,
 };
 
-const double pylith::bc::NeumannDataTet4::_tractionsCell[] = {
+const PylithScalar pylith::bc::NeumannDataTet4::_tractionsCell[] = {
   -0.5380048025,  0.87620875991,  1.3938468501
 };
-const double pylith::bc::NeumannDataTet4::_valsResidual[] = {
+const PylithScalar pylith::bc::NeumannDataTet4::_valsResidual[] = {
   0.0,               0.0,               0.0,
   -1.5530860877e-01,  2.529396817e-01,  4.0236892706e-01,
   -1.5530860877e-01,  2.529396817e-01,  4.0236892706e-01,
@@ -90,10 +90,10 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
@@ -106,8 +106,8 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  tractionsCell = const_cast<double*>(_tractionsCell);
-  valsResidual = const_cast<double*>(_valsResidual);
+  tractionsCell = const_cast<PylithScalar*>(_tractionsCell);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
 
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,10 +47,10 @@
   // Quadrature information
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   // BC information
   static const char* _spatialDBFilename;
@@ -66,8 +66,8 @@
   static const int _cells[];
 
   // Calculated values.
-  static const double _tractionsCell[];
-  static const double _valsResidual[];
+  static const PylithScalar _tractionsCell[];
+  static const PylithScalar _valsResidual[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -38,17 +38,17 @@
 
 const int pylith::bc::NeumannDataTri3::_numBasis = 2;
 const int pylith::bc::NeumannDataTri3::_numQuadPts = 1;
-const double pylith::bc::NeumannDataTri3::_quadPts[] = {
+const PylithScalar pylith::bc::NeumannDataTri3::_quadPts[] = {
   0.0,
 };
-const double pylith::bc::NeumannDataTri3::_quadWts[] = {
+const PylithScalar pylith::bc::NeumannDataTri3::_quadWts[] = {
   2.0,
 };
-const double pylith::bc::NeumannDataTri3::_basis[] = {
+const PylithScalar pylith::bc::NeumannDataTri3::_basis[] = {
   0.5,
   0.5,
 };
-const double pylith::bc::NeumannDataTri3::_basisDerivRef[] = {
+const PylithScalar pylith::bc::NeumannDataTri3::_basisDerivRef[] = {
  -0.5,
   0.5,
 };
@@ -67,10 +67,10 @@
   3,  5,
 };
 
-const double pylith::bc::NeumannDataTri3::_tractionsCell[] = {
+const PylithScalar pylith::bc::NeumannDataTri3::_tractionsCell[] = {
   1.4142135624,  0.0,
 };
-const double pylith::bc::NeumannDataTri3::_valsResidual[] = {
+const PylithScalar pylith::bc::NeumannDataTri3::_valsResidual[] = {
   0.0,  0.0,
   1.0,  0.0,
   0.0,  0.0,
@@ -84,10 +84,10 @@
 
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
 
   spatialDBFilename = const_cast<char*>(_spatialDBFilename);
   id = _id;
@@ -100,8 +100,8 @@
   numCorners = _numCorners;
   cells = const_cast<int*>(_cells);
 
-  tractionsCell = const_cast<double*>(_tractionsCell);
-  valsResidual = const_cast<double*>(_valsResidual);
+  tractionsCell = const_cast<PylithScalar*>(_tractionsCell);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
 
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,10 +47,10 @@
   // Quadrature information
   static const int _numBasis;
   static const int _numQuadPts;
-  static const double _quadPts[];
-  static const double _quadWts[];
-  static const double _basis[];
-  static const double _basisDerivRef[];
+  static const PylithScalar _quadPts[];
+  static const PylithScalar _quadWts[];
+  static const PylithScalar _basis[];
+  static const PylithScalar _basisDerivRef[];
 
   // BC information
   static const char* _spatialDBFilename;
@@ -66,8 +66,8 @@
   static const int _cells[];
 
   // Calculated values.
-  static const double _tractionsCell[];
-  static const double _valsResidual[];
+  static const PylithScalar _tractionsCell[];
+  static const PylithScalar _valsResidual[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_bc_pointforcedata_hh)
 #define pylith_bc_pointforcedata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace bc {
      class PointForceData;
@@ -40,9 +42,9 @@
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public:
 
-  double tRef; ///< Reference time for rate of change of forces.
-  double forceRate; ///< Rate of change of force.
-  double tResidual; ///< Time for computing residual.
+  PylithScalar tRef; ///< Reference time for rate of change of forces.
+  PylithScalar forceRate; ///< Rate of change of force.
+  PylithScalar tResidual; ///< Time for computing residual.
 
   int numDOF; ///< Number of degrees of freedom at each point.
   int numForceDOF; ///< Number of forces at points.
@@ -53,8 +55,8 @@
 
   int* forceDOF; ///< Degrees of freedom that are constrained at each point
   int* forcePoints; ///< Array of indices of points with forces.
-  double* forceInitial; ///< Forces at points.
-  double* residual; ///< Residual field.
+  PylithScalar* forceInitial; ///< Forces at points.
+  PylithScalar* residual; ///< Residual field.
 
   char* meshFilename; ///< Filename for input mesh.
   char* dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,17 +45,17 @@
 const int pylith::bc::PointForceDataHex8::_numForcePts = 4;
 const int pylith::bc::PointForceDataHex8::_forcePoints[] = { 0, 1, 6, 7 };
 
-const double pylith::bc::PointForceDataHex8::_tRef = 0.2;
-const double pylith::bc::PointForceDataHex8::_forceRate = 0.4;
-const double pylith::bc::PointForceDataHex8::_forceInitial[] = {
+const PylithScalar pylith::bc::PointForceDataHex8::_tRef = 0.2;
+const PylithScalar pylith::bc::PointForceDataHex8::_forceRate = 0.4;
+const PylithScalar pylith::bc::PointForceDataHex8::_forceInitial[] = {
   -0.2, 0.3,
    0.1, 0.7,
    0.5, 0.4,
    3.2, 6.1,
 };
 
-const double pylith::bc::PointForceDataHex8::_tResidual = 0.45;
-const double pylith::bc::PointForceDataHex8::_residual[] = {
+const PylithScalar pylith::bc::PointForceDataHex8::_tResidual = 0.45;
+const PylithScalar pylith::bc::PointForceDataHex8::_residual[] = {
  -0.1, 0.0, 0.4, 
   0.2, 0.0, 0.8, 
   0.0, 0.0, 0.0, 
@@ -89,10 +89,10 @@
 
   tRef = _tRef;
   forceRate = _forceRate;
-  forceInitial = const_cast<double*>(_forceInitial);
+  forceInitial = const_cast<PylithScalar*>(_forceInitial);
 
   tResidual = _tResidual;
-  residual = const_cast<double*>(_residual);
+  residual = const_cast<PylithScalar*>(_residual);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,9 +42,9 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private:
 
-  static const double _tRef; ///< Reference time for rate of change of forces.
-  static const double _forceRate; ///< Rate of change of force.
-  static const double _tResidual; ///< Time for computing residual.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of forces.
+  static const PylithScalar _forceRate; ///< Rate of change of force.
+  static const PylithScalar _tResidual; ///< Time for computing residual.
 
   static const int _numDOF; ///< Number of degrees of freedom at each point.
   static const int _numForceDOF; ///< Number of forces at points.
@@ -55,8 +55,8 @@
 
   static const int _forceDOF[]; ///< Degrees of freedom that are constrained at each point
   static const int _forcePoints[]; ///< Array of indices of points with forces.
-  static const double _forceInitial[]; ///< Forces at points.
-  static const double _residual[]; ///< Residual field.
+  static const PylithScalar _forceInitial[]; ///< Forces at points.
+  static const PylithScalar _residual[]; ///< Residual field.
 
   static const char* _meshFilename; ///< Filename for input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,13 +43,13 @@
 const int pylith::bc::PointForceDataLine2::_numForcePts = 2;
 const int pylith::bc::PointForceDataLine2::_forcePoints[] = { 0, 2 };
 
-const double pylith::bc::PointForceDataLine2::_tRef = 0.6;
-const double pylith::bc::PointForceDataLine2::_forceRate = 0.3;
-const double pylith::bc::PointForceDataLine2::_forceInitial[] =
+const PylithScalar pylith::bc::PointForceDataLine2::_tRef = 0.6;
+const PylithScalar pylith::bc::PointForceDataLine2::_forceRate = 0.3;
+const PylithScalar pylith::bc::PointForceDataLine2::_forceInitial[] =
   { 1.1, 2.2 };
 
-const double pylith::bc::PointForceDataLine2::_tResidual = 1.5;
-const double pylith::bc::PointForceDataLine2::_residual[] =
+const PylithScalar pylith::bc::PointForceDataLine2::_tResidual = 1.5;
+const PylithScalar pylith::bc::PointForceDataLine2::_residual[] =
   { 1.37,
     0.0,
     2.47,
@@ -74,10 +74,10 @@
 
   tRef = _tRef;
   forceRate = _forceRate;
-  forceInitial = const_cast<double*>(_forceInitial);
+  forceInitial = const_cast<PylithScalar*>(_forceInitial);
 
   tResidual = _tResidual;
-  residual = const_cast<double*>(_residual);
+  residual = const_cast<PylithScalar*>(_residual);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,9 +42,9 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private:
 
-  static const double _tRef; ///< Reference time for rate of change of forces.
-  static const double _forceRate; ///< Rate of change of force.
-  static const double _tResidual; ///< Time for computing residual.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of forces.
+  static const PylithScalar _forceRate; ///< Rate of change of force.
+  static const PylithScalar _tResidual; ///< Time for computing residual.
 
   static const int _numDOF; ///< Number of degrees of freedom at each point.
   static const int _numForceDOF; ///< Number of forces at points.
@@ -55,8 +55,8 @@
 
   static const int _forceDOF[]; ///< Degrees of freedom that are constrained at each point
   static const int _forcePoints[]; ///< Array of indices of points with forces.
-  static const double _forceInitial[]; ///< Forces at points.
-  static const double _residual[]; ///< Residual field.
+  static const PylithScalar _forceInitial[]; ///< Forces at points.
+  static const PylithScalar _residual[]; ///< Residual field.
 
   static const char* _meshFilename; ///< Filename for input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,16 +43,16 @@
 const int pylith::bc::PointForceDataQuad4::_numForcePts = 3;
 const int pylith::bc::PointForceDataQuad4::_forcePoints[] = { 0, 2, 4 };
 
-const double pylith::bc::PointForceDataQuad4::_tRef = 3.0;
-const double pylith::bc::PointForceDataQuad4::_forceRate = -0.5;
-const double pylith::bc::PointForceDataQuad4::_forceInitial[] =
+const PylithScalar pylith::bc::PointForceDataQuad4::_tRef = 3.0;
+const PylithScalar pylith::bc::PointForceDataQuad4::_forceRate = -0.5;
+const PylithScalar pylith::bc::PointForceDataQuad4::_forceInitial[] =
   { 0.1, 0.6,
     0.5, 0.3,
     0.4, 0.2,
   };
 
-const double pylith::bc::PointForceDataQuad4::_tResidual = 4.5;
-const double pylith::bc::PointForceDataQuad4::_residual[] =
+const PylithScalar pylith::bc::PointForceDataQuad4::_tResidual = 4.5;
+const PylithScalar pylith::bc::PointForceDataQuad4::_residual[] =
   { -0.65, -0.15,
      0.0, 0.0,
     -0.25, -0.45,
@@ -80,10 +80,10 @@
 
   tRef = _tRef;
   forceRate = _forceRate;
-  forceInitial = const_cast<double*>(_forceInitial);
+  forceInitial = const_cast<PylithScalar*>(_forceInitial);
 
   tResidual = _tResidual;
-  residual = const_cast<double*>(_residual);
+  residual = const_cast<PylithScalar*>(_residual);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,9 +42,9 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private:
 
-  static const double _tRef; ///< Reference time for rate of change of forces.
-  static const double _forceRate; ///< Rate of change of force.
-  static const double _tResidual; ///< Time for computing residual.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of forces.
+  static const PylithScalar _forceRate; ///< Rate of change of force.
+  static const PylithScalar _tResidual; ///< Time for computing residual.
 
   static const int _numDOF; ///< Number of degrees of freedom at each point.
   static const int _numForceDOF; ///< Number of forces at points.
@@ -55,8 +55,8 @@
 
   static const int _forceDOF[]; ///< Degrees of freedom that are constrained at each point
   static const int _forcePoints[]; ///< Array of indices of points with forces.
-  static const double _forceInitial[]; ///< Forces at points.
-  static const double _residual[]; ///< Residual field.
+  static const PylithScalar _forceInitial[]; ///< Forces at points.
+  static const PylithScalar _residual[]; ///< Residual field.
 
   static const char* _meshFilename; ///< Filename for input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,16 +43,16 @@
 const int pylith::bc::PointForceDataTet4::_numForcePts = 3;
 const int pylith::bc::PointForceDataTet4::_forcePoints[] = { 1, 2, 3 };
 
-const double pylith::bc::PointForceDataTet4::_tRef = 1.2;
-const double pylith::bc::PointForceDataTet4::_forceRate = 4.0;
-const double pylith::bc::PointForceDataTet4::_forceInitial[] = {
+const PylithScalar pylith::bc::PointForceDataTet4::_tRef = 1.2;
+const PylithScalar pylith::bc::PointForceDataTet4::_forceRate = 4.0;
+const PylithScalar pylith::bc::PointForceDataTet4::_forceInitial[] = {
   0.7, 0.2,
   0.7, 0.2,
   0.7, 0.2,
 };
 
-const double pylith::bc::PointForceDataTet4::_tResidual = 1.3;
-const double pylith::bc::PointForceDataTet4::_residual[] =
+const PylithScalar pylith::bc::PointForceDataTet4::_tResidual = 1.3;
+const PylithScalar pylith::bc::PointForceDataTet4::_residual[] =
   { 0.0, 0.0, 0.0,
     0.0, 1.1, 0.6,
     0.0, 1.1, 0.6,
@@ -79,10 +79,10 @@
 
   tRef = _tRef;
   forceRate = _forceRate;
-  forceInitial = const_cast<double*>(_forceInitial);
+  forceInitial = const_cast<PylithScalar*>(_forceInitial);
 
   tResidual = _tResidual;
-  residual = const_cast<double*>(_residual);
+  residual = const_cast<PylithScalar*>(_residual);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,9 +42,9 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private:
 
-  static const double _tRef; ///< Reference time for rate of change of forces.
-  static const double _forceRate; ///< Rate of change of force.
-  static const double _tResidual; ///< Time for computing residual.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of forces.
+  static const PylithScalar _forceRate; ///< Rate of change of force.
+  static const PylithScalar _tResidual; ///< Time for computing residual.
 
   static const int _numDOF; ///< Number of degrees of freedom at each point.
   static const int _numForceDOF; ///< Number of forces at points.
@@ -55,8 +55,8 @@
 
   static const int _forceDOF[]; ///< Degrees of freedom that are constrained at each point
   static const int _forcePoints[]; ///< Array of indices of points with forces.
-  static const double _forceInitial[]; ///< Forces at points.
-  static const double _residual[]; ///< Residual field.
+  static const PylithScalar _forceInitial[]; ///< Forces at points.
+  static const PylithScalar _residual[]; ///< Residual field.
 
   static const char* _meshFilename; ///< Filename for input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,13 +42,13 @@
 const int pylith::bc::PointForceDataTri3::_numForcePts = 2;
 const int pylith::bc::PointForceDataTri3::_forcePoints[] = { 1, 3 };
 
-const double pylith::bc::PointForceDataTri3::_tRef = 0.7;
-const double pylith::bc::PointForceDataTri3::_forceRate = -0.2;
-const double pylith::bc::PointForceDataTri3::_forceInitial[] =
+const PylithScalar pylith::bc::PointForceDataTri3::_tRef = 0.7;
+const PylithScalar pylith::bc::PointForceDataTri3::_forceRate = -0.2;
+const PylithScalar pylith::bc::PointForceDataTri3::_forceInitial[] =
   { 0.3, 0.7 };
 
-const double pylith::bc::PointForceDataTri3::_tResidual = 1.5;
-const double pylith::bc::PointForceDataTri3::_residual[] =
+const PylithScalar pylith::bc::PointForceDataTri3::_tResidual = 1.5;
+const PylithScalar pylith::bc::PointForceDataTri3::_residual[] =
   { 0.0, 0.0,
     0.0, 0.14,
     0.0, 0.0,
@@ -74,10 +74,10 @@
 
   tRef = _tRef;
   forceRate = _forceRate;
-  forceInitial = const_cast<double*>(_forceInitial);
+  forceInitial = const_cast<PylithScalar*>(_forceInitial);
 
   tResidual = _tResidual;
-  residual = const_cast<double*>(_residual);
+  residual = const_cast<PylithScalar*>(_residual);
 
   meshFilename = const_cast<char*>(_meshFilename);
   dbFilename = const_cast<char*>(_dbFilename);

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/PointForceDataTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,9 +42,9 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private:
 
-  static const double _tRef; ///< Reference time for rate of change of forces.
-  static const double _forceRate; ///< Rate of change of force.
-  static const double _tResidual; ///< Time for computing residual.
+  static const PylithScalar _tRef; ///< Reference time for rate of change of forces.
+  static const PylithScalar _forceRate; ///< Rate of change of force.
+  static const PylithScalar _tResidual; ///< Time for computing residual.
 
   static const int _numDOF; ///< Number of degrees of freedom at each point.
   static const int _numForceDOF; ///< Number of forces at points.
@@ -55,8 +55,8 @@
 
   static const int _forceDOF[]; ///< Degrees of freedom that are constrained at each point
   static const int _forcePoints[]; ///< Array of indices of points with forces.
-  static const double _forceInitial[]; ///< Forces at points.
-  static const double _residual[]; ///< Residual field.
+  static const PylithScalar _forceInitial[]; ///< Forces at points.
+  static const PylithScalar _residual[]; ///< Residual field.
 
   static const char* _meshFilename; ///< Filename for input mesh.
   static const char* _dbFilename; ///< Filename of simple spatial database.

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,9 +49,9 @@
 	const char* slipTimeFilename;
 	const char* riseTimeFilename;
 	const int* constraintPts;
-	const double* finalSlipE;
-	const double* slipTimeE;
-	const double* riseTimeE;
+	const PylithScalar* finalSlipE;
+	const PylithScalar* slipTimeE;
+	const PylithScalar* riseTimeE;
 	const int numConstraintPts;
       }; // DataStruct
     } // _TestBruneSlipFn
@@ -137,9 +137,9 @@
   const char* slipTimeFilename = "data/line2_sliptime.spatialdb";
   const char* riseTimeFilename = "data/line2_risetime.spatialdb";
   const int constraintPts[] = { 3 };
-  const double finalSlipE[] = { 2.3 };
-  const double slipTimeE[] = { 1.2 };
-  const double riseTimeE[] = { 1.4 };
+  const PylithScalar finalSlipE[] = { 2.3 };
+  const PylithScalar slipTimeE[] = { 1.2 };
+  const PylithScalar riseTimeE[] = { 1.4 };
   const int numConstraintPts = 1;
 
   _TestBruneSlipFn::DataStruct data = {meshFilename,
@@ -168,10 +168,10 @@
   const char* slipTimeFilename = "data/tri3_sliptime.spatialdb";
   const char* riseTimeFilename = "data/tri3_risetime.spatialdb";
   const int constraintPts[] = { 3, 4 };
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				2.4, 0.2};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double riseTimeE[] = { 1.4, 1.5 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar riseTimeE[] = { 1.4, 1.5 };
   const int numConstraintPts = 2;
 
   _TestBruneSlipFn::DataStruct data = {meshFilename,
@@ -200,11 +200,11 @@
   const char* slipTimeFilename = "data/tet4_sliptime.spatialdb";
   const char* riseTimeFilename = "data/tet4_risetime.spatialdb";
   const int constraintPts[] = { 3, 4, 5 };
-  const double finalSlipE[] = { 2.3, -0.7, 0.1,
+  const PylithScalar finalSlipE[] = { 2.3, -0.7, 0.1,
 				2.4, -0.8, 0.2,
 				2.5, -0.9, 0.3 };
-  const double slipTimeE[] = { 1.2, 1.3, 1.4 };
-  const double riseTimeE[] = { 1.5, 1.6, 1.7 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3, 1.4 };
+  const PylithScalar riseTimeE[] = { 1.5, 1.6, 1.7 };
   const int numConstraintPts = 3;
 
   _TestBruneSlipFn::DataStruct data = {meshFilename,
@@ -226,11 +226,11 @@
 void
 pylith::faults::TestBruneSlipFn::testSlip(void)
 { // testSlip
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				0.0, 0.0};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double riseTimeE[] = { 1.4, 1.5 };
-  const double originTime = 5.064;
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar riseTimeE[] = { 1.4, 1.5 };
+  const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -250,32 +250,32 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t = 2.134;
+  const PylithScalar t = 2.134;
   slipfn.slip(&slip, originTime+t);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
-    double slipMag = 0.0;
+    PylithScalar slipMag = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       slipMag += pow(finalSlipE[iPoint*spaceDim+iDim], 2);
     slipMag = sqrt(slipMag);
-    const double peakRate = slipMag / riseTimeE[iPoint] * 1.745;
-    const double tau = 
+    const PylithScalar peakRate = slipMag / riseTimeE[iPoint] * 1.745;
+    const PylithScalar tau = 
       (slipMag > 0.0) ? slipMag / (exp(1.0) * peakRate) : 1.0;
-    const double t0 = slipTimeE[iPoint];
-    const double slipNorm = 1.0 - exp(-(t-t0)/tau) * (1.0 + (t-t0)/tau);
+    const PylithScalar t0 = slipTimeE[iPoint];
+    const PylithScalar slipNorm = 1.0 - exp(-(t-t0)/tau) * (1.0 + (t-t0)/tau);
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double slipE = finalSlipE[iPoint*spaceDim+iDim] * slipNorm;
+      const PylithScalar slipE = finalSlipE[iPoint*spaceDim+iDim] * slipNorm;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, vals[iDim], tolerance);
     } // for
   } // for
@@ -286,11 +286,11 @@
 void
 pylith::faults::TestBruneSlipFn::testSlipIncr(void)
 { // testSlipIncr
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				0.0, 0.0};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double riseTimeE[] = { 1.4, 1.5 };
-  const double originTime = 1.064;
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar riseTimeE[] = { 1.4, 1.5 };
+  const PylithScalar originTime = 1.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -310,37 +310,37 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t0 = 1.234;
-  const double t1 = 3.635;
+  const PylithScalar t0 = 1.234;
+  const PylithScalar t1 = 3.635;
   slipfn.slipIncr(&slip, originTime+t0, originTime+t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
-    double slipMag = 0.0;
+    PylithScalar slipMag = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       slipMag += pow(finalSlipE[iPoint*spaceDim+iDim], 2);
     slipMag = sqrt(slipMag);
-    const double peakRate = slipMag / riseTimeE[iPoint] * 1.745;
-    const double tau = 
+    const PylithScalar peakRate = slipMag / riseTimeE[iPoint] * 1.745;
+    const PylithScalar tau = 
       (slipMag > 0.0) ? slipMag / (exp(1.0) * peakRate) : 1.0;
-    const double tRef = slipTimeE[iPoint];
-    const double slipNorm0 = 
+    const PylithScalar tRef = slipTimeE[iPoint];
+    const PylithScalar slipNorm0 = 
       (t0 > tRef) ? 1.0 - exp(-(t0-tRef)/tau) * (1.0 + (t0-tRef)/tau) : 0.0;
-    const double slipNorm1 =
+    const PylithScalar slipNorm1 =
       (t1 > tRef) ? 1.0 - exp(-(t1-tRef)/tau) * (1.0 + (t1-tRef)/tau) : 0.0;
 
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double slipE = 
+      const PylithScalar slipE = 
 	finalSlipE[iPoint*spaceDim+iDim] * (slipNorm1-slipNorm0);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, vals[iDim], tolerance);
     } // for
@@ -352,21 +352,21 @@
 void
 pylith::faults::TestBruneSlipFn::testSlipTH(void)
 { // testSlipTH
-  const double t = 0.734;
-  const double finalSlip = 4.64;
-  const double riseTime = 3.23;
+  const PylithScalar t = 0.734;
+  const PylithScalar finalSlip = 4.64;
+  const PylithScalar riseTime = 3.23;
 
-  const double peakRate = finalSlip / riseTime * 1.745;
-  const double tau = finalSlip / (exp(1.0) * peakRate);
-  const double slipE = finalSlip * (1.0 - exp(-t/tau) * (1.0 + t/tau));
+  const PylithScalar peakRate = finalSlip / riseTime * 1.745;
+  const PylithScalar tau = finalSlip / (exp(1.0) * peakRate);
+  const PylithScalar slipE = finalSlip * (1.0 - exp(-t/tau) * (1.0 + t/tau));
 
-  double slip = BruneSlipFn::_slipFn(t, finalSlip, riseTime);
+  PylithScalar slip = BruneSlipFn::_slipFn(t, finalSlip, riseTime);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, slip, tolerance);
 
   slip = BruneSlipFn::_slipFn(-0.5, finalSlip, riseTime);
-  CPPUNIT_ASSERT_EQUAL(0.0, slip);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(0.0), slip);
 
   slip = BruneSlipFn::_slipFn(1.0e+10, finalSlip, riseTime);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(finalSlip, slip, tolerance);
@@ -378,7 +378,7 @@
 pylith::faults::TestBruneSlipFn::_initialize(topology::Mesh* mesh,
 					     topology::SubMesh* faultMesh,
 					     BruneSlipFn* slipfn,
-					     const double originTime)
+					     const PylithScalar originTime)
 { // _initialize
   CPPUNIT_ASSERT(0 != mesh);
   CPPUNIT_ASSERT(0 != faultMesh);
@@ -523,7 +523,7 @@
   slipfn.dbRiseTime(&dbRiseTime);
   
   spatialdata::units::Nondimensional normalizer;
-  const double originTime = 5.353;
+  const PylithScalar originTime = 5.353;
   
   slipfn.initialize(faultMesh, normalizer, originTime);
 
@@ -542,13 +542,13 @@
     slipfn._parameters->get("rise time").section();
   CPPUNIT_ASSERT(!riseTimeSection.isNull());
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
     CPPUNIT_ASSERT_EQUAL(spaceDim, finalSlipSection->getFiberDimension(*v_iter));
-    const double* finalSlipVertex = finalSlipSection->restrictPoint(*v_iter);
+    const PylithScalar* finalSlipVertex = finalSlipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != finalSlipVertex);
     for (int iDim=0; iDim < spaceDim; ++iDim)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(data.finalSlipE[iPoint*spaceDim+iDim],
@@ -556,13 +556,13 @@
 				   tolerance);
 
     CPPUNIT_ASSERT_EQUAL(1, slipTimeSection->getFiberDimension(*v_iter));
-    const double* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
+    const PylithScalar* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != slipTimeVertex);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipTimeE[iPoint]+originTime,
 				 slipTimeVertex[0], tolerance);
 
     CPPUNIT_ASSERT_EQUAL(1, riseTimeSection->getFiberDimension(*v_iter));
-    const double* riseTimeVertex = riseTimeSection->restrictPoint(*v_iter);
+    const PylithScalar* riseTimeVertex = riseTimeSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != riseTimeVertex);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(data.riseTimeE[iPoint],
 				 riseTimeVertex[0], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -110,7 +110,7 @@
   void _initialize(topology::Mesh* mesh,
 		   topology::SubMesh* faultMesh,
 		   BruneSlipFn* slipfn,
-		   const double originTime);
+		   const PylithScalar originTime);
 
   /** Test intialize().
    *

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,8 +48,8 @@
 	const char* slipRateFilename;
 	const char* slipTimeFilename;
 	const int* constraintPts;
-	const double* slipRateE;
-	const double* slipTimeE;
+	const PylithScalar* slipRateE;
+	const PylithScalar* slipTimeE;
 	const int numConstraintPts;
       }; // DataStruct
     } // _TestConstRateSlipFn
@@ -114,8 +114,8 @@
   const char* slipRateFilename = "data/line2_sliprate.spatialdb";
   const char* slipTimeFilename = "data/line2_sliptime.spatialdb";
   const int constraintPts[] = { 3 };
-  const double slipRateE[] = { 0.4 };
-  const double slipTimeE[] = { 1.2 };
+  const PylithScalar slipRateE[] = { 0.4 };
+  const PylithScalar slipTimeE[] = { 1.2 };
   const int numConstraintPts = 1;
 
   _TestConstRateSlipFn::DataStruct data = {meshFilename,
@@ -141,9 +141,9 @@
   const char* slipRateFilename = "data/tri3_sliprate.spatialdb";
   const char* slipTimeFilename = "data/tri3_sliptime.spatialdb";
   const int constraintPts[] = { 3, 4 };
-  const double slipRateE[] = { 0.1, 0.2, 
+  const PylithScalar slipRateE[] = { 0.1, 0.2, 
 			       0.3, 0.4 };
-  const double slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
   const int numConstraintPts = 2;
 
   _TestConstRateSlipFn::DataStruct data = {meshFilename,
@@ -169,10 +169,10 @@
   const char* slipRateFilename = "data/tet4_sliprate.spatialdb";
   const char* slipTimeFilename = "data/tet4_sliptime.spatialdb";
   const int constraintPts[] = { 3, 4, 5 };
-  const double slipRateE[] = { 1.6, -0.7, 0.1,
+  const PylithScalar slipRateE[] = { 1.6, -0.7, 0.1,
 			       1.7, -0.8, 0.2,
 			       1.8, -0.9, 0.3 };
-  const double slipTimeE[] = { 1.2, 1.3, 1.4 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3, 1.4 };
   const int numConstraintPts = 3;
 
   _TestConstRateSlipFn::DataStruct data = {meshFilename,
@@ -192,10 +192,10 @@
 void
 pylith::faults::TestConstRateSlipFn::testSlip(void)
 { // testSlip
-  const double slipRateE[] = { 0.1, 0.2, 
+  const PylithScalar slipRateE[] = { 0.1, 0.2, 
 			       0.3, 0.4};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double originTime = 5.064;
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -215,24 +215,24 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t = 1.234;
+  const PylithScalar t = 1.234;
   slipfn.slip(&slip, originTime+t);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
-    const double t0 = slipTimeE[iPoint];
+    const PylithScalar t0 = slipTimeE[iPoint];
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double slipE = (t - slipTimeE[iPoint]) > 0.0 ?
+      const PylithScalar slipE = (t - slipTimeE[iPoint]) > 0.0 ?
 	slipRateE[iPoint*spaceDim+iDim] * (t - slipTimeE[iPoint]) : 0.0;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, vals[iDim], tolerance);
     } // for
@@ -244,10 +244,10 @@
 void
 pylith::faults::TestConstRateSlipFn::testSlipIncr(void)
 { // testSlipIncr
-  const double slipRateE[] = { 0.1, 0.2, 
+  const PylithScalar slipRateE[] = { 0.1, 0.2, 
 			       0.3, 0.4 };
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double originTime = 1.064;
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar originTime = 1.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -267,11 +267,11 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t0 = 1.234;
-  const double t1 = 3.635;
+  const PylithScalar t0 = 1.234;
+  const PylithScalar t1 = 3.635;
   slipfn.slipIncr(&slip, originTime+t0, originTime+t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
@@ -280,12 +280,12 @@
        ++v_iter, ++iPoint) {
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double tRef = (slipTimeE[iPoint] > t0) ? slipTimeE[iPoint] : t0;
-      const double slipE = 
+      const PylithScalar tRef = (slipTimeE[iPoint] > t0) ? slipTimeE[iPoint] : t0;
+      const PylithScalar slipE = 
 	slipRateE[iPoint*spaceDim+iDim] * (t1 - tRef);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, vals[iDim], tolerance);
     } // for
@@ -298,7 +298,7 @@
 pylith::faults::TestConstRateSlipFn::_initialize(topology::Mesh* mesh,
 						 topology::SubMesh* faultMesh,
 					    	 ConstRateSlipFn* slipfn,
-						 const double originTime)
+						 const PylithScalar originTime)
 { // _initialize
   CPPUNIT_ASSERT(0 != mesh);
   CPPUNIT_ASSERT(0 != faultMesh);
@@ -430,7 +430,7 @@
   slipfn.dbSlipTime(&dbSlipTime);
   
   spatialdata::units::Nondimensional normalizer;
-  const double originTime = 5.353;
+  const PylithScalar originTime = 5.353;
   
   slipfn.initialize(faultMesh, normalizer, originTime);
 
@@ -446,13 +446,13 @@
     slipfn._parameters->get("slip time").section();
   CPPUNIT_ASSERT(!slipTimeSection.isNull());
 
-  const double tolerance = 1.0e-06;\
+  const PylithScalar tolerance = 1.0e-06;\
   int iPoint = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
     CPPUNIT_ASSERT_EQUAL(spaceDim, slipRateSection->getFiberDimension(*v_iter));
-    const double* slipRateVertex = slipRateSection->restrictPoint(*v_iter);
+    const PylithScalar* slipRateVertex = slipRateSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != slipRateVertex);
     for (int iDim=0; iDim < spaceDim; ++iDim)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipRateE[iPoint*spaceDim+iDim],
@@ -460,7 +460,7 @@
 				   tolerance);
 
     CPPUNIT_ASSERT_EQUAL(1, slipTimeSection->getFiberDimension(*v_iter));
-    const double* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
+    const PylithScalar* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != slipTimeVertex);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipTimeE[iPoint]+originTime,
 				 slipTimeVertex[0], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -102,7 +102,7 @@
   void _initialize(topology::Mesh* mesh,
 		   topology::SubMesh* faultMesh,
 		   ConstRateSlipFn* slipfn,
-		   const double originTime);
+		   const PylithScalar originTime);
 
   /** Test intialize().
    *

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -73,7 +73,7 @@
   topology::SubMesh faultMesh;
   EqKinSrc eqsrc;
   BruneSlipFn slipfn;
-  const double originTime = 2.45;
+  const PylithScalar originTime = 2.45;
   _initialize(&mesh, &faultMesh, &eqsrc, &slipfn, originTime);
   
   // Don't have access to details of slip time function, so we can't
@@ -86,11 +86,11 @@
 void
 pylith::faults::TestEqKinSrc::testSlip(void)
 { // testSlip
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				2.4, 0.2};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double riseTimeE[] = { 1.4, 1.5 };
-  const double originTime = 2.42;
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar riseTimeE[] = { 1.4, 1.5 };
+  const PylithScalar originTime = 2.42;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -111,10 +111,10 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t = 2.134;
+  const PylithScalar t = 2.134;
   eqsrc.slip(&slip, originTime+t);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
 
   const ALE::Obj<RealSection>& slipSection = slip.section();
@@ -122,22 +122,22 @@
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
-    double slipMag = 0.0;
+    PylithScalar slipMag = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       slipMag += pow(finalSlipE[iPoint*spaceDim+iDim], 2);
     slipMag = sqrt(slipMag);
-    const double peakRate = slipMag / riseTimeE[iPoint] * 1.745;
-    const double tau = slipMag / (exp(1.0) * peakRate);
-    const double t0 = slipTimeE[iPoint];
-    const double slipNorm = 1.0 - exp(-(t-t0)/tau) * (1.0 + (t-t0)/tau);
+    const PylithScalar peakRate = slipMag / riseTimeE[iPoint] * 1.745;
+    const PylithScalar tau = slipMag / (exp(1.0) * peakRate);
+    const PylithScalar t0 = slipTimeE[iPoint];
+    const PylithScalar slipNorm = 1.0 - exp(-(t-t0)/tau) * (1.0 + (t-t0)/tau);
 
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double slipE = finalSlipE[iPoint*spaceDim+iDim] * slipNorm;
+      const PylithScalar slipE = finalSlipE[iPoint*spaceDim+iDim] * slipNorm;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, vals[iDim], tolerance);
     } // for
   } // for
@@ -148,11 +148,11 @@
 void
 pylith::faults::TestEqKinSrc::testSlipIncr(void)
 { // testSlip
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				2.4, 0.2};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double riseTimeE[] = { 1.4, 1.5 };
-  const double originTime = -4.29;
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar riseTimeE[] = { 1.4, 1.5 };
+  const PylithScalar originTime = -4.29;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -173,36 +173,36 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t0 = 1.234;
-  const double t1 = 2.525;
+  const PylithScalar t0 = 1.234;
+  const PylithScalar t1 = 2.525;
   eqsrc.slipIncr(&slip, originTime+t0, originTime+t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
-    double slipMag = 0.0;
+    PylithScalar slipMag = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       slipMag += pow(finalSlipE[iPoint*spaceDim+iDim], 2);
     slipMag = sqrt(slipMag);
-    const double peakRate = slipMag / riseTimeE[iPoint] * 1.745;
-    const double tau = slipMag / (exp(1.0) * peakRate);
-    const double tRef = slipTimeE[iPoint];
-    const double slipNorm0 = 
+    const PylithScalar peakRate = slipMag / riseTimeE[iPoint] * 1.745;
+    const PylithScalar tau = slipMag / (exp(1.0) * peakRate);
+    const PylithScalar tRef = slipTimeE[iPoint];
+    const PylithScalar slipNorm0 = 
       (t0 > tRef) ? 1.0 - exp(-(t0-tRef)/tau) * (1.0 + (t0-tRef)/tau) : 0.0;
-    const double slipNorm1 =
+    const PylithScalar slipNorm1 =
       (t1 > tRef) ? 1.0 - exp(-(t1-tRef)/tau) * (1.0 + (t1-tRef)/tau) : 0.0;
     
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double slipE = 
+      const PylithScalar slipE = 
 	finalSlipE[iPoint*spaceDim+iDim] * (slipNorm1 - slipNorm0);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, vals[iDim], tolerance);
     } // for
@@ -216,7 +216,7 @@
 					  topology::SubMesh* faultMesh,
 					  EqKinSrc* eqsrc,
 					  BruneSlipFn* slipfn,
-					  const double originTime)
+					  const PylithScalar originTime)
 { // _initialize
   CPPUNIT_ASSERT(0 != mesh);
   CPPUNIT_ASSERT(0 != faultMesh);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -91,7 +91,7 @@
 		   topology::SubMesh* faultMesh,
 		   EqKinSrc* eqsrc,
 		   BruneSlipFn* slipfn,
-		   const double originTime);
+		   const PylithScalar originTime);
 
 }; // class TestEqKinSrc
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 #include "pylith/faults/FaultCohesiveTract.hh" // USES FaultsCohesiveTract
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
-#include "pylith/utils/array.hh" // USES int_array, double_array
+#include "pylith/utils/array.hh" // USES int_array, scalar_array
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -540,8 +540,8 @@
 	vertices->begin();
       v_iter != vertices->end();
       ++v_iter) {
-    const double* vertexCoords = coordsSection->restrictPoint(*v_iter);
-    const double tolerance = 1.0e-06;
+    const PylithScalar* vertexCoords = coordsSection->restrictPoint(*v_iter);
+    const PylithScalar tolerance = 1.0e-06;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       if (data.vertices[i] < 1.0)
         CPPUNIT_ASSERT_DOUBLES_EQUAL(data.vertices[i++], vertexCoords[iDim],
@@ -686,9 +686,9 @@
 	vertices->begin();
       v_iter != vertices->end();
       ++v_iter) {
-    const double* coordsVertex = coordsSection->restrictPoint(*v_iter);
+    const PylithScalar* coordsVertex = coordsSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != coordsVertex);
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       if (data.vertices[i] < 1.0)
         CPPUNIT_ASSERT_DOUBLES_EQUAL(data.vertices[i++], coordsVertex[iDim],

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -143,11 +143,11 @@
        ++v_iter, ++iVertex) {
     const int fiberDim = orientationSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(orientationSize, fiberDim);
-    const double* orientationVertex =
+    const PylithScalar* orientationVertex =
       orientationSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != orientationVertex);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < orientationSize; ++i) {
       const int index = iVertex*orientationSize+i;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->orientation[index],
@@ -165,10 +165,10 @@
        ++v_iter, ++iVertex) {
     const int fiberDim = areaSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(1, fiberDim);
-    const double* areaVertex = areaSection->restrictPoint(*v_iter);
+    const PylithScalar* areaVertex = areaSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != areaVertex);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->area[iVertex], areaVertex[0],
 				 tolerance);
   } // for
@@ -186,11 +186,11 @@
         ++v_iter, ++iVertex) {
       const int fiberDim = forcesInitialSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-      const double* forcesInitialVertex = 
+      const PylithScalar* forcesInitialVertex = 
 	forcesInitialSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != forcesInitialVertex);
 
-      const double tolerance = 1.0e-06;
+      const PylithScalar tolerance = 1.0e-06;
       for (int i = 0; i < spaceDim; ++i) {
         const int index = iVertex * spaceDim + i;
         CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->forcesInitial[index], 
@@ -216,8 +216,8 @@
 
   const int spaceDim = _data->spaceDim;
 
-  const double t = 2.134;
-  const double dt = 0.01;
+  const PylithScalar t = 2.134;
+  const PylithScalar dt = 0.01;
   fault.timeStep(dt);
   fault.constrainSolnSpace(&fields, t, jacobian);
 
@@ -239,23 +239,23 @@
     //dispIncrSection->view("DISP INCREMENT"); // DEBUGGING
 
     // Get expected values
-    const double* valsE = _data->fieldIncrStick; // No change in dispIncr
+    const PylithScalar* valsE = _data->fieldIncrStick; // No change in dispIncr
     int iVertex = 0; // variable to use as index into valsE array
     const int fiberDimE = spaceDim; // number of values per point
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (SieveMesh::label_sequence::iterator v_iter = verticesBegin;
 	 v_iter != verticesEnd;
 	 ++v_iter, ++iVertex) { // loop over all vertices in mesh
       // Check fiber dimension (number of values at point)
       const int fiberDim = dispIncrSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
-      const double* vals = dispIncrSection->restrictPoint(*v_iter);
+      const PylithScalar* vals = dispIncrSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != vals);
 
       // Check values at point
       for (int i = 0; i < fiberDimE; ++i) {
         const int index = iVertex * spaceDim + i;
-        const double valE = valsE[index];
+        const PylithScalar valE = valsE[index];
         if (fabs(valE) > tolerance)
           CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valE, tolerance);
         else
@@ -283,17 +283,17 @@
       fault._fields->get("slip").section();
     CPPUNIT_ASSERT(!slipSection.isNull());
 
-    const double valE = 0.0; // slip should be zero
+    const PylithScalar valE = 0.0; // slip should be zero
     int iVertex = 0; // variable to use as index into valsE array
     const int fiberDimE = spaceDim; // number of values per point
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (SieveMesh::label_sequence::iterator v_iter = verticesBegin; v_iter
 	   != verticesEnd;
 	 ++v_iter, ++iVertex) { // loop over fault vertices
       // Check fiber dimension (number of values at point)
       const int fiberDim = slipSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
-      const double* vals = slipSection->restrictPoint(*v_iter);
+      const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != vals);
 
       // Check values at point
@@ -322,8 +322,8 @@
 
   const int spaceDim = _data->spaceDim;
 
-  const double t = 2.134;
-  const double dt = 0.01;
+  const PylithScalar t = 2.134;
+  const PylithScalar dt = 0.01;
   fault.timeStep(dt);
   fault.constrainSolnSpace(&fields, t, jacobian);
 
@@ -346,23 +346,23 @@
     CPPUNIT_ASSERT(!dispIncrSection.isNull());
 
     // Get expected values
-    const double* valsE = _data->fieldIncrSlipE; // Expected values for dispIncr
+    const PylithScalar* valsE = _data->fieldIncrSlipE; // Expected values for dispIncr
     int iVertex = 0; // variable to use as index into valsE array
     const int fiberDimE = spaceDim; // number of values per point
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (SieveMesh::label_sequence::iterator v_iter = verticesBegin;
 	 v_iter != verticesEnd;
 	 ++v_iter, ++iVertex) { // loop over all vertices in mesh
       // Check fiber dimension (number of values at point)
       const int fiberDim = dispIncrSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
-      const double* vals = dispIncrSection->restrictPoint(*v_iter);
+      const PylithScalar* vals = dispIncrSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != vals);
 
       // Check values at point
       for (int i = 0; i < fiberDimE; ++i) {
         const int index = iVertex * spaceDim + i;
-        const double valE = valsE[index];
+        const PylithScalar valE = valsE[index];
 #if 0 // DEBUGGING
 	std::cout << "SOLUTION valE: " << valE
 		  << ", val: " << vals[i]
@@ -398,23 +398,23 @@
     CPPUNIT_ASSERT(!slipSection.isNull());
 
     // Get expected values
-    const double* valsE = _data->slipSlipE;
+    const PylithScalar* valsE = _data->slipSlipE;
     int iVertex = 0; // variable to use as index into valsE array
     const int fiberDimE = spaceDim; // number of values per point
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-05;
     for (SieveMesh::label_sequence::iterator v_iter = verticesBegin; v_iter
 	   != verticesEnd;
 	 ++v_iter, ++iVertex) { // loop over fault vertices
       // Check fiber dimension (number of values at point)
       const int fiberDim = slipSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
-      const double* vals = slipSection->restrictPoint(*v_iter);
+      const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != vals);
 
       // Check values at point
       for (int i = 0; i < fiberDimE; ++i) {
         const int index = iVertex * spaceDim + i;
-        const double valE = valsE[index];
+        const PylithScalar valE = valsE[index];
 #if 0 // DEBUGGING
 	std::cout << "SLIP valE: " << valE
 		  << ", val: " << vals[i]
@@ -447,8 +447,8 @@
 
   const int spaceDim = _data->spaceDim;
 
-  const double t = 2.134;
-  const double dt = 0.01;
+  const PylithScalar t = 2.134;
+  const PylithScalar dt = 0.01;
   fault.timeStep(dt);
   fault.constrainSolnSpace(&fields, t, jacobian);
 
@@ -471,23 +471,23 @@
     CPPUNIT_ASSERT(!dispIncrSection.isNull());
 
     // Get expected values
-    const double* valsE = _data->fieldIncrOpenE; // Expected values for dispIncr
+    const PylithScalar* valsE = _data->fieldIncrOpenE; // Expected values for dispIncr
     int iVertex = 0; // variable to use as index into valsE array
     const int fiberDimE = spaceDim; // number of values per point
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 8.0e-06;
     for (SieveMesh::label_sequence::iterator v_iter = verticesBegin;
 	 v_iter != verticesEnd;
 	 ++v_iter, ++iVertex) { // loop over all vertices in mesh
       // Check fiber dimension (number of values at point)
       const int fiberDim = dispIncrSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
-      const double* vals = dispIncrSection->restrictPoint(*v_iter);
+      const PylithScalar* vals = dispIncrSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != vals);
 
       // Check values at point
       for (int i = 0; i < fiberDimE; ++i) {
         const int index = iVertex * spaceDim + i;
-        const double valE = valsE[index];
+        const PylithScalar valE = valsE[index];
 #if 0 // DEBUGGING
 	std::cout << "valE: " << valE
 		  << ", val: " << vals[i]
@@ -522,23 +522,23 @@
     CPPUNIT_ASSERT(!slipSection.isNull());
 
     // Get expected values
-    const double* valsE = _data->slipOpenE;
+    const PylithScalar* valsE = _data->slipOpenE;
     int iVertex = 0; // variable to use as index into valsE array
     const int fiberDimE = spaceDim; // number of values per point
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 8.0e-06;
     for (SieveMesh::label_sequence::iterator v_iter = verticesBegin; v_iter
 	   != verticesEnd;
 	 ++v_iter, ++iVertex) { // loop over fault vertices
       // Check fiber dimension (number of values at point)
       const int fiberDim = slipSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
-      const double* vals = slipSection->restrictPoint(*v_iter);
+      const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != vals);
 
       // Check values at point
       for (int i = 0; i < fiberDimE; ++i) {
         const int index = iVertex * spaceDim + i;
-        const double valE = valsE[index];
+        const PylithScalar valE = valsE[index];
 #if 0 // DEBUGGING
 	std::cout << "valE: " << valE
 		  << ", val: " << vals[i]
@@ -570,8 +570,8 @@
 
   const int spaceDim = _data->spaceDim;
 
-  const double t = 2.134;
-  const double dt = 0.01;
+  const PylithScalar t = 2.134;
+  const PylithScalar dt = 0.01;
   fault.timeStep(dt);
   fault.updateStateVars(t, &fields);
 
@@ -602,7 +602,7 @@
   const ALE::Obj<RealSection>& tractionsSection = tractions.section();
   CPPUNIT_ASSERT(!tractionsSection.isNull());
 
-  const double t = 0;
+  const PylithScalar t = 0;
   fault.updateStateVars(t, &fields);
   fault._calcTractions(&tractions, fields.get("disp(t)"));
 
@@ -627,7 +627,7 @@
   CPPUNIT_ASSERT(!dispSection.isNull());
 
   int iVertex = 0;
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (SieveMesh::label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter, ++iVertex) {
@@ -646,17 +646,17 @@
     CPPUNIT_ASSERT(found);
     int fiberDim = tractionsSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* tractionsVertex = tractionsSection->restrictPoint(*v_iter);
+    const PylithScalar* tractionsVertex = tractionsSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != tractionsVertex);
 
     fiberDim = dispSection->getFiberDimension(meshVertex);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* dispVertex = dispSection->restrictPoint(meshVertex);
+    const PylithScalar* dispVertex = dispSection->restrictPoint(meshVertex);
     CPPUNIT_ASSERT(0 != dispVertex);
 
-    const double scale = 1.0 / _data->area[iVertex];
+    const PylithScalar scale = 1.0 / _data->area[iVertex];
     for (int iDim=0; iDim < spaceDim; ++iDim) {
-      const double tractionE = dispVertex[iDim] * scale;
+      const PylithScalar tractionE = dispVertex[iDim] * scale;
       if (tractionE != 0.0)
         CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, tractionsVertex[iDim]/tractionE,
 				     tolerance);
@@ -766,7 +766,7 @@
           FaultCohesiveDyn* const fault,
           topology::SolutionFields* const fields,
           topology::Jacobian* const jacobian,
-          const double* const fieldIncr)
+          const PylithScalar* const fieldIncr)
 { // _initialize
   CPPUNIT_ASSERT(0 != mesh);
   CPPUNIT_ASSERT(0 != fault);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDyn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -136,7 +136,7 @@
       FaultCohesiveDyn* const fault,
       topology::SolutionFields* const fields,
       topology::Jacobian* const jacobian,
-      const double* const fieldIncrVals);
+      const PylithScalar* const fieldIncrVals);
 
   /** Determine if vertex is a Lagrange multiplier constraint vertex.
    *

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -212,11 +212,11 @@
        ++v_iter, ++iVertex) {
     const int fiberDim = orientationSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(orientationSize, fiberDim);
-    const double* orientationVertex =
+    const PylithScalar* orientationVertex =
       orientationSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != orientationVertex);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < orientationSize; ++i) {
       const int index = iVertex*orientationSize+i;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->orientation[index],
@@ -234,10 +234,10 @@
        ++v_iter, ++iVertex) {
     const int fiberDim = areaSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(1, fiberDim);
-    const double* areaVertex = areaSection->restrictPoint(*v_iter);
+    const PylithScalar* areaVertex = areaSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != areaVertex);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->area[iVertex], areaVertex[0],
 				 tolerance);
   } // for
@@ -273,8 +273,8 @@
        ++v_iter, ++iVertex)
     dispSection->updatePoint(*v_iter, &_data->fieldT[iVertex*spaceDim]);
   
-  const double t = 2.134;
-  const double dt = 0.01;
+  const PylithScalar t = 2.134;
+  const PylithScalar dt = 0.01;
   fault.timeStep(dt);
 
   { // Integrate residual with disp (as opposed to disp increment).
@@ -284,21 +284,21 @@
     //residual.view("RESIDUAL"); // DEBUGGING
 
     // Check values
-    const double* valsE = _data->residual;
+    const PylithScalar* valsE = _data->residual;
     iVertex = 0;
     const int fiberDimE = spaceDim;
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 4.0e-06;
     for (SieveMesh::label_sequence::iterator v_iter=verticesBegin;
         v_iter != verticesEnd;
         ++v_iter, ++iVertex) {
       const int fiberDim = residualSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
-      const double* vals = residualSection->restrictPoint(*v_iter);
+      const PylithScalar* vals = residualSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != vals);
       
       for (int i = 0; i < fiberDimE; ++i) {
         const int index = iVertex * spaceDim + i;
-        const double valE = valsE[index];
+        const PylithScalar valE = valsE[index];
         if (fabs(valE) > tolerance)
           CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valE, tolerance);
         else
@@ -315,21 +315,21 @@
     //residual.view("RESIDUAL"); // DEBUGGING
 
     // Check values
-    const double* valsE = _data->residualIncr;
+    const PylithScalar* valsE = _data->residualIncr;
     iVertex = 0;
     const int fiberDimE = spaceDim;
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 4.0e-06;
     for (SieveMesh::label_sequence::iterator v_iter=verticesBegin;
 	 v_iter != verticesEnd;
 	 ++v_iter, ++iVertex) {
       const int fiberDim = residualSection->getFiberDimension(*v_iter);
       CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
-      const double* vals = residualSection->restrictPoint(*v_iter);
+      const PylithScalar* vals = residualSection->restrictPoint(*v_iter);
       CPPUNIT_ASSERT(0 != vals);
       
       for (int i = 0; i < fiberDimE; ++i) {
         const int index = iVertex * spaceDim + i;
-        const double valE = valsE[index];
+        const PylithScalar valE = valsE[index];
         if (fabs(valE) > tolerance)
           CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valE, tolerance);
         else
@@ -367,7 +367,7 @@
 
   topology::Jacobian jacobian(fields.solution());
 
-  const double t = 2.134;
+  const PylithScalar t = 2.134;
   fault.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, fault.needNewJacobian());
 
@@ -375,7 +375,7 @@
 
   //MatView(jacobian.matrix(), PETSC_VIEWER_STDOUT_WORLD); // DEBUGGING
 
-  const double* valsE = _data->jacobian;
+  const PylithScalar* valsE = _data->jacobian;
   const int nrowsE = dispSection->sizeWithBC();
   const int ncolsE = nrowsE;
 
@@ -392,7 +392,7 @@
   MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
   MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -400,11 +400,11 @@
   for (int iCol=0; iCol < ncols; ++iCol)
     cols[iCol] = iCol;
   MatGetValues(jDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int index = ncols*iRow+iCol;
-      const double valE = valsE[index];
+      const PylithScalar valE = valsE[index];
 #if 0 // DEBUGGING
       if (fabs(valE-vals[index]) > tolerance)
 	std::cout << "ERROR: iRow: " << iRow << ", iCol: " << iCol
@@ -438,7 +438,7 @@
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   jacobian.allocate();
 
-  const double t = 2.134;
+  const PylithScalar t = 2.134;
   fault.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, fault.needNewJacobian());
   jacobian.complete();
@@ -449,7 +449,7 @@
   CPPUNIT_ASSERT(!jacobianSection.isNull());
 
   int iVertex = 0;
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int spaceDim = _data->spaceDim;
   const ALE::Obj<SieveSubMesh>& faultSieveMesh = fault._faultMesh->sieveMesh();
   CPPUNIT_ASSERT(!faultSieveMesh.isNull());
@@ -483,7 +483,7 @@
     CPPUNIT_ASSERT(found);
     int fiberDim = jacobianSection->getFiberDimension(meshVertex);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* jacobianVertex = jacobianSection->restrictPoint(meshVertex);
+    const PylithScalar* jacobianVertex = jacobianSection->restrictPoint(meshVertex);
     CPPUNIT_ASSERT(0 != jacobianVertex);
     for (int iDim=0; iDim < spaceDim; ++iDim)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, jacobianVertex[iDim],
@@ -522,8 +522,8 @@
   } // setup disp
 
   // compute residual so that slip and residual are setup
-  const double t = 2.134;
-  const double dt = 0.01;
+  const PylithScalar t = 2.134;
+  const PylithScalar dt = 0.01;
   fault.timeStep(dt);
   topology::Field<topology::Mesh>& residual = fields.get("residual");
   fault.integrateResidual(residual, t, &fields);
@@ -570,14 +570,14 @@
   CPPUNIT_ASSERT(!solutionSection.isNull());
 
   int i = 0;
-  const double tolerance = 1.0e-06;
-  const double* solutionE = _data->fieldIncrAdjusted;
+  const PylithScalar tolerance = 8.0e-06;
+  const PylithScalar* solutionE = _data->fieldIncrAdjusted;
   for (SieveMesh::label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter) {
     const int fiberDim = solutionSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* solutionVertex = solutionSection->restrictPoint(*v_iter);
+    const PylithScalar* solutionVertex = solutionSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != solutionVertex);
     for (int iDim=0; iDim < spaceDim; ++iDim, ++i)
       if (0.0 != solutionE[i])
@@ -619,8 +619,8 @@
   } // setup disp
   topology::Field<topology::Mesh>& residual = fields.get("residual");
 
-  const double t = 2.134;
-  const double dt = 0.01;
+  const PylithScalar t = 2.134;
+  const PylithScalar dt = 0.01;
   fault.useSolnIncr(false);
   fault.timeStep(dt);
   fault.integrateResidual(residual, t, &fields);
@@ -658,7 +658,7 @@
   } // for
 
   int iVertex = 0;
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
        v_iter != verticesEnd;
        ++v_iter, ++iVertex) {
@@ -677,10 +677,10 @@
     // Check _slip
     int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* slipV = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* slipV = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != slipV);
 
-    const double* slipE = slipESection->restrictPoint(*v_iter);
+    const PylithScalar* slipE = slipESection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != slipE);
 
     for (int iDim=0; iDim < spaceDim; ++iDim) {
@@ -729,12 +729,12 @@
   const ALE::Obj<RealSection>& tractionsSection = tractions.section();
   CPPUNIT_ASSERT(!tractionsSection.isNull());
 
-  const double t = 0;
+  const PylithScalar t = 0;
   fault.updateStateVars(t, &fields);  
   fault._calcTractionsChange(&tractions, fields.get("disp(t)"));
 
   int iVertex = 0;
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const ALE::Obj<SieveSubMesh>& faultSieveMesh = fault._faultMesh->sieveMesh();
   CPPUNIT_ASSERT(!faultSieveMesh.isNull());
   const ALE::Obj<SieveMesh::label_sequence>& vertices =
@@ -767,17 +767,17 @@
     CPPUNIT_ASSERT(found);
     int fiberDim = tractionsSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* tractionsVertex = tractionsSection->restrictPoint(*v_iter);
+    const PylithScalar* tractionsVertex = tractionsSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != tractionsVertex);
 
     fiberDim = dispSection->getFiberDimension(meshVertex);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* dispVertex = dispSection->restrictPoint(meshVertex);
+    const PylithScalar* dispVertex = dispSection->restrictPoint(meshVertex);
     CPPUNIT_ASSERT(0 != dispVertex);
 
-    const double scale = 1.0 / _data->area[iVertex];
+    const PylithScalar scale = 1.0 / _data->area[iVertex];
     for (int iDim=0; iDim < spaceDim; ++iDim) {
-      const double tractionE = dispVertex[iDim] * scale;
+      const PylithScalar tractionE = dispVertex[iDim] * scale;
       if (tractionE > 1.0) 
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, tractionsVertex[iDim]/tractionE,
 				     tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,9 +54,9 @@
 	const char* slipTimeFilename;
 	const char* riseTimeFilename;
 	const int* constraintPts;
-	const double* finalSlipE;
-	const double* slipTimeE;
-	const double* riseTimeE;
+	const PylithScalar* finalSlipE;
+	const PylithScalar* slipTimeE;
+	const PylithScalar* riseTimeE;
 	const int numConstraintPts;
       }; // DataStruct
     } // _TestLiuCosSlipFn
@@ -137,9 +137,9 @@
   const char* slipTimeFilename = "data/line2_sliptime.spatialdb";
   const char* riseTimeFilename = "data/line2_risetime.spatialdb";
   const int constraintPts[] = { 3 };
-  const double finalSlipE[] = { 2.3 };
-  const double slipTimeE[] = { 1.2 };
-  const double riseTimeE[] = { 1.4 };
+  const PylithScalar finalSlipE[] = { 2.3 };
+  const PylithScalar slipTimeE[] = { 1.2 };
+  const PylithScalar riseTimeE[] = { 1.4 };
   const int numConstraintPts = 1;
 
   _TestLiuCosSlipFn::DataStruct data = {meshFilename,
@@ -168,10 +168,10 @@
   const char* slipTimeFilename = "data/tri3_sliptime.spatialdb";
   const char* riseTimeFilename = "data/tri3_risetime.spatialdb";
   const int constraintPts[] = { 3, 4 };
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				2.4, 0.2};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double riseTimeE[] = { 1.4, 1.5 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar riseTimeE[] = { 1.4, 1.5 };
   const int numConstraintPts = 2;
 
   _TestLiuCosSlipFn::DataStruct data = {meshFilename,
@@ -200,11 +200,11 @@
   const char* slipTimeFilename = "data/tet4_sliptime.spatialdb";
   const char* riseTimeFilename = "data/tet4_risetime.spatialdb";
   const int constraintPts[] = { 3, 4, 5 };
-  const double finalSlipE[] = { 2.3, -0.7, 0.1,
+  const PylithScalar finalSlipE[] = { 2.3, -0.7, 0.1,
 				2.4, -0.8, 0.2,
 				2.5, -0.9, 0.3 };
-  const double slipTimeE[] = { 1.2, 1.3, 1.4 };
-  const double riseTimeE[] = { 1.5, 1.6, 1.7 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3, 1.4 };
+  const PylithScalar riseTimeE[] = { 1.5, 1.6, 1.7 };
   const int numConstraintPts = 3;
 
   _TestLiuCosSlipFn::DataStruct data = {meshFilename,
@@ -226,11 +226,11 @@
 void
 pylith::faults::TestLiuCosSlipFn::testSlip(void)
 { // testSlip
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				0.0, 0.0};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double riseTimeE[] = { 1.4, 1.5 };
-  const double originTime = 5.064;
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar riseTimeE[] = { 1.4, 1.5 };
+  const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -250,32 +250,32 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t = 2.134;
+  const PylithScalar t = 2.134;
   slipfn.slip(&slip, originTime+t);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
-    double slipMag = 0.0;
+    PylithScalar slipMag = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       slipMag += pow(finalSlipE[iPoint*spaceDim+iDim], 2);
     slipMag = sqrt(slipMag);
 
-    const double slipNorm = (slipMag > 0.0) ?
+    const PylithScalar slipNorm = (slipMag > 0.0) ?
       _slipFn(t - slipTimeE[iPoint], slipMag, riseTimeE[iPoint]) / slipMag :
       0.0;
 
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
     
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double slipE = finalSlipE[iPoint*spaceDim+iDim] * slipNorm;
+      const PylithScalar slipE = finalSlipE[iPoint*spaceDim+iDim] * slipNorm;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, vals[iDim], tolerance);
     } // for
   } // for
@@ -286,11 +286,11 @@
 void
 pylith::faults::TestLiuCosSlipFn::testSlipIncr(void)
 { // testSlipIncr
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				0.0, 0.0};
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double riseTimeE[] = { 1.4, 1.5 };
-  const double originTime = 1.064;
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar riseTimeE[] = { 1.4, 1.5 };
+  const PylithScalar originTime = 1.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -310,36 +310,36 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t0 = 1.234;
-  const double t1 = 3.635;
+  const PylithScalar t0 = 1.234;
+  const PylithScalar t1 = 3.635;
   slipfn.slipIncr(&slip, originTime+t0, originTime+t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
-    double slipMag = 0.0;
+    PylithScalar slipMag = 0.0;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       slipMag += pow(finalSlipE[iPoint*spaceDim+iDim], 2);
     slipMag = sqrt(slipMag);
 
-    const double slipNorm0 = (slipMag > 0.0) ?
+    const PylithScalar slipNorm0 = (slipMag > 0.0) ?
       _slipFn(t0 - slipTimeE[iPoint], slipMag, riseTimeE[iPoint]) / slipMag :
       0.0;
-    const double slipNorm1 = (slipMag > 0.0) ?
+    const PylithScalar slipNorm1 = (slipMag > 0.0) ?
       _slipFn(t1 - slipTimeE[iPoint], slipMag, riseTimeE[iPoint]) / slipMag :
       0.0;
 
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double slipE = 
+      const PylithScalar slipE = 
 	finalSlipE[iPoint*spaceDim+iDim] * (slipNorm1-slipNorm0);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, vals[iDim], tolerance);
     } // for
@@ -351,19 +351,19 @@
 void
 pylith::faults::TestLiuCosSlipFn::testSlipTH(void)
 { // testSlipTH
-  const double t = 0.734;
-  const double finalSlip = 4.64;
-  const double riseTime = 3.23;
+  const PylithScalar t = 0.734;
+  const PylithScalar finalSlip = 4.64;
+  const PylithScalar riseTime = 3.23;
 
-  const double slipE = _slipFn(t, finalSlip, riseTime);
+  const PylithScalar slipE = _slipFn(t, finalSlip, riseTime);
 
-  double slip = LiuCosSlipFn::_slipFn(t, finalSlip, riseTime);
+  PylithScalar slip = LiuCosSlipFn::_slipFn(t, finalSlip, riseTime);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE, slip, tolerance);
 
   slip = LiuCosSlipFn::_slipFn(-0.5, finalSlip, riseTime);
-  CPPUNIT_ASSERT_EQUAL(0.0, slip);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(0.0), slip);
 
   slip = LiuCosSlipFn::_slipFn(1.0e+10, finalSlip, riseTime);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(finalSlip, slip, tolerance);
@@ -375,7 +375,7 @@
 pylith::faults::TestLiuCosSlipFn::_initialize(topology::Mesh* mesh,
 					      topology::SubMesh* faultMesh,
 					      LiuCosSlipFn* slipfn,
-					      const double originTime)
+					      const PylithScalar originTime)
 { // _initialize
   assert(0 != slipfn);
 
@@ -516,7 +516,7 @@
   slipfn.dbRiseTime(&dbRiseTime);
   
   spatialdata::units::Nondimensional normalizer;
-  const double originTime = 5.353;
+  const PylithScalar originTime = 5.353;
   
   slipfn.initialize(faultMesh, normalizer, originTime);
 
@@ -535,13 +535,13 @@
     slipfn._parameters->get("rise time").section();
   CPPUNIT_ASSERT(!riseTimeSection.isNull());
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
     CPPUNIT_ASSERT_EQUAL(spaceDim, finalSlipSection->getFiberDimension(*v_iter));
-    const double* finalSlipVertex = finalSlipSection->restrictPoint(*v_iter);
+    const PylithScalar* finalSlipVertex = finalSlipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != finalSlipVertex);
     for (int iDim=0; iDim < spaceDim; ++iDim)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(data.finalSlipE[iPoint*spaceDim+iDim],
@@ -549,13 +549,13 @@
 				   tolerance);
 
     CPPUNIT_ASSERT_EQUAL(1, slipTimeSection->getFiberDimension(*v_iter));
-    const double* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
+    const PylithScalar* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != slipTimeVertex);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipTimeE[iPoint]+originTime,
 				 slipTimeVertex[0], tolerance);
 
     CPPUNIT_ASSERT_EQUAL(1, riseTimeSection->getFiberDimension(*v_iter));
-    const double* riseTimeVertex = riseTimeSection->restrictPoint(*v_iter);
+    const PylithScalar* riseTimeVertex = riseTimeSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != riseTimeVertex);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(data.riseTimeE[iPoint],
 				 riseTimeVertex[0], tolerance);
@@ -564,10 +564,10 @@
 
 // ----------------------------------------------------------------------
 // Slip time function.
-double
-pylith::faults::TestLiuCosSlipFn::_slipFn(const double t,
-					  const double finalSlip,
-					  const double riseTime)
+PylithScalar
+pylith::faults::TestLiuCosSlipFn::_slipFn(const PylithScalar t,
+					  const PylithScalar finalSlip,
+					  const PylithScalar riseTime)
 { // _slipFn
   const float tau = riseTime * 1.525;
   const float tau1 = 0.13 * tau;
@@ -575,7 +575,7 @@
   const float Cn = 
     M_PI /  (1.4 * M_PI * tau1 + 1.2 * tau1 + 0.3 * M_PI * tau2);
   
-  double slip = 0.0;
+  PylithScalar slip = 0.0;
   if (t <= tau1) {
     slip = 0.7*t - 0.7*tau1/M_PI*sin(M_PI*t/tau1) 
       - 0.6*tau1/(0.5*M_PI)*(cos(0.5*M_PI*t/tau1) - 1.0);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -110,7 +110,7 @@
   void _initialize(topology::Mesh* mesh,
 		   topology::SubMesh* faultMesh,
 		   LiuCosSlipFn* slipfn,
-		   const double originTime);
+		   const PylithScalar originTime);
 
   /** Test intialize().
    *
@@ -126,9 +126,9 @@
    * @param riseTime Rise time (t95).
    */
   static
-  double _slipFn(const double t,
-		 const double finalSlip,
-		 const double riseTime);
+  PylithScalar _slipFn(const PylithScalar t,
+		 const PylithScalar finalSlip,
+		 const PylithScalar riseTime);
 
 }; // class TestLiuCosSlipFn
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,8 +48,8 @@
 	const char* finalSlipFilename;
 	const char* slipTimeFilename;
 	const int* constraintPts;
-	const double* finalSlipE;
-	const double* slipTimeE;
+	const PylithScalar* finalSlipE;
+	const PylithScalar* slipTimeE;
 	const int numConstraintPts;
       }; // DataStruct
     } // _TestStepSlipFn
@@ -114,8 +114,8 @@
   const char* finalSlipFilename = "data/line2_finalslip.spatialdb";
   const char* slipTimeFilename = "data/line2_sliptime.spatialdb";
   const int constraintPts[] = { 3 };
-  const double finalSlipE[] = { 2.3 };
-  const double slipTimeE[] = { 1.2 };
+  const PylithScalar finalSlipE[] = { 2.3 };
+  const PylithScalar slipTimeE[] = { 1.2 };
   const int numConstraintPts = 1;
 
   _TestStepSlipFn::DataStruct data = {meshFilename,
@@ -141,9 +141,9 @@
   const char* finalSlipFilename = "data/tri3_finalslip.spatialdb";
   const char* slipTimeFilename = "data/tri3_sliptime.spatialdb";
   const int constraintPts[] = { 3, 4 };
-  const double finalSlipE[] = { 2.3, 0.1, 
+  const PylithScalar finalSlipE[] = { 2.3, 0.1, 
 				2.4, 0.2 };
-  const double slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
   const int numConstraintPts = 2;
 
   _TestStepSlipFn::DataStruct data = {meshFilename,
@@ -169,10 +169,10 @@
   const char* finalSlipFilename = "data/tet4_finalslip.spatialdb";
   const char* slipTimeFilename = "data/tet4_sliptime.spatialdb";
   const int constraintPts[] = { 3, 4, 5 };
-  const double finalSlipE[] = { 2.3, -0.7, 0.1,
+  const PylithScalar finalSlipE[] = { 2.3, -0.7, 0.1,
 				2.4, -0.8, 0.2,
 				2.5, -0.9, 0.3 };
-  const double slipTimeE[] = { 1.2, 1.3, 1.4 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3, 1.4 };
   const int numConstraintPts = 3;
 
   _TestStepSlipFn::DataStruct data = {meshFilename,
@@ -192,9 +192,9 @@
 void
 pylith::faults::TestStepSlipFn::testSlip(void)
 { // testSlip
-  const double slipE[] = { 2.3, 0.1, 
+  const PylithScalar slipE[] = { 2.3, 0.1, 
 			   0.0, 0.0};
-  const double originTime = 5.064;
+  const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -214,10 +214,10 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t = 1.234;
+  const PylithScalar t = 1.234;
   slipfn.slip(&slip, originTime+t);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
@@ -226,7 +226,7 @@
        ++v_iter, ++iPoint) {
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim)
@@ -240,9 +240,9 @@
 void
 pylith::faults::TestStepSlipFn::testSlipIncr(void)
 { // testSlipIncr
-  const double slipE[] = { 0.0, 0.0, 
+  const PylithScalar slipE[] = { 0.0, 0.0, 
 			   2.4, 0.2};
-  const double originTime = 1.064;
+  const PylithScalar originTime = 1.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -262,11 +262,11 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t0 = 1.234;
-  const double t1 = 2.525;
+  const PylithScalar t0 = 1.234;
+  const PylithScalar t1 = 2.525;
   slipfn.slipIncr(&slip, originTime+t0, originTime+t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
@@ -275,7 +275,7 @@
        ++v_iter, ++iPoint) {
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim)
@@ -290,7 +290,7 @@
 pylith::faults::TestStepSlipFn::_initialize(topology::Mesh* mesh,
 					    topology::SubMesh* faultMesh,
 					    StepSlipFn* slipfn,
-					    const double originTime)
+					    const PylithScalar originTime)
 { // _initialize
   CPPUNIT_ASSERT(0 != mesh);
   CPPUNIT_ASSERT(0 != faultMesh);
@@ -422,7 +422,7 @@
   slipfn.dbSlipTime(&dbSlipTime);
   
   spatialdata::units::Nondimensional normalizer;
-  const double originTime = 5.353;
+  const PylithScalar originTime = 5.353;
   
   slipfn.initialize(faultMesh, normalizer, originTime);
 
@@ -438,13 +438,13 @@
     slipfn._parameters->get("slip time").section();
   CPPUNIT_ASSERT(!slipTimeSection.isNull());
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
     CPPUNIT_ASSERT_EQUAL(spaceDim, finalSlipSection->getFiberDimension(*v_iter));
-    const double* finalSlipVertex = finalSlipSection->restrictPoint(*v_iter);
+    const PylithScalar* finalSlipVertex = finalSlipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != finalSlipVertex);
     for (int iDim=0; iDim < spaceDim; ++iDim)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(data.finalSlipE[iPoint*spaceDim+iDim],
@@ -452,7 +452,7 @@
 				   tolerance);
 
     CPPUNIT_ASSERT_EQUAL(1, slipTimeSection->getFiberDimension(*v_iter));
-    const double* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
+    const PylithScalar* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != slipTimeVertex);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipTimeE[iPoint]+originTime,
 				 slipTimeVertex[0], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -102,7 +102,7 @@
   void _initialize(topology::Mesh* mesh,
 		   topology::SubMesh* faultMesh,
 		   StepSlipFn* slipfn,
-		   const double originTime);
+		   const PylithScalar originTime);
 
   /** Test intialize().
    *

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,8 +55,8 @@
 	const char* slipTimeFilename;
 	const char* timeHistoryFilename;
 	const int* constraintPts;
-	const double* amplitudeE;
-	const double* slipTimeE;
+	const PylithScalar* amplitudeE;
+	const PylithScalar* slipTimeE;
 	const int numConstraintPts;
       }; // DataStruct
     } // _TestTimeHistorySlipFn
@@ -137,8 +137,8 @@
   const char* slipTimeFilename = "data/line2_sliptime.spatialdb";
   const char* timeHistoryFilename = "data/slipfn.timedb";
   const int constraintPts[] = { 3 };
-  const double amplitudeE[] = { 2.3 };
-  const double slipTimeE[] = { 1.2 };
+  const PylithScalar amplitudeE[] = { 2.3 };
+  const PylithScalar slipTimeE[] = { 1.2 };
   const int numConstraintPts = 1;
 
   _TestTimeHistorySlipFn::DataStruct data = {meshFilename,
@@ -166,9 +166,9 @@
   const char* slipTimeFilename = "data/tri3_sliptime.spatialdb";
   const char* timeHistoryFilename = "data/slipfn.timedb";
   const int constraintPts[] = { 3, 4 };
-  const double amplitudeE[] = { 2.3, 0.1, 
+  const PylithScalar amplitudeE[] = { 2.3, 0.1, 
 				2.4, 0.2};
-  const double slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
   const int numConstraintPts = 2;
 
   _TestTimeHistorySlipFn::DataStruct data = {meshFilename,
@@ -196,10 +196,10 @@
   const char* slipTimeFilename = "data/tet4_sliptime.spatialdb";
   const char* timeHistoryFilename = "data/slipfn.timedb";
   const int constraintPts[] = { 3, 4, 5 };
-  const double amplitudeE[] = { 2.3, -0.7, 0.1,
+  const PylithScalar amplitudeE[] = { 2.3, -0.7, 0.1,
 				2.4, -0.8, 0.2,
 				2.5, -0.9, 0.3 };
-  const double slipTimeE[] = { 1.2, 1.3, 1.4 };
+  const PylithScalar slipTimeE[] = { 1.2, 1.3, 1.4 };
   const int numConstraintPts = 3;
 
   _TestTimeHistorySlipFn::DataStruct data = {meshFilename,
@@ -220,10 +220,10 @@
 void
 pylith::faults::TestTimeHistorySlipFn::testSlip(void)
 { // testSlip
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double slipE[] = { 0.92, 0.04,
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar slipE[] = { 0.92, 0.04,
 			   0.84, 0.07 };
-  const double originTime = 5.064;
+  const PylithScalar originTime = 5.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -244,10 +244,10 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t = 2.0;
+  const PylithScalar t = 2.0;
   slipfn.slip(&slip, originTime+t);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
@@ -256,7 +256,7 @@
        ++v_iter, ++iPoint) {
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
     
     for (int iDim=0; iDim < fiberDim; ++iDim)
@@ -270,10 +270,10 @@
 void
 pylith::faults::TestTimeHistorySlipFn::testSlipIncr(void)
 { // testSlipIncr
-  const double slipTimeE[] = { 1.2, 1.3 };
-  const double slipE[] = { 0.92, 0.04, 
+  const PylithScalar slipTimeE[] = { 1.2, 1.3 };
+  const PylithScalar slipE[] = { 0.92, 0.04, 
 			   0.984, 0.082};
-  const double originTime = 1.064;
+  const PylithScalar originTime = 1.064;
 
   topology::Mesh mesh;
   topology::SubMesh faultMesh;
@@ -294,11 +294,11 @@
   slip.newSection(vertices, spaceDim);
   slip.allocate();
 
-  const double t0 = 3.2;
-  const double t1 = 9.7;
+  const PylithScalar t0 = 3.2;
+  const PylithScalar t1 = 9.7;
   slipfn.slipIncr(&slip, originTime+t0, originTime+t1);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   const ALE::Obj<RealSection>& slipSection = slip.section();
   CPPUNIT_ASSERT(!slipSection.isNull());
@@ -308,7 +308,7 @@
 
     const int fiberDim = slipSection->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
-    const double* vals = slipSection->restrictPoint(*v_iter);
+    const PylithScalar* vals = slipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vals);
 
     for (int iDim=0; iDim < fiberDim; ++iDim)
@@ -324,7 +324,7 @@
 					      topology::SubMesh* faultMesh,
 					      TimeHistorySlipFn* slipfn,
 					      spatialdata::spatialdb::TimeHistory* th,
-					      const double originTime)
+					      const PylithScalar originTime)
 { // _initialize
   assert(0 != slipfn);
 
@@ -461,7 +461,7 @@
   slipfn.dbTimeHistory(&dbTimeHistory);
   
   spatialdata::units::Nondimensional normalizer;
-  const double originTime = 5.353;
+  const PylithScalar originTime = 5.353;
   
   slipfn.initialize(faultMesh, normalizer, originTime);
 
@@ -477,13 +477,13 @@
     slipfn._parameters->get("slip time").section();
   CPPUNIT_ASSERT(!slipTimeSection.isNull());
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int iPoint = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++iPoint) {
     CPPUNIT_ASSERT_EQUAL(spaceDim, finalSlipSection->getFiberDimension(*v_iter));
-    const double* amplitudeVertex = finalSlipSection->restrictPoint(*v_iter);
+    const PylithScalar* amplitudeVertex = finalSlipSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != amplitudeVertex);
     for (int iDim=0; iDim < spaceDim; ++iDim)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(data.amplitudeE[iPoint*spaceDim+iDim],
@@ -491,7 +491,7 @@
 				   tolerance);
 
     CPPUNIT_ASSERT_EQUAL(1, slipTimeSection->getFiberDimension(*v_iter));
-    const double* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
+    const PylithScalar* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != slipTimeVertex);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipTimeE[iPoint]+originTime,
 				 slipTimeVertex[0], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -109,7 +109,7 @@
 		   topology::SubMesh* faultMesh,
 		   TimeHistorySlipFn* slipfn,
 		   spatialdata::spatialdb::TimeHistory* th,
-		   const double originTime);
+		   const PylithScalar originTime);
 
   /** Test intialize().
    *
@@ -125,9 +125,9 @@
    * @param riseTime Rise time (t95).
    */
   static
-  double _slipFn(const double t,
-		 const double finalSlip,
-		 const double riseTime);
+  PylithScalar _slipFn(const PylithScalar t,
+		 const PylithScalar finalSlip,
+		 const PylithScalar riseTime);
 
 }; // class TestTimeHistorySlipFn
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_faults_cohesivedata_hh)
 #define pylith_faults_cohesivedata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace faults {
      class CohesiveData;
@@ -45,7 +47,7 @@
   int numCells; ///< Number of cells
   int cellDim; ///< Number of dimensions associated with cell
 
-  double* vertices; ///< Pointer to coordinates of vertices
+  PylithScalar* vertices; ///< Pointer to coordinates of vertices
   int* numCorners; ///< Number of vertices in cell
   int* cells; ///< Pointer to indices of vertices in cells
   int* materialIds; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
 
 const int pylith::faults::CohesiveDataHex8::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8::_vertices[] = {
   -2.0, -1.0, -1.0,
   -2.0,  1.0, -1.0,
   -2.0, -1.0,  1.0,
@@ -107,7 +107,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
 
 const int pylith::faults::CohesiveDataHex8Lagrange::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8Lagrange::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8Lagrange::_vertices[] = {
   -2.0, -1.0, -1.0,
   -2.0,  1.0, -1.0,
   -2.0, -1.0,  1.0,
@@ -111,7 +111,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
 
 const int pylith::faults::CohesiveDataHex8b::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8b::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8b::_vertices[] = {
   -2.0, -1.0, -1.0,
   -2.0,  1.0, -1.0,
   -2.0, -1.0,  1.0,
@@ -107,7 +107,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
 
 const int pylith::faults::CohesiveDataHex8c::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8c::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8c::_vertices[] = {
   -2.0, -1.0, -1.0,
   -2.0,  1.0, -1.0,
   -2.0, -1.0,  1.0,
@@ -107,7 +107,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
 
 const int pylith::faults::CohesiveDataHex8d::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8d::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8d::_vertices[] = {
   -2.0, -1.0, -1.0,
   -2.0,  1.0, -1.0,
   -2.0, -1.0,  1.0,
@@ -107,7 +107,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
 
 const int pylith::faults::CohesiveDataHex8e::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8e::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8e::_vertices[] = {
   -2.0, -1.0, -1.0,
   -2.0,  1.0, -1.0,
   -2.0, -1.0,  1.0,
@@ -107,7 +107,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,7 +44,7 @@
 
 const int pylith::faults::CohesiveDataHex8f::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8f::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8f::_vertices[] = {
   -2.0, -1.0, -1.0,
   -2.0,  1.0, -1.0,
   -2.0, -1.0,  1.0,
@@ -107,7 +107,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,7 +57,7 @@
 
 const int pylith::faults::CohesiveDataHex8g::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8g::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8g::_vertices[] = {
   -2.0, -1.0, -2.0,
   -2.0,  1.0, -2.0,
   -2.0, -1.0,  0.0,
@@ -134,7 +134,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -56,7 +56,7 @@
 
 const int pylith::faults::CohesiveDataHex8h::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8h::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8h::_vertices[] = {
   -2.0, -1.0, -2.0,
   -2.0,  1.0, -2.0,
   -2.0, -1.0,  0.0,
@@ -133,7 +133,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8i.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8i.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8i.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,7 +31,7 @@
 
 const int pylith::faults::CohesiveDataHex8i::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataHex8i::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataHex8i::_vertices[] = {
   -2.0, -2.0, -2.0,
   -2.0, -1.0, -2.0,
   -3.0,  0.0, -2.0,
@@ -126,7 +126,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8i.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8i.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8i.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 
 const int pylith::faults::CohesiveDataLine2::_cellDim = 1;
 
-const double pylith::faults::CohesiveDataLine2::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataLine2::_vertices[] = {
   -1.0,
    0.0,
    1.0,
@@ -86,7 +86,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2Lagrange.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2Lagrange.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 
 const int pylith::faults::CohesiveDataLine2Lagrange::_cellDim = 1;
 
-const double pylith::faults::CohesiveDataLine2Lagrange::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataLine2Lagrange::_vertices[] = {
   -1.0,
    0.0,
    1.0,
@@ -88,7 +88,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2Lagrange.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2Lagrange.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataLine2Lagrange.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,7 +57,7 @@
 
 const int pylith::faults::CohesiveDataQuad4::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4::_vertices[] = {
   -2.0, -1.0,
   -2.0,  1.0,
    0.0, -1.0,
@@ -112,7 +112,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,7 +57,7 @@
 
 const int pylith::faults::CohesiveDataQuad4Lagrange::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4Lagrange::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4Lagrange::_vertices[] = {
   -2.0, -1.0,
   -2.0,  1.0,
    0.0, -1.0,
@@ -114,7 +114,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4b.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4b.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,7 +57,7 @@
 
 const int pylith::faults::CohesiveDataQuad4b::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4b::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4b::_vertices[] = {
   -2.0, -1.0,
   -2.0,  1.0,
    0.0, -1.0,
@@ -112,7 +112,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4b.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4b.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4b.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4c.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4c.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4c.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,7 +57,7 @@
 
 const int pylith::faults::CohesiveDataQuad4c::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4c::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4c::_vertices[] = {
   -2.0, -1.0,
   -2.0,  1.0,
    0.0, -1.0,
@@ -112,7 +112,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4c.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4c.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4c.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4d.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4d.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4d.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,7 +57,7 @@
 
 const int pylith::faults::CohesiveDataQuad4d::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4d::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4d::_vertices[] = {
   -2.0, -1.0,
   -2.0,  1.0,
    0.0, -1.0,
@@ -112,7 +112,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4d.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4d.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4d.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4e.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4e.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4e.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -75,7 +75,7 @@
 
 const int pylith::faults::CohesiveDataQuad4e::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4e::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4e::_vertices[] = {
   -2.0, -1.0,
   -2.0,  1.0,
    0.0, -1.0,
@@ -140,7 +140,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4e.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4e.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -75,7 +75,7 @@
 
 const int pylith::faults::CohesiveDataQuad4f::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4f::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4f::_vertices[] = {
   -2.0, -1.0,
   -2.0,  1.0,
    0.0, -1.0,
@@ -140,7 +140,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4g.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4g.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4g.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -75,7 +75,7 @@
 
 const int pylith::faults::CohesiveDataQuad4g::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4g::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4g::_vertices[] = {
   -2.0, -2.0,
   -2.0,  0.0,
   -2.0,  2.0,
@@ -144,7 +144,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4g.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4g.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4g.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4h.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4h.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4h.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -72,7 +72,7 @@
 
 const int pylith::faults::CohesiveDataQuad4h::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataQuad4h::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataQuad4h::_vertices[] = {
   -3.0,  3.0,
   -1.0,  3.0,
    1.0,  3.0,
@@ -158,7 +158,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4h.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4h.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4h.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -97,7 +97,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4Lagrange::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4Lagrange::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4Lagrange::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -101,7 +101,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4b.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4b.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4b::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4b::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4b::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -97,7 +97,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4b.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4b.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4b.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4c::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4c::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4c::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -97,7 +97,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4d.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4d.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4d.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4d::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4d::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4d::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -97,7 +97,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4d.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4d.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4d.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4f::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4f::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4f::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -97,7 +97,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4g.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4g.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4g.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4g::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4g::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4g::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -97,7 +97,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4g.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4g.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4g.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4h.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4h.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4h.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4h::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4h::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4h::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -97,7 +97,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4h.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4h.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4h.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -43,7 +43,7 @@
 
 const int pylith::faults::CohesiveDataTet4i::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4i::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4i::_vertices[] = {
   -1.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  0.0,  1.0,
@@ -105,7 +105,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4j.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4j.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4j.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,7 +31,7 @@
 
 const int pylith::faults::CohesiveDataTet4j::_cellDim = 3;
 
-const double pylith::faults::CohesiveDataTet4j::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTet4j::_vertices[] = {
   -2.0, -1.0,  0.0,
   -2.0,  0.0,  0.0,
   -2.0,  0.0,  1.0,
@@ -97,7 +97,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4j.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4j.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4j.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -60,7 +60,7 @@
 
 const int pylith::faults::CohesiveDataTri3::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataTri3::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTri3::_vertices[] = {
  -1.0,  0.0,
   0.0,  1.0,
   0.0, -1.0,
@@ -112,7 +112,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -60,7 +60,7 @@
 
 const int pylith::faults::CohesiveDataTri3Lagrange::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataTri3Lagrange::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTri3Lagrange::_vertices[] = {
  -1.0,  0.0,
   0.0,  1.0,
   0.0, -1.0,
@@ -115,7 +115,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -60,7 +60,7 @@
 
 const int pylith::faults::CohesiveDataTri3b::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataTri3b::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTri3b::_vertices[] = {
  -1.0,  0.0,
   0.0,  1.0,
   0.0, -1.0,
@@ -112,7 +112,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -60,7 +60,7 @@
 
 const int pylith::faults::CohesiveDataTri3c::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataTri3c::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTri3c::_vertices[] = {
  -1.0,  0.0,
   0.0,  1.0,
   0.0, -1.0,
@@ -112,7 +112,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -73,7 +73,7 @@
 
 const int pylith::faults::CohesiveDataTri3d::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataTri3d::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTri3d::_vertices[] = {
  -1.0,  0.0,
   0.0,  1.0,
   0.0, -1.0,
@@ -134,7 +134,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -73,7 +73,7 @@
 
 const int pylith::faults::CohesiveDataTri3e::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataTri3e::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTri3e::_vertices[] = {
  -1.0,  0.0,
   0.0,  1.0,
   0.0, -1.0,
@@ -134,7 +134,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3f.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3f.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -57,7 +57,7 @@
 
 const int pylith::faults::CohesiveDataTri3f::_cellDim = 2;
 
-const double pylith::faults::CohesiveDataTri3f::_vertices[] = {
+const PylithScalar pylith::faults::CohesiveDataTri3f::_vertices[] = {
  -2.0, -1.0,
  -2.0,  1.0,
   0.0, -1.0,
@@ -115,7 +115,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   numCorners = const_cast<int*>(_numCorners);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3f.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3f.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3f.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const int _numCells; ///< Number of cells
   static const int _cellDim; ///< Number of dimensions associated with cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _numCorners[]; ///< Number of vertices in cell
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_faults_cohesivedynldata_hh)
 #define pylith_faults_cohesivedynldata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace faults {
      class CohesiveDynData;
@@ -48,11 +50,11 @@
   int cellDim; ///< Number of dimensions associated with cell
   int numBasis; ///< Number of vertices in cell
   int numQuadPts; ///< Number of quadrature points
-  double* quadPts; ///< Coordinates of quad pts in ref cell
-  double* quadWts; ///< Weights of quadrature points
-  double* basis; ///< Basis fns at quadrature points
-  double* basisDeriv; ///< Derivatives of basis fns at quad pts
-  double* verticesRef; ///< Coordinates of vertices in ref cell (dual basis)
+  PylithScalar* quadPts; ///< Coordinates of quad pts in ref cell
+  PylithScalar* quadWts; ///< Weights of quadrature points
+  PylithScalar* basis; ///< Basis fns at quadrature points
+  PylithScalar* basisDeriv; ///< Derivatives of basis fns at quad pts
+  PylithScalar* verticesRef; ///< Coordinates of vertices in ref cell (dual basis)
   //@}
 
   /// @name Fault information
@@ -64,22 +66,22 @@
 
   /// @name Input fields
   //@{
-  double* fieldT; ///< Solution field at time t.
-  double* fieldIncrStick; ///< Soln increment field at time t for stick case.
-  double* fieldIncrSlip; ///< Soln increment field at time t for slipping case.
-  double* fieldIncrOpen; ///< Soln increment field at time t for opening case.
-  double* jacobian; ///< Jacobian sparse matrix.
+  PylithScalar* fieldT; ///< Solution field at time t.
+  PylithScalar* fieldIncrStick; ///< Soln increment field at time t for stick case.
+  PylithScalar* fieldIncrSlip; ///< Soln increment field at time t for slipping case.
+  PylithScalar* fieldIncrOpen; ///< Soln increment field at time t for opening case.
+  PylithScalar* jacobian; ///< Jacobian sparse matrix.
   //@}
 
   /// @name Calculated values.
   //@{
-  double* orientation; ///< Expected values for fault orientation.
-  double* area; ///< Expected values for fault area.
-  double* forcesInitial; ///< Expected values for initial forces.
-  double* fieldIncrSlipE; ///< Expected values for solution increment for slipping case.
-  double* slipSlipE; ///< Expected values for slip for slipping case.
-  double* fieldIncrOpenE; ///< Expected values for solution increment for opening case.
-  double* slipOpenE; ///< Expected values for slip for opening case.
+  PylithScalar* orientation; ///< Expected values for fault orientation.
+  PylithScalar* area; ///< Expected values for fault area.
+  PylithScalar* forcesInitial; ///< Expected values for initial forces.
+  PylithScalar* fieldIncrSlipE; ///< Expected values for solution increment for slipping case.
+  PylithScalar* slipSlipE; ///< Expected values for slip for slipping case.
+  PylithScalar* fieldIncrOpenE; ///< Expected values for solution increment for opening case.
+  PylithScalar* slipOpenE; ///< Expected values for slip for opening case.
 
   int* constraintVertices; ///< Expected points for constraint vertices
   int numConstraintVert; ///< Number of constraint vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,25 +48,25 @@
 
 const int pylith::faults::CohesiveDynDataHex8::_numQuadPts = 4;
 
-const double pylith::faults::CohesiveDynDataHex8::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_quadPts[] = {
   -0.57735027, -0.57735027,
   +0.57735027, -0.57735027,
   +0.57735027, +0.57735027,
   -0.57735027, +0.57735027,
 };
 
-const double pylith::faults::CohesiveDynDataHex8::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_quadWts[] = {
   1.0, 1.0, 1.0, 1.0
 };
 
-const double pylith::faults::CohesiveDynDataHex8::_basis[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_basis[] = {
   0.62200847,  0.16666667,  0.0446582,   0.16666667,
   0.16666667,  0.62200847,  0.16666667,   0.0446582,
   0.0446582,   0.16666667,  0.62200847,  0.16666667,
   0.16666667,   0.0446582,  0.16666667,  0.62200847,
 };
 
-const double pylith::faults::CohesiveDynDataHex8::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_basisDeriv[] = {
   -0.39433757, -0.39433757,
   +0.39433757, -0.10566243,
   +0.10566243, +0.10566243,
@@ -88,7 +88,7 @@
   -0.39433757, +0.39433757,
 };
 
-const double pylith::faults::CohesiveDynDataHex8::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_verticesRef[] = {
   -1.0, -1.0,
   +1.0, -1.0,
   +1.0, +1.0,
@@ -102,7 +102,7 @@
 const char* pylith::faults::CohesiveDynDataHex8::_initialTractFilename = 
   "data/hex8_initialtract.spatialdb";
 
-const double pylith::faults::CohesiveDynDataHex8::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_fieldT[] = {
   4.1, 6.1, 8.1,
   4.2, 6.2, 8.2,
   4.3, 6.3, 8.3,
@@ -127,7 +127,7 @@
 
 // :TODO: Make sensible values for Jacobian for DOF on positive and
 // negative sides of the fault. Add semi-random values for other DOF.
-const double pylith::faults::CohesiveDynDataHex8::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_jacobian[] = {
     1,  0.1,  0.2,
   0.3,  0.4,  0.5,
   0.6,  0.7,  0.8,
@@ -1334,18 +1334,18 @@
 // Computed values
 // ----------------------------------------------------------------------
 
-const double pylith::faults::CohesiveDynDataHex8::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_orientation[] = {
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveDynDataHex8::_area[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_area[] = {
   1.0, 1.0, 1.0, 1.0
 };
 
-const double pylith::faults::CohesiveDynDataHex8::_forcesInitial[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_forcesInitial[] = {
   3.063397471, -1.063397471, +2.063397471, 
   3.121132498, -1.121132498, +2.121132498, 
   3.178867525, -1.178867525, +2.178867525,
@@ -1361,7 +1361,7 @@
 // Stick case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataHex8::_fieldIncrStick[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_fieldIncrStick[] = {
   0.1, 2.1, 28.1,
   0.2, 2.2, 28.2,
   0.3, 2.3, 28.3,
@@ -1391,7 +1391,7 @@
 // Slip case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataHex8::_fieldIncrSlip[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_fieldIncrSlip[] = {
   5.1, 7.1, 9.1,
   5.2, 7.2, 9.2,
   5.3, 7.3, 9.3,
@@ -1415,7 +1415,7 @@
 };
 
 // Output
-const double pylith::faults::CohesiveDynDataHex8::_fieldIncrSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_fieldIncrSlipE[] = {
    5.100000000000,   7.100000000000,   9.100000000000,
    5.200000000000,   7.200000000000,   9.200000000000,
    5.300000000000,   7.300000000000,   9.300000000000,
@@ -1438,7 +1438,7 @@
   -5.424264068712,  -7.424264068712, -10.000000000000,
 };
 
-const double pylith::faults::CohesiveDynDataHex8::_slipSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_slipSlipE[] = {
    0.009957324142,   0.009642822884,   0.000000000000,
    0.008367993202,   0.008229627421,   0.000000000000,
    0.007245099193,   0.007208982264,   0.000000000000,
@@ -1449,7 +1449,7 @@
 // Open case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataHex8::_fieldIncrOpen[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_fieldIncrOpen[] = {
   5.1, 7.1, 9.1,
   5.2, 7.2, 9.2,
   5.3, 7.3, 9.3,
@@ -1473,7 +1473,7 @@
 };
 
 // Output
-const double pylith::faults::CohesiveDynDataHex8::_fieldIncrOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_fieldIncrOpenE[] = {
    5.100000000000,   7.100000000000,   9.100000000000,
    5.200000000000,   7.200000000000,   9.200000000000,
    5.300000000000,   7.300000000000,   9.300000000000,
@@ -1496,7 +1496,7 @@
   -5.000000000000,  -7.000000000000,  -9.000000000000,
 };
 
-const double pylith::faults::CohesiveDynDataHex8::_slipOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataHex8::_slipOpenE[] = {
   -0.115090051058,  -0.352456376134,   0.000000000000,
   -0.089197388297,  -0.318623393323,   0.000000000000,
   -0.071043332138,  -0.294365786929,   0.000000000000,
@@ -1511,36 +1511,36 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   initialTractFilename = const_cast<char*>(_initialTractFilename);
 
-  fieldT = const_cast<double*>(_fieldT);
-  jacobian = const_cast<double*>(_jacobian);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  forcesInitial = const_cast<double*>(_forcesInitial);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  forcesInitial = const_cast<PylithScalar*>(_forcesInitial);
 
   constraintVertices = const_cast<int*>(_constraintVertices);
   numConstraintVert = _numConstraintVert;  
 
   // Stick
-  fieldIncrStick = const_cast<double*>(_fieldIncrStick);
+  fieldIncrStick = const_cast<PylithScalar*>(_fieldIncrStick);
 
   // Slip
-  fieldIncrSlip = const_cast<double*>(_fieldIncrSlip);
-  fieldIncrSlipE = const_cast<double*>(_fieldIncrSlipE);
-  slipSlipE = const_cast<double*>(_slipSlipE);
+  fieldIncrSlip = const_cast<PylithScalar*>(_fieldIncrSlip);
+  fieldIncrSlipE = const_cast<PylithScalar*>(_fieldIncrSlipE);
+  slipSlipE = const_cast<PylithScalar*>(_slipSlipE);
 
   // Open
-  fieldIncrOpen = const_cast<double*>(_fieldIncrOpen);
-  fieldIncrOpenE = const_cast<double*>(_fieldIncrOpenE);
-  slipOpenE = const_cast<double*>(_slipOpenE);
+  fieldIncrOpen = const_cast<PylithScalar*>(_fieldIncrOpen);
+  fieldIncrOpenE = const_cast<PylithScalar*>(_fieldIncrOpenE);
+  slipOpenE = const_cast<PylithScalar*>(_slipOpenE);
 } // constructor
 
 pylith::faults::CohesiveDynDataHex8::~CohesiveDynDataHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,29 +49,29 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
   static const char* _initialTractFilename; ///< Name of db for initial tractions.
 
-  static const double _fieldT[]; ///< Solution field at time t.
-  static const double _fieldIncrStick[]; ///< Solution increment at time t for stick case.
-  static const double _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
-  static const double _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
-  static const double _jacobian[]; ///< Jacobian sparse matrix.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldIncrStick[]; ///< Solution increment at time t for stick case.
+  static const PylithScalar _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
+  static const PylithScalar _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
+  static const PylithScalar _jacobian[]; ///< Jacobian sparse matrix.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _forcesInitial[]; ///< Expected values for initial forces.
-  static const double _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
-  static const double _slipSlipE[]; ///< Expected values for slip for slip case.
-  static const double _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
-  static const double _slipOpenE[]; ///< Expected values for slip for opening case.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _forcesInitial[]; ///< Expected values for initial forces.
+  static const PylithScalar _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
+  static const PylithScalar _slipSlipE[]; ///< Expected values for slip for slip case.
+  static const PylithScalar _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
+  static const PylithScalar _slipOpenE[]; ///< Expected values for slip for opening case.
   static const int _constraintVertices[]; ///< Expected points for constraint vertices
   static const int _numConstraintVert; ///< Number of constraint vertices
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -61,25 +61,25 @@
 
 const int pylith::faults::CohesiveDynDataQuad4::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveDynDataQuad4::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveDynDataQuad4::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveDynDataQuad4::_basis[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveDynDataQuad4::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveDynDataQuad4::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -90,7 +90,7 @@
 const char* pylith::faults::CohesiveDynDataQuad4::_initialTractFilename = 
   "data/quad4_initialtract.spatialdb";
 
-const double pylith::faults::CohesiveDynDataQuad4::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_fieldT[] = {
   8.1, 9.1,
   8.2, 9.2,
   8.3, 9.3, // 4
@@ -105,7 +105,7 @@
 
 // :TODO: Make sensible values for Jacobian for DOF on positive and
 // negative sides of the fault. Add semi-random values for other DOF.
-const double pylith::faults::CohesiveDynDataQuad4::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_jacobian[] = {
    1, 0.1,
  0.2, 0.3,
  0.4, 0.5,
@@ -312,17 +312,17 @@
 // Computed values
 // ----------------------------------------------------------------------
 
-const double pylith::faults::CohesiveDynDataQuad4::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_orientation[] = {
   0.0,  -1.0,  -1.0, 0.0,
   0.0,  -1.0,  -1.0, 0.0
 };
 
-const double pylith::faults::CohesiveDynDataQuad4::_area[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_area[] = {
   1.0,
   1.0,
 };
 
-const double pylith::faults::CohesiveDynDataQuad4::_forcesInitial[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_forcesInitial[] = {
   2.05, -1.05,
   2.05, -1.05,
 };
@@ -337,7 +337,7 @@
 // Stick case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrStick[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_fieldIncrStick[] = {
   1.1, 29.1,
   1.2, 29.2,
   1.3, 29.3, // 4
@@ -357,7 +357,7 @@
 // Slip case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrSlip[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_fieldIncrSlip[] = {
   9.1, 10.1,
   9.2, 10.2,
   9.3, 10.3, // 4
@@ -372,7 +372,7 @@
 
 // Output
 // :TODO: Update Lagrange multiplier values
-const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_fieldIncrSlipE[] = {
   9.1,  10.100000000000,
   9.2,  10.200000000000,
   9.3,  10.313079001869,
@@ -386,7 +386,7 @@
 };
 
 // Update slip values based on changes in Lagrange multiplier values
-const double pylith::faults::CohesiveDynDataQuad4::_slipSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_slipSlipE[] = {
   0.026158003737426,                   0.0,
   0.011730507820273,                   0.0,
 };
@@ -395,7 +395,7 @@
 // Open case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrOpen[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_fieldIncrOpen[] = {
   9.1, 10.1,
   9.2, 10.2,
   9.3, 10.3, // 4
@@ -409,7 +409,7 @@
 };
 
 // Output
-const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_fieldIncrOpenE[] = {
    9.100000000000,  10.100000000000,
    9.200000000000,  10.200000000000,
    9.300000000000,  10.685047196672,
@@ -422,7 +422,7 @@
   -8.000000000000,  -9.000000000000,
 };
 
-const double pylith::faults::CohesiveDynDataQuad4::_slipOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataQuad4::_slipOpenE[] = {
   0.770094393343286,  0.0,
   1.553898551051246,   1.065418664609568,
 };
@@ -435,36 +435,36 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   initialTractFilename = const_cast<char*>(_initialTractFilename);
 
-  fieldT = const_cast<double*>(_fieldT);
-  jacobian = const_cast<double*>(_jacobian);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  forcesInitial = const_cast<double*>(_forcesInitial);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  forcesInitial = const_cast<PylithScalar*>(_forcesInitial);
 
   constraintVertices = const_cast<int*>(_constraintVertices);
   numConstraintVert = _numConstraintVert;  
 
   // Stick
-  fieldIncrStick = const_cast<double*>(_fieldIncrStick);
+  fieldIncrStick = const_cast<PylithScalar*>(_fieldIncrStick);
 
   // Slip
-  fieldIncrSlip = const_cast<double*>(_fieldIncrSlip);
-  fieldIncrSlipE = const_cast<double*>(_fieldIncrSlipE);
-  slipSlipE = const_cast<double*>(_slipSlipE);
+  fieldIncrSlip = const_cast<PylithScalar*>(_fieldIncrSlip);
+  fieldIncrSlipE = const_cast<PylithScalar*>(_fieldIncrSlipE);
+  slipSlipE = const_cast<PylithScalar*>(_slipSlipE);
 
   // Open
-  fieldIncrOpen = const_cast<double*>(_fieldIncrOpen);
-  fieldIncrOpenE = const_cast<double*>(_fieldIncrOpenE);
-  slipOpenE = const_cast<double*>(_slipOpenE);
+  fieldIncrOpen = const_cast<PylithScalar*>(_fieldIncrOpen);
+  fieldIncrOpenE = const_cast<PylithScalar*>(_fieldIncrOpenE);
+  slipOpenE = const_cast<PylithScalar*>(_slipOpenE);
 } // constructor
 
 pylith::faults::CohesiveDynDataQuad4::~CohesiveDynDataQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,29 +49,29 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
   static const char* _initialTractFilename; ///< Name of db for initial tractions.
 
-  static const double _fieldT[]; ///< Solution field at time t.
-  static const double _fieldIncrStick[]; ///< Solution increment at time t for stick case.
-  static const double _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
-  static const double _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
-  static const double _jacobian[]; ///< Jacobian sparse matrix.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldIncrStick[]; ///< Solution increment at time t for stick case.
+  static const PylithScalar _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
+  static const PylithScalar _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
+  static const PylithScalar _jacobian[]; ///< Jacobian sparse matrix.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _forcesInitial[]; ///< Expected values for initial forces.
-  static const double _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
-  static const double _slipSlipE[]; ///< Expected values for slip for slip case.
-  static const double _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
-  static const double _slipOpenE[]; ///< Expected values for slip for opening case.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _forcesInitial[]; ///< Expected values for initial forces.
+  static const PylithScalar _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
+  static const PylithScalar _slipSlipE[]; ///< Expected values for slip for slip case.
+  static const PylithScalar _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
+  static const PylithScalar _slipOpenE[]; ///< Expected values for slip for opening case.
   static const int _constraintVertices[]; ///< Expected points for constraint vertices
   static const int _numConstraintVert; ///< Number of constraint vertices
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,25 +47,25 @@
 
 const int pylith::faults::CohesiveDynDataTet4::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveDynDataTet4::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_quadPts[] = {
   -3.33333333e-01,  -3.33333333e-01,
 };
 
-const double pylith::faults::CohesiveDynDataTet4::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveDynDataTet4::_basis[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::faults::CohesiveDynDataTet4::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_basisDeriv[] = {
  -0.50000000e+00, -0.50000000e+00,
   0.50000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.50000000e+00,
 };
 
-const double pylith::faults::CohesiveDynDataTet4::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -78,7 +78,7 @@
 const char* pylith::faults::CohesiveDynDataTet4::_initialTractFilename = 
   "data/tet4_initialtract.spatialdb";
 
-const double pylith::faults::CohesiveDynDataTet4::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_fieldT[] = {
   7.1, 8.1, 9.1,
   7.2, 8.2, 9.2, // 3
   7.3, 8.3, 9.3, // 4
@@ -94,7 +94,7 @@
 
 // :TODO: Make sensible values for Jacobian for DOF on positive and
 // negative sides of the fault. Add semi-random values for other DOF.
-const double pylith::faults::CohesiveDynDataTet4::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_jacobian[] = {
     1,  0.1,  0.2,
   0.3,  0.4,  0.5,
   0.6,  0.7,  0.8,
@@ -464,19 +464,19 @@
 // Computed values
 // ----------------------------------------------------------------------
 
-const double pylith::faults::CohesiveDynDataTet4::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_orientation[] = {
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveDynDataTet4::_area[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_area[] = {
   1.0/3.0, 
   1.0/3.0, 
   1.0/3.0,
 };
 
-const double pylith::faults::CohesiveDynDataTet4::_forcesInitial[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_forcesInitial[] = {
   3.1/3.0, -1.1/3.0, +2.1/3.0,
   3.1/3.0, -1.1/3.0, +2.1/3.0,
   3.1/3.0, -1.1/3.0, +2.1/3.0,
@@ -492,7 +492,7 @@
 // Stick case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTet4::_fieldIncrStick[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_fieldIncrStick[] = {
   1.1, 2.1, 35.1,
   1.2, 2.2, 35.2, // 3
   1.3, 2.3, 35.3, // 4
@@ -513,7 +513,7 @@
 // Slip case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTet4::_fieldIncrSlip[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_fieldIncrSlip[] = {
   8.1, 9.1, 10.1,
   8.2, 9.2, 10.2, // 3
   8.3, 9.3, 10.3, // 4
@@ -528,7 +528,7 @@
 };
 
 // Output
-const double pylith::faults::CohesiveDynDataTet4::_fieldIncrSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_fieldIncrSlipE[] = {
    8.100000000000,   9.100000000000,  10.100000000000,
    8.200000000000,   8.391727731714,  10.956284985259,
    8.300000000000,   8.791277340217,  10.815192651071,
@@ -542,7 +542,7 @@
   -6.702681322117,  -7.650402548711, -10.100000000000,
 };
 
-const double pylith::faults::CohesiveDynDataTet4::_slipSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_slipSlipE[] = {
   -1.616544536572,  -1.512569970519,   0.000000000000,
   -1.017445319566,  -1.030385302142,   0.000000000000,
   -0.678489501275,  -0.717766537252,   0.000000000000,
@@ -552,7 +552,7 @@
 // Open case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTet4::_fieldIncrOpen[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_fieldIncrOpen[] = {
   8.1, 9.1, 10.1,
   8.2, 9.2, 10.2, // 3
   8.3, 9.3, 10.3, // 4
@@ -567,7 +567,7 @@
 };
 
 // Output
-const double pylith::faults::CohesiveDynDataTet4::_fieldIncrOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_fieldIncrOpenE[] = {
    8.100000000000,   9.100000000000,  10.100000000000,
    8.200000000000,   8.707485448105,  11.300792216319,
    8.300000000000,   9.089936432069,  11.135493258511,
@@ -581,7 +581,7 @@
   -7.100000000000,  -8.100000000000,  -9.100000000000,
 };
 
-const double pylith::faults::CohesiveDynDataTet4::_slipOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTet4::_slipOpenE[] = {
   -0.985029103789,  -2.201584432637,   0.000000000000,
   -0.420127135861,  -1.670986517021,   0.000000000000,
   -0.093157695768,  -1.337378280584,   0.000000000000,
@@ -595,36 +595,36 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   initialTractFilename = const_cast<char*>(_initialTractFilename);
 
-  fieldT = const_cast<double*>(_fieldT);
-  jacobian = const_cast<double*>(_jacobian);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  forcesInitial = const_cast<double*>(_forcesInitial);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  forcesInitial = const_cast<PylithScalar*>(_forcesInitial);
 
   constraintVertices = const_cast<int*>(_constraintVertices);
   numConstraintVert = _numConstraintVert;  
 
   // Stick
-  fieldIncrStick = const_cast<double*>(_fieldIncrStick);
+  fieldIncrStick = const_cast<PylithScalar*>(_fieldIncrStick);
 
   // Slip
-  fieldIncrSlip = const_cast<double*>(_fieldIncrSlip);
-  fieldIncrSlipE = const_cast<double*>(_fieldIncrSlipE);
-  slipSlipE = const_cast<double*>(_slipSlipE);
+  fieldIncrSlip = const_cast<PylithScalar*>(_fieldIncrSlip);
+  fieldIncrSlipE = const_cast<PylithScalar*>(_fieldIncrSlipE);
+  slipSlipE = const_cast<PylithScalar*>(_slipSlipE);
 
   // Open
-  fieldIncrOpen = const_cast<double*>(_fieldIncrOpen);
-  fieldIncrOpenE = const_cast<double*>(_fieldIncrOpenE);
-  slipOpenE = const_cast<double*>(_slipOpenE);
+  fieldIncrOpen = const_cast<PylithScalar*>(_fieldIncrOpen);
+  fieldIncrOpenE = const_cast<PylithScalar*>(_fieldIncrOpenE);
+  slipOpenE = const_cast<PylithScalar*>(_slipOpenE);
 } // constructor
 
 pylith::faults::CohesiveDynDataTet4::~CohesiveDynDataTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,29 +49,29 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
   static const char* _initialTractFilename; ///< Name of db for initial tractions.
 
-  static const double _fieldT[]; ///< Solution field at time t.
-  static const double _fieldIncrStick[]; ///< Solution increment at time t for stick case.
-  static const double _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
-  static const double _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
-  static const double _jacobian[]; ///< Jacobian sparse matrix.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldIncrStick[]; ///< Solution increment at time t for stick case.
+  static const PylithScalar _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
+  static const PylithScalar _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
+  static const PylithScalar _jacobian[]; ///< Jacobian sparse matrix.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _forcesInitial[]; ///< Expected values for initial forces.
-  static const double _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
-  static const double _slipSlipE[]; ///< Expected values for slip for slip case.
-  static const double _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
-  static const double _slipOpenE[]; ///< Expected values for slip for opening case.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _forcesInitial[]; ///< Expected values for initial forces.
+  static const PylithScalar _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
+  static const PylithScalar _slipSlipE[]; ///< Expected values for slip for slip case.
+  static const PylithScalar _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
+  static const PylithScalar _slipOpenE[]; ///< Expected values for slip for opening case.
   static const int _constraintVertices[]; ///< Expected points for constraint vertices
   static const int _numConstraintVert; ///< Number of constraint vertices
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,25 +63,25 @@
 
 const int pylith::faults::CohesiveDynDataTri3::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveDynDataTri3::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveDynDataTri3::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveDynDataTri3::_basis[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveDynDataTri3::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveDynDataTri3::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -92,7 +92,7 @@
 const char* pylith::faults::CohesiveDynDataTri3::_initialTractFilename = 
   "data/tri3_initialtract.spatialdb";
 
-const double pylith::faults::CohesiveDynDataTri3::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_fieldT[] = {
   8.1, 9.1,
   8.2, 9.2, // 3
   8.3, 9.3, // 4
@@ -105,7 +105,7 @@
 
 // :TODO: Make sensible values for Jacobian for DOF on positive and
 // negative sides of the fault. Add semi-random values for other DOF.
-const double pylith::faults::CohesiveDynDataTri3::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_jacobian[] = {
   1.0, 1.1, // 2x (values for row associated with vertex with label 2, x DOF)
   0.1, 1.2,
   0.2, 1.3,
@@ -242,17 +242,17 @@
 // Computed values
 // ----------------------------------------------------------------------
 
-const double pylith::faults::CohesiveDynDataTri3::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_orientation[] = {
   0.0, -1.0,  -1.0, 0.0,
   0.0, -1.0,  -1.0, 0.0
 };
 
-const double pylith::faults::CohesiveDynDataTri3::_area[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_area[] = {
   1.0,
   1.0,
 };
 
-const double pylith::faults::CohesiveDynDataTri3::_forcesInitial[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_forcesInitial[] = {
   2.05, -1.05,
   2.05, -1.05,
 };
@@ -267,7 +267,7 @@
 // Stick case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTri3::_fieldIncrStick[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_fieldIncrStick[] = {
   1.1, 29.1,
   1.2, 29.2, // 3
   1.3, 29.3, // 4
@@ -285,7 +285,7 @@
 // Slip case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTri3::_fieldIncrSlip[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_fieldIncrSlip[] = {
   9.1, 10.1,
   9.2, 10.2, // 3
   9.3, 10.3, // 4
@@ -297,7 +297,7 @@
 };
 
 // Output
-const double pylith::faults::CohesiveDynDataTri3::_fieldIncrSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_fieldIncrSlipE[] = {
   9.1,  10.100000000000,
   9.2,   9.304186565683,
   9.3,  10.066643380561,
@@ -308,7 +308,7 @@
  -8.2, -10.800000000000,
 };
 
-const double pylith::faults::CohesiveDynDataTri3::_slipSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_slipSlipE[] = {
   -1.791626868633122,                   0.0,
   -0.466713238878134,                   0.0,
 };
@@ -317,7 +317,7 @@
 // Open case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTri3::_fieldIncrOpen[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_fieldIncrOpen[] = {
   9.1, 10.1,
   9.2, 10.2, // 3
   9.3, 10.3, // 4
@@ -329,7 +329,7 @@
 };
 
 // Output
-const double pylith::faults::CohesiveDynDataTri3::_fieldIncrOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_fieldIncrOpenE[] = {
  9.100000000000,  10.100000000000,
  9.200000000000,  10.851688943849,
 10.191208845155,  11.487449638489,
@@ -340,7 +340,7 @@
 -8.800000000000,  -9.800000000000,
 };
 
-const double pylith::faults::CohesiveDynDataTri3::_slipOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3::_slipOpenE[] = {
   1.303377887698464,  0.0,
   2.374899276978848,  1.782417690310881,
 };
@@ -353,36 +353,36 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   initialTractFilename = const_cast<char*>(_initialTractFilename);
 
-  fieldT = const_cast<double*>(_fieldT);
-  jacobian = const_cast<double*>(_jacobian);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  forcesInitial = const_cast<double*>(_forcesInitial);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  forcesInitial = const_cast<PylithScalar*>(_forcesInitial);
 
   constraintVertices = const_cast<int*>(_constraintVertices);
   numConstraintVert = _numConstraintVert;  
 
   // Stick
-  fieldIncrStick = const_cast<double*>(_fieldIncrStick);
+  fieldIncrStick = const_cast<PylithScalar*>(_fieldIncrStick);
 
   // Slip
-  fieldIncrSlip = const_cast<double*>(_fieldIncrSlip);
-  fieldIncrSlipE = const_cast<double*>(_fieldIncrSlipE);
-  slipSlipE = const_cast<double*>(_slipSlipE);
+  fieldIncrSlip = const_cast<PylithScalar*>(_fieldIncrSlip);
+  fieldIncrSlipE = const_cast<PylithScalar*>(_fieldIncrSlipE);
+  slipSlipE = const_cast<PylithScalar*>(_slipSlipE);
 
   // Open
-  fieldIncrOpen = const_cast<double*>(_fieldIncrOpen);
-  fieldIncrOpenE = const_cast<double*>(_fieldIncrOpenE);
-  slipOpenE = const_cast<double*>(_slipOpenE);
+  fieldIncrOpen = const_cast<PylithScalar*>(_fieldIncrOpen);
+  fieldIncrOpenE = const_cast<PylithScalar*>(_fieldIncrOpenE);
+  slipOpenE = const_cast<PylithScalar*>(_slipOpenE);
 } // constructor
 
 pylith::faults::CohesiveDynDataTri3::~CohesiveDynDataTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,29 +49,29 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
   static const char* _initialTractFilename; ///< Name of db for initial tractions.
 
-  static const double _fieldT[]; ///< Solution field at time t.
-  static const double _fieldIncrStick[]; ///< Solution increment at time t for stick case.
-  static const double _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
-  static const double _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
-  static const double _jacobian[]; ///< Jacobian sparse matrix.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldIncrStick[]; ///< Solution increment at time t for stick case.
+  static const PylithScalar _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
+  static const PylithScalar _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
+  static const PylithScalar _jacobian[]; ///< Jacobian sparse matrix.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _forcesInitial[]; ///< Expected values for initial forces.
-  static const double _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
-  static const double _slipSlipE[]; ///< Expected values for slip for slip case.
-  static const double _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
-  static const double _slipOpenE[]; ///< Expected values for slip for opening case.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _forcesInitial[]; ///< Expected values for initial forces.
+  static const PylithScalar _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
+  static const PylithScalar _slipSlipE[]; ///< Expected values for slip for slip case.
+  static const PylithScalar _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
+  static const PylithScalar _slipOpenE[]; ///< Expected values for slip for opening case.
   static const int _constraintVertices[]; ///< Expected points for constraint vertices
   static const int _numConstraintVert; ///< Number of constraint vertices
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3d.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3d.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3d.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -78,25 +78,25 @@
 
 const int pylith::faults::CohesiveDynDataTri3d::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveDynDataTri3d::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveDynDataTri3d::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveDynDataTri3d::_basis[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveDynDataTri3d::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveDynDataTri3d::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -107,7 +107,7 @@
 const char* pylith::faults::CohesiveDynDataTri3d::_initialTractFilename = 
   "data/tri3d_initialtract.spatialdb";
 
-const double pylith::faults::CohesiveDynDataTri3d::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_fieldT[] = {
   6.1, 8.1,
   6.2, 8.2, // 5
   6.3, 8.3, // 6
@@ -124,7 +124,7 @@
 
 // :TODO: Make sensible values for Jacobian for DOF on positive and
 // negative sides of the fault. Add semi-random values for other DOF.
-const double pylith::faults::CohesiveDynDataTri3d::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_jacobian[] = {
   1.0, 1.1, // 4x
   1.1, 2.1,
   1.2, 2.2,
@@ -420,14 +420,14 @@
 // Computed values
 // ----------------------------------------------------------------------
 
-const double pylith::faults::CohesiveDynDataTri3d::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_orientation[] = {
   +0.70710678118654757, -0.70710678118654757,  
   -0.70710678118654757, -0.70710678118654757,
   0.0, -1.0,  -1.0,  0.0,
  +1.0,  0.0,   0.0, -1.0
 };
 
-const double pylith::faults::CohesiveDynDataTri3d::_area[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_area[] = {
   2.0,
   1.0,
   1.0,
@@ -438,7 +438,7 @@
   13, 14, 15
 };
 
-const double pylith::faults::CohesiveDynDataTri3d::_forcesInitial[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_forcesInitial[] = {
   3.15*1.4142135623730951, 1.00*1.41421356237309,
   2.05, -1.05,
   1.10,  2.10,
@@ -449,7 +449,7 @@
 // Stick case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrStick[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_fieldIncrStick[] = {
   1.1, 29.1,
   1.2, 29.2, // 5
   1.3, 29.3, // 6
@@ -471,7 +471,7 @@
 // Slip case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrSlip[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_fieldIncrSlip[] = {
   9.1, 10.1,
   9.2, 10.2, // 5
   9.3, 10.3, // 6
@@ -488,7 +488,7 @@
 
 // Output
 // TODO Update
-const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_fieldIncrSlipE[] = {
   9.100000000000,  10.100000000000,
   4.178047263424,  15.221952736576,
   9.300000000000,  10.050098043990,
@@ -503,7 +503,7 @@
  -6.600000000000, -10.200000000000,
 };
 
-const double pylith::faults::CohesiveDynDataTri3d::_slipSlipE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_slipSlipE[] = {
   14.204227339325,   0.0,
   -0.499803912020,   0.0,
   -0.311359635429,   0.0,
@@ -513,7 +513,7 @@
 // Open case
 // ----------------------------------------------------------------------
 // Input
-const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrOpen[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_fieldIncrOpen[] = {
   9.1, 10.1,
   9.2, 10.2, // 5
   9.3, 10.3, // 6
@@ -529,7 +529,7 @@
 };
 
 // Output
-const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_fieldIncrOpenE[] = {
    9.100000000000,  10.100000000000,
   17.946141606808,   1.453858393192,
    9.300000000000,  16.358051491522,
@@ -544,7 +544,7 @@
   -7.200000000000,  -9.200000000000,
 };
 
-const double pylith::faults::CohesiveDynDataTri3d::_slipOpenE[] = {
+const PylithScalar pylith::faults::CohesiveDynDataTri3d::_slipOpenE[] = {
 -24.737824157567,  0.0,
  12.116102983044,  0.0,
  16.247519752219,  17.598858434641,
@@ -559,36 +559,36 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   initialTractFilename = const_cast<char*>(_initialTractFilename);
 
-  fieldT = const_cast<double*>(_fieldT);
-  jacobian = const_cast<double*>(_jacobian);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  forcesInitial = const_cast<double*>(_forcesInitial);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  forcesInitial = const_cast<PylithScalar*>(_forcesInitial);
 
   constraintVertices = const_cast<int*>(_constraintVertices);
   numConstraintVert = _numConstraintVert;  
 
   // Stick
-  fieldIncrStick = const_cast<double*>(_fieldIncrStick);
+  fieldIncrStick = const_cast<PylithScalar*>(_fieldIncrStick);
 
   // Slip
-  fieldIncrSlip = const_cast<double*>(_fieldIncrSlip);
-  fieldIncrSlipE = const_cast<double*>(_fieldIncrSlipE);
-  slipSlipE = const_cast<double*>(_slipSlipE);
+  fieldIncrSlip = const_cast<PylithScalar*>(_fieldIncrSlip);
+  fieldIncrSlipE = const_cast<PylithScalar*>(_fieldIncrSlipE);
+  slipSlipE = const_cast<PylithScalar*>(_slipSlipE);
 
   // Open
-  fieldIncrOpen = const_cast<double*>(_fieldIncrOpen);
-  fieldIncrOpenE = const_cast<double*>(_fieldIncrOpenE);
-  slipOpenE = const_cast<double*>(_slipOpenE);
+  fieldIncrOpen = const_cast<PylithScalar*>(_fieldIncrOpen);
+  fieldIncrOpenE = const_cast<PylithScalar*>(_fieldIncrOpenE);
+  slipOpenE = const_cast<PylithScalar*>(_slipOpenE);
 } // constructor
 
 pylith::faults::CohesiveDynDataTri3d::~CohesiveDynDataTri3d(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3d.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3d.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3d.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,29 +49,29 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
   static const char* _initialTractFilename; ///< Name of db for initial tractions.
 
-  static const double _fieldT[]; ///< Solution field at time t.
-  static const double _fieldIncrStick[]; ///< Solution increment at time t for stick case.
-  static const double _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
-  static const double _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
-  static const double _jacobian[]; ///< Jacobian sparse matrix.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldIncrStick[]; ///< Solution increment at time t for stick case.
+  static const PylithScalar _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
+  static const PylithScalar _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
+  static const PylithScalar _jacobian[]; ///< Jacobian sparse matrix.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _forcesInitial[]; ///< Expected values for initial forces.
-  static const double _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
-  static const double _slipSlipE[]; ///< Expected values for slip for slip case.
-  static const double _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
-  static const double _slipOpenE[]; ///< Expected values for slip for opening case.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _forcesInitial[]; ///< Expected values for initial forces.
+  static const PylithScalar _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
+  static const PylithScalar _slipSlipE[]; ///< Expected values for slip for slip case.
+  static const PylithScalar _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
+  static const PylithScalar _slipOpenE[]; ///< Expected values for slip for opening case.
   static const int _constraintVertices[]; ///< Expected points for constraint vertices
   static const int _numConstraintVert; ///< Number of constraint vertices
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_faults_cohesivekindata_hh)
 #define pylith_faults_cohesivekindata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace faults {
      class CohesiveKinData;
@@ -48,11 +50,11 @@
   int cellDim; ///< Number of dimensions associated with cell
   int numBasis; ///< Number of vertices in cell
   int numQuadPts; ///< Number of quadrature points
-  double* quadPts; ///< Coordinates of quad pts in ref cell
-  double* quadWts; ///< Weights of quadrature points
-  double* basis; ///< Basis fns at quadrature points
-  double* basisDeriv; ///< Derivatives of basis fns at quad pts
-  double* verticesRef; ///< Coordinates of vertices in ref cell (dual basis)
+  PylithScalar* quadPts; ///< Coordinates of quad pts in ref cell
+  PylithScalar* quadWts; ///< Weights of quadrature points
+  PylithScalar* basis; ///< Basis fns at quadrature points
+  PylithScalar* basisDeriv; ///< Derivatives of basis fns at quad pts
+  PylithScalar* verticesRef; ///< Coordinates of vertices in ref cell (dual basis)
   //@}
 
   /// @name Fault information
@@ -67,24 +69,24 @@
 
   /// @name Input fields
   //@{
-  double* fieldT; ///< Field over domain at time t.
-  double* fieldIncr; ///< Solution increment field over domain at time t.
-  double* jacobianLumped; ///< Lumped Jacobian.
+  PylithScalar* fieldT; ///< Field over domain at time t.
+  PylithScalar* fieldIncr; ///< Solution increment field over domain at time t.
+  PylithScalar* jacobianLumped; ///< Lumped Jacobian.
   //@}
 
   /// @name Calculated values.
   //@{
-  double* orientation; ///< Expected values for fault orientation.
-  double* area; ///< Expected values for fault area.
-  double* residual; ///< Expected values from residual calculation.
+  PylithScalar* orientation; ///< Expected values for fault orientation.
+  PylithScalar* area; ///< Expected values for fault area.
+  PylithScalar* residual; ///< Expected values from residual calculation.
 
   /// Expected values from residual calculation using solution increment.
-  double* residualIncr;
+  PylithScalar* residualIncr;
 
-  double* jacobian; ///< Expected values from Jacobian calculation.
+  PylithScalar* jacobian; ///< Expected values from Jacobian calculation.
 
   /// Expected values for solution increment after adjustment.
-  double* fieldIncrAdjusted;
+  PylithScalar* fieldIncrAdjusted;
 
   int* verticesFault; ///< Expected points for Fault vertices
   int* verticesLagrange; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,25 +47,25 @@
 
 const int pylith::faults::CohesiveKinDataHex8::_numQuadPts = 4;
 
-const double pylith::faults::CohesiveKinDataHex8::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_quadPts[] = {
   -0.57735027, -0.57735027,
   +0.57735027, -0.57735027,
   +0.57735027, +0.57735027,
   -0.57735027, +0.57735027,
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_quadWts[] = {
   1.0, 1.0, 1.0, 1.0
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_basis[] = {
   0.62200847,  0.16666667,  0.16666667,  0.0446582,
   0.16666667,  0.62200847,  0.0446582,   0.16666667,
   0.16666667,  0.0446582,   0.62200847,  0.16666667,
   0.0446582,   0.16666667,  0.16666667,  0.62200847,
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_basisDeriv[] = {
   -0.39433757, -0.39433757,
   +0.39433757, -0.10566243,
   +0.10566243, +0.10566243,
@@ -87,7 +87,7 @@
   -0.39433757, +0.39433757,
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_verticesRef[] = {
   -1.0, -1.0,
   +1.0, -1.0,
   +1.0, +1.0,
@@ -107,7 +107,7 @@
 const char* pylith::faults::CohesiveKinDataHex8::_riseTimeFilename = 
   "data/hex8_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinDataHex8::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_fieldT[] = {
   4.1, 6.1, 8.1,
   4.2, 6.2, 8.2,
   4.3, 6.3, 8.3,
@@ -130,7 +130,7 @@
   5.0, 7.0, 9.0, // 21
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_fieldIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_fieldIncr[] = {
   3.1, 4.1, 5.1,
   3.2, 4.2, 5.2,
   3.3, 4.3, 5.3,
@@ -153,7 +153,7 @@
   3.0, 4.0, 5.0, // 21
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_jacobianLumped[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_jacobianLumped[] = {
   1.1, 1.1, 1.1,
   1.2, 1.2, 1.2,
   1.3, 1.3, 1.3,
@@ -199,18 +199,18 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataHex8::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_orientation[] = {
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_area[] = {
   1.0, 1.0, 1.0, 1.0
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_residual[] = {
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -233,7 +233,7 @@
   1.1+1.29378670385, -1.1+-0.49761027071, 1.1+0.19904410828, // 21 (constraint)
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_residualIncr[] = {
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -256,7 +256,7 @@
   1.1+1.29378670385, -1.1+-0.49761027071, 1.1+0.19904410828, // 21 (constraint)
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_jacobian[] = {
   0.0, 0.0, 0.0, // 2x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1459,7 +1459,7 @@
   0.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataHex8::_fieldIncrAdjusted[] = {
+const PylithScalar pylith::faults::CohesiveKinDataHex8::_fieldIncrAdjusted[] = {
   3.1, 4.1, 5.1,
   3.2, 4.2, 5.2,
   3.3, 4.3, 5.3,
@@ -1489,25 +1489,25 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldIncr = const_cast<double*>(_fieldIncr);
-  jacobianLumped = const_cast<double*>(_jacobianLumped);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residualIncr = const_cast<double*>(_residualIncr);
-  residual = const_cast<double*>(_residual);
-  jacobian = const_cast<double*>(_jacobian);
-  fieldIncrAdjusted = const_cast<double*>(_fieldIncrAdjusted);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldIncr = const_cast<PylithScalar*>(_fieldIncr);
+  jacobianLumped = const_cast<PylithScalar*>(_jacobianLumped);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  residual = const_cast<PylithScalar*>(_residual);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  fieldIncrAdjusted = const_cast<PylithScalar*>(_fieldIncrAdjusted);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,16 +63,16 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Field over domain at time t.
-  static const double _fieldIncr[]; ///< Solution increment field over domain at time t.
-  static const double _jacobianLumped[]; ///< Lumped Jacobian.
+  static const PylithScalar _fieldT[]; ///< Field over domain at time t.
+  static const PylithScalar _fieldIncr[]; ///< Solution increment field over domain at time t.
+  static const PylithScalar _jacobianLumped[]; ///< Lumped Jacobian.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation with solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
-  static const double _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation with solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,23 +39,23 @@
 
 const int pylith::faults::CohesiveKinDataLine2::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinDataLine2::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_quadWts[] = {
   1.0,
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_basis[] = {
   1.0,
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_basisDeriv[] = {
   1.0
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_verticesRef[] = {
   0.0
 };
 
@@ -73,7 +73,7 @@
   "data/line2_risetime.spatialdb";
 
 // Don't expect these values to be used, so just use some values.
-const double pylith::faults::CohesiveKinDataLine2::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_fieldT[] = {
   7.1,
   7.2, // 3
   7.3,
@@ -81,7 +81,7 @@
   7.5
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_fieldIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_fieldIncr[] = {
   1.1,
   1.2, // 3
   1.3,
@@ -89,7 +89,7 @@
   1.5
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_jacobianLumped[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_jacobianLumped[] = {
   2.1,
   2.2, // 3
   2.3,
@@ -120,15 +120,15 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataLine2::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_orientation[] = {
   1.0
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_area[] = {
   1.0
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_residualIncr[] = {
    0.0,
    7.5,
    0.0,
@@ -136,7 +136,7 @@
   -0.2+1.89546413727,
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_residual[] = {
    0.0,
    7.5, // 3
    0.0,
@@ -144,7 +144,7 @@
   -0.2+1.89546413727,
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_jacobian[] = {
   0.0,  0.0,  0.0,  0.0,  0.0,
   0.0,  0.0,  0.0,  0.0, -1.0,
   0.0,  0.0,  0.0,  0.0,  0.0,
@@ -152,7 +152,7 @@
   0.0, -1.0,  0.0, +1.0,  0.0,
 };
 
-const double pylith::faults::CohesiveKinDataLine2::_fieldIncrAdjusted[] = {
+const PylithScalar pylith::faults::CohesiveKinDataLine2::_fieldIncrAdjusted[] = {
   1.1,
   -3.09368089375, // 3
   1.3,
@@ -167,25 +167,25 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldIncr = const_cast<double*>(_fieldIncr);
-  jacobianLumped = const_cast<double*>(_jacobianLumped);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residualIncr = const_cast<double*>(_residualIncr);
-  residual = const_cast<double*>(_residual);
-  jacobian = const_cast<double*>(_jacobian);
-  fieldIncrAdjusted = const_cast<double*>(_fieldIncrAdjusted);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldIncr = const_cast<PylithScalar*>(_fieldIncr);
+  jacobianLumped = const_cast<PylithScalar*>(_jacobianLumped);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  residual = const_cast<PylithScalar*>(_residual);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  fieldIncrAdjusted = const_cast<PylithScalar*>(_fieldIncrAdjusted);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,16 +63,16 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Field over domain at time t.
-  static const double _fieldIncr[]; ///< Solution increment field over domain at time t.
-  static const double _jacobianLumped[]; ///< Lumped Jacobian.
+  static const PylithScalar _fieldT[]; ///< Field over domain at time t.
+  static const PylithScalar _fieldIncr[]; ///< Solution increment field over domain at time t.
+  static const PylithScalar _jacobianLumped[]; ///< Lumped Jacobian.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation with solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
-  static const double _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation with solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -60,25 +60,25 @@
 
 const int pylith::faults::CohesiveKinDataQuad4::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinDataQuad4::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -95,7 +95,7 @@
 const char* pylith::faults::CohesiveKinDataQuad4::_riseTimeFilename = 
   "data/quad4_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinDataQuad4::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_fieldT[] = {
   8.1, 9.1,
   8.2, 9.2,
   8.3, 9.3, // 4
@@ -108,7 +108,7 @@
   8.0, 9.0, // 11
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_fieldIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_fieldIncr[] = {
   3.1, 4.1,
   3.2, 4.2,
   3.3, 4.3, // 4
@@ -121,7 +121,7 @@
   3.0, 4.0, // 11
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_jacobianLumped[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_jacobianLumped[] = {
   1.1, 1.1,
   1.2, 1.2,
   1.3, 1.3, // 4
@@ -158,17 +158,17 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataQuad4::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_orientation[] = {
   0.0,  1.0,  +1.0, 0.0,
   0.0,  1.0,  +1.0, 0.0
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_area[] = {
   1.0, 1.0,
 };
 
 
-const double pylith::faults::CohesiveKinDataQuad4::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_residual[] = {
   0.0,  0.0,
   0.0,  0.0,
   9.8,  8.8, // 4
@@ -181,7 +181,7 @@
  -0.5+1.89546413727, -0.5+0.08241148423, // 11
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_residualIncr[] = {
   0.0,  0.0,
   0.0,  0.0,
   9.8,  8.8, // 4
@@ -194,7 +194,7 @@
  -0.5+1.89546413727, -0.5+0.08241148423, // 11
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_jacobian[] = {
   0.0, 0.0, // 2x
   0.0, 0.0,
   0.0, 0.0,
@@ -397,7 +397,7 @@
   0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataQuad4::_fieldIncrAdjusted[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4::_fieldIncrAdjusted[] = {
   3.1, 4.1,
   3.2, 4.2,
   -4.09563227733, -3.248612969, // 4
@@ -417,25 +417,25 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldIncr = const_cast<double*>(_fieldIncr);
-  jacobianLumped = const_cast<double*>(_jacobianLumped);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residualIncr = const_cast<double*>(_residualIncr);
-  residual = const_cast<double*>(_residual);
-  jacobian = const_cast<double*>(_jacobian);
-  fieldIncrAdjusted = const_cast<double*>(_fieldIncrAdjusted);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldIncr = const_cast<PylithScalar*>(_fieldIncr);
+  jacobianLumped = const_cast<PylithScalar*>(_jacobianLumped);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  residual = const_cast<PylithScalar*>(_residual);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  fieldIncrAdjusted = const_cast<PylithScalar*>(_fieldIncrAdjusted);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,16 +63,16 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Field over domain at time t.
-  static const double _fieldIncr[]; ///< Solution increment field over domain at time t.
-  static const double _jacobianLumped[]; ///< Lumped Jacobian.
+  static const PylithScalar _fieldT[]; ///< Field over domain at time t.
+  static const PylithScalar _fieldIncr[]; ///< Solution increment field over domain at time t.
+  static const PylithScalar _jacobianLumped[]; ///< Lumped Jacobian.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation with solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
-  static const double _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation with solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4e.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4e.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4e.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -79,25 +79,25 @@
 
 const int pylith::faults::CohesiveKinDataQuad4e::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinDataQuad4e::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveKinDataQuad4e::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinDataQuad4e::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveKinDataQuad4e::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveKinDataQuad4e::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -114,7 +114,7 @@
 const char* pylith::faults::CohesiveKinDataQuad4e::_riseTimeFilename = 
   "data/quad4e_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinDataQuad4e::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_fieldT[] = {
   3.1, 5.1,
   3.2, 5.2,
   3.3, 5.3, // 6
@@ -134,13 +134,13 @@
 
 
 
-const double pylith::faults::CohesiveKinDataQuad4e::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_orientation[] = {
   0.0, -1.0,  -1.0, 0.0,
   0.0, -1.0,  -1.0, 0.0,
   0.0, -1.0,  -1.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataQuad4e::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_area[] = {
   1.0,
   2.0,
   1.0,
@@ -169,7 +169,7 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataQuad4e::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_residual[] = {
   0.0,  0.0,
   0.0,  0.0,
  -6.1, -4.1, // 6
@@ -187,7 +187,7 @@
   0.6+1.59887481971,  0.6+0.19186497837, // 18
 };
 
-const double pylith::faults::CohesiveKinDataQuad4e::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_residualIncr[] = {
   0.0,  0.0,
   0.0,  0.0,
  -6.1, -4.1, // 6
@@ -205,7 +205,7 @@
   0.6+1.59887481971,  0.6+0.19186497837, // 18
 };
 
-const double pylith::faults::CohesiveKinDataQuad4e::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataQuad4e::_jacobian[] = {
   0.0, 0.0, // 4x
   0.0, 0.0,
   0.0, 0.0,
@@ -665,22 +665,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residual = const_cast<double*>(_residual);
-  residualIncr = const_cast<double*>(_residualIncr);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residual = const_cast<PylithScalar*>(_residual);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4e.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4e.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation using solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation using solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,25 +46,25 @@
 
 const int pylith::faults::CohesiveKinDataTet4::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinDataTet4::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_quadPts[] = {
   -3.33333333e-01,  -3.33333333e-01,
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::faults::CohesiveKinDataTet4::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_basisDeriv[] = {
  -0.50000000e+00, -0.50000000e+00,
   0.50000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.50000000e+00,
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -83,7 +83,7 @@
 const char* pylith::faults::CohesiveKinDataTet4::_riseTimeFilename = 
   "data/tet4_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinDataTet4::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_fieldT[] = {
   7.1, 8.1, 9.1,
   7.2, 8.2, 9.2, // 3
   7.3, 8.3, 9.3, // 4
@@ -97,7 +97,7 @@
   7.1, 8.1, 9.1, // 12
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_fieldIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_fieldIncr[] = {
   3.1, 4.1, 5.1,
   3.2, 4.2, 5.2, // 3
   3.3, 4.3, 5.3, // 4
@@ -111,7 +111,7 @@
   3.1, 4.1, 5.1, // 12
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_jacobianLumped[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_jacobianLumped[] = {
   1.1, 1.1, 1.1,
   1.2, 1.2, 1.2, // 3
   1.3, 1.3, 1.3, // 4
@@ -149,19 +149,19 @@
 
 
 
-const double pylith::faults::CohesiveKinDataTet4::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_orientation[] = {
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_area[] = {
   1.0/3.0, 
   1.0/3.0, 
   1.0/3.0,
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_residual[] = {
   0.0,  0.0,  0.0,
   9.7,  7.7,  8.7, // 3
   9.9,  7.9,  8.9, // 4
@@ -175,7 +175,7 @@
   0.4+1.51709826228,  0.4+-0.54615537442,  0.4+0.18205179147, // 12
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_residualIncr[] = {
   0.0,  0.0,  0.0,
   9.7,  7.7,  8.7, // 3
   9.9,  7.9,  8.9, // 4
@@ -189,7 +189,7 @@
   0.4+1.51709826228,  0.4+-0.54615537442,  0.4+0.18205179147, // 12
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_jacobian[] = {
   0.0, 0.0, 0.0, // 2x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -555,7 +555,7 @@
   0.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataTet4::_fieldIncrAdjusted[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4::_fieldIncrAdjusted[] = {
   3.1, 4.1, 5.1,
   -4.70012229942, -3.03138431537, -1.50390580878, // 3
   -4.10716666377, -2.47185604467, -0.927412749378, // 4
@@ -576,25 +576,25 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldIncr = const_cast<double*>(_fieldIncr);
-  jacobianLumped = const_cast<double*>(_jacobianLumped);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residualIncr = const_cast<double*>(_residualIncr);
-  residual = const_cast<double*>(_residual);
-  jacobian = const_cast<double*>(_jacobian);
-  fieldIncrAdjusted = const_cast<double*>(_fieldIncrAdjusted);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldIncr = const_cast<PylithScalar*>(_fieldIncr);
+  jacobianLumped = const_cast<PylithScalar*>(_jacobianLumped);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  residual = const_cast<PylithScalar*>(_residual);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  fieldIncrAdjusted = const_cast<PylithScalar*>(_fieldIncrAdjusted);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,16 +63,16 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Field over domain at time t.
-  static const double _fieldIncr[]; ///< Solution increment field over domain at time t.
-  static const double _jacobianLumped[]; ///< Lumped Jacobian.
+  static const PylithScalar _fieldT[]; ///< Field over domain at time t.
+  static const PylithScalar _fieldIncr[]; ///< Solution increment field over domain at time t.
+  static const PylithScalar _jacobianLumped[]; ///< Lumped Jacobian.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation with solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
-  static const double _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation with solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4e.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4e.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4e.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,25 +46,25 @@
 
 const int pylith::faults::CohesiveKinDataTet4e::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinDataTet4e::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_quadPts[] = {
   -3.33333333e-01,  -3.33333333e-01,
 };
 
-const double pylith::faults::CohesiveKinDataTet4e::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinDataTet4e::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::faults::CohesiveKinDataTet4e::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_basisDeriv[] = {
  -0.50000000e+00, -0.50000000e+00,
   0.50000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.50000000e+00,
 };
 
-const double pylith::faults::CohesiveKinDataTet4e::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -83,7 +83,7 @@
 const char* pylith::faults::CohesiveKinDataTet4e::_riseTimeFilename = 
   "data/tet4e_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinDataTet4e::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_fieldT[] = {
   3.1, 5.1, 7.1,
   3.2, 5.2, 7.2, // 5
   3.3, 5.3, 7.3, // 6
@@ -101,14 +101,14 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataTet4e::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_orientation[] = {
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataTet4e::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_area[] = {
   2.0/3.0,
   1.0/3.0,
   2.0/3.0,
@@ -139,7 +139,7 @@
 
 
 
-const double pylith::faults::CohesiveKinDataTet4e::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_residual[] = {
   0.0,  0.0,  0.0,
   7.8,  3.8,  5.8, // 5
   7.0,  3.0,  5.0, // 6
@@ -156,7 +156,7 @@
  -0.8+1.29378670385, -0.8-0.49761027071, -0.8+0.19904410828, // 17
 };
 
-const double pylith::faults::CohesiveKinDataTet4e::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_residualIncr[] = {
   0.0,  0.0,  0.0,
   7.8,  3.8,  5.8, // 5
   7.0,  3.0,  5.0, // 6
@@ -173,7 +173,7 @@
  -0.8+1.29378670385, -0.8-0.49761027071, -0.8+0.19904410828, // 17
 };
 
-const double pylith::faults::CohesiveKinDataTet4e::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4e::_jacobian[] = {
   0.0, 0.0, 0.0, // 4x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -771,22 +771,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residual = const_cast<double*>(_residual);
-  residualIncr = const_cast<double*>(_residualIncr);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residual = const_cast<PylithScalar*>(_residual);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4e.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4e.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation using solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation using solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,25 +46,25 @@
 
 const int pylith::faults::CohesiveKinDataTet4f::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinDataTet4f::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_quadPts[] = {
   -3.33333333e-01,  -3.33333333e-01,
 };
 
-const double pylith::faults::CohesiveKinDataTet4f::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinDataTet4f::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::faults::CohesiveKinDataTet4f::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_basisDeriv[] = {
  -0.50000000e+00, -0.50000000e+00,
   0.50000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.50000000e+00,
 };
 
-const double pylith::faults::CohesiveKinDataTet4f::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -83,7 +83,7 @@
 const char* pylith::faults::CohesiveKinDataTet4f::_riseTimeFilename = 
   "data/tet4_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinDataTet4f::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_fieldT[] = {
   7.1, 8.1, 9.1,
   7.2, 8.2, 9.2, // 3
   7.3, 8.3, 9.3, // 4
@@ -98,13 +98,13 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataTet4f::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_orientation[] = {
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataTet4f::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_area[] = {
   1.0/3.0,
   1.0/3.0,
   1.0/3.0,
@@ -133,7 +133,7 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataTet4f::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_residual[] = {
   0.0,  0.0,  0.0,
  -9.7, -7.7, +8.7, // 3
  -9.9, -7.9, +8.9, // 4
@@ -147,7 +147,7 @@
  -0.4+1.51709826228,  +0.4+-0.54615537442, -0.4+0.18205179147, // 12
 };
 
-const double pylith::faults::CohesiveKinDataTet4f::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_residualIncr[] = {
   0.0,  0.0,  0.0,
  -9.7, -7.7, +8.7, // 3
  -9.9, -7.9, +8.9, // 4
@@ -161,7 +161,7 @@
  -0.4+1.51709826228, +0.4+-0.54615537442, -0.4+0.18205179147, // 12
 };
 
-const double pylith::faults::CohesiveKinDataTet4f::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTet4f::_jacobian[] = {
   0.0, 0.0, 0.0, // 2x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -534,22 +534,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residual = const_cast<double*>(_residual);
-  residualIncr = const_cast<double*>(_residualIncr);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residual = const_cast<PylithScalar*>(_residual);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4f.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation using solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation using solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,25 +63,25 @@
 
 const int pylith::faults::CohesiveKinDataTri3::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinDataTri3::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -98,7 +98,7 @@
 const char* pylith::faults::CohesiveKinDataTri3::_riseTimeFilename = 
   "data/tri3_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinDataTri3::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_fieldT[] = {
   8.1, 9.1,
   8.2, 9.2, // 3
   8.3, 9.3, // 4
@@ -109,7 +109,7 @@
   8.8, 9.8, // 9
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_fieldIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_fieldIncr[] = {
   3.1, 4.1,
   3.2, 4.2, // 3
   3.3, 4.3, // 4
@@ -120,7 +120,7 @@
   3.8, 4.8, // 9
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_jacobianLumped[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_jacobianLumped[] = {
   1.1, 1.1,
   1.2, 1.2, // 3
   1.3, 1.3, // 4
@@ -154,17 +154,17 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataTri3::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_orientation[] = {
   0.0, -1.0,  -1.0, 0.0,
   0.0, -1.0,  -1.0, 0.0
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_area[] = {
   1.0,
   1.0,
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_residual[] = {
   0.0,  0.0,
  -9.6, -8.6, // 3
  -9.8, -8.8, // 4
@@ -175,7 +175,7 @@
   0.4+1.77538035254,  0.4+0.14794836271, // 9
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_residualIncr[] = {
   0.0,  0.0,
  -9.6, -8.6, // 3
  -9.8, -8.8, // 4
@@ -186,7 +186,7 @@
   0.4+1.77538035254,  0.4+0.14794836271, // 9
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_jacobian[] = {
   0.0, 0.0, // 2x
   0.0, 0.0,
   0.0, 0.0,
@@ -319,7 +319,7 @@
   0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinDataTri3::_fieldIncrAdjusted[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3::_fieldIncrAdjusted[] = {
   3.1, 4.1,
   11.4124508246, 12.5863689652, // 3
   11.1489656107, 12.3019463023, // 4
@@ -337,25 +337,25 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldIncr = const_cast<double*>(_fieldIncr);
-  jacobianLumped = const_cast<double*>(_jacobianLumped);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residualIncr = const_cast<double*>(_residualIncr);
-  residual = const_cast<double*>(_residual);
-  jacobian = const_cast<double*>(_jacobian);
-  fieldIncrAdjusted = const_cast<double*>(_fieldIncrAdjusted);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldIncr = const_cast<PylithScalar*>(_fieldIncr);
+  jacobianLumped = const_cast<PylithScalar*>(_jacobianLumped);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  residual = const_cast<PylithScalar*>(_residual);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  fieldIncrAdjusted = const_cast<PylithScalar*>(_fieldIncrAdjusted);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,16 +63,16 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Field over domain at time t.
-  static const double _fieldIncr[]; ///< Solution increment field over domain at time t.
-  static const double _jacobianLumped[]; ///< Lumped Jacobian.
+  static const PylithScalar _fieldT[]; ///< Field over domain at time t.
+  static const PylithScalar _fieldIncr[]; ///< Solution increment field over domain at time t.
+  static const PylithScalar _jacobianLumped[]; ///< Lumped Jacobian.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation with solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
-  static const double _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation with solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _fieldIncrAdjusted[]; ///< Expected values for colution increment after adjustment.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3d.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3d.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3d.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -78,25 +78,25 @@
 
 const int pylith::faults::CohesiveKinDataTri3d::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinDataTri3d::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveKinDataTri3d::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinDataTri3d::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveKinDataTri3d::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveKinDataTri3d::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -113,7 +113,7 @@
 const char* pylith::faults::CohesiveKinDataTri3d::_riseTimeFilename = 
   "data/tri3d_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinDataTri3d::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_fieldT[] = {
   6.1, 8.1,
   6.2, 8.2, // 5
   6.3, 8.3, // 6
@@ -129,14 +129,14 @@
 };
 
 
-const double pylith::faults::CohesiveKinDataTri3d::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_orientation[] = {
   +0.70710678118654757, -0.70710678118654757,  
   -0.70710678118654757, -0.70710678118654757,
   0.0, -1.0,  -1.0,  0.0,
  +1.0,  0.0,   0.0, -1.0
 };
 
-const double pylith::faults::CohesiveKinDataTri3d::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_area[] = {
   2.0,
   1.0,
   1.0,
@@ -164,7 +164,7 @@
   16, 17
 };
 
-const double pylith::faults::CohesiveKinDataTri3d::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_residual[] = {
   0.0,  0.0,
  -1.4142135623730949, -11.030865786510143, // 5
  -8.0,  -6.0, // 6
@@ -179,7 +179,7 @@
  -0.6+1.59887481971,  0.6+0.19186497837, // 15
 };
 
-const double pylith::faults::CohesiveKinDataTri3d::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_residualIncr[] = {
   0.0,  0.0,
  -1.4142135623730949, -11.030865786510143, // 5
  -8.0,  -6.0, // 6
@@ -194,7 +194,7 @@
  -0.6+1.59887481971,  0.6+0.19186497837, // 15
 };
 
-const double pylith::faults::CohesiveKinDataTri3d::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinDataTri3d::_jacobian[] = {
   0.0, 0.0, // 4x
   0.0, 0.0,
   0.0, 0.0,
@@ -492,22 +492,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residual = const_cast<double*>(_residual);
-  residualIncr = const_cast<double*>(_residualIncr);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residual = const_cast<PylithScalar*>(_residual);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3d.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3d.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTri3d.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation using solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation using solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,25 +47,25 @@
 
 const int pylith::faults::CohesiveKinSrcsDataHex8::_numQuadPts = 4;
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_quadPts[] = {
   -0.57735027, -0.57735027,
   +0.57735027, -0.57735027,
   +0.57735027, +0.57735027,
   -0.57735027, +0.57735027,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_quadWts[] = {
   1.0, 1.0, 1.0, 1.0
 };
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_basis[] = {
   0.62200847,  0.16666667,  0.16666667,  0.0446582,
   0.16666667,  0.62200847,  0.0446582,   0.16666667,
   0.16666667,  0.0446582,   0.62200847,  0.16666667,
   0.0446582,   0.16666667,  0.16666667,  0.62200847,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_basisDeriv[] = {
   -0.39433757, -0.39433757,
   +0.39433757, -0.10566243,
   +0.10566243, +0.10566243,
@@ -87,7 +87,7 @@
   -0.39433757, +0.39433757,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_verticesRef[] = {
   -1.0, -1.0,
   +1.0, -1.0,
   +1.0, +1.0,
@@ -107,7 +107,7 @@
 const char* pylith::faults::CohesiveKinSrcsDataHex8::_riseTimeFilename = 
   "data/hex8_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_fieldT[] = {
   4.1, 6.1, 8.1,
   4.2, 6.2, 8.2,
   4.3, 6.3, 8.3,
@@ -131,14 +131,14 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_orientation[] = {
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
   0.0, -1.0, 0.0,    0.0, 0.0, +1.0,    -1.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_area[] = {
   1.0, 1.0, 1.0, 1.0
 };
 
@@ -165,7 +165,7 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_residual[] = {
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -188,7 +188,7 @@
   1.1+1.29378670385+0.12855127934, -1.1+-0.49761027071+-0.04944279975, 1.1+0.19904410828+0.01977711990, // 21 (constraint)
 };
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_residualIncr[] = {
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -211,7 +211,7 @@
   1.1+1.29378670385+0.12855127934, -1.1+-0.49761027071+-0.04944279975, 1.1+0.19904410828+0.01977711990, // 21 (constraint)
 };
 
-const double pylith::faults::CohesiveKinSrcsDataHex8::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataHex8::_jacobian[] = {
   0.0, 0.0, 0.0, // 2x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -1421,22 +1421,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residual = const_cast<double*>(_residual);
-  residualIncr = const_cast<double*>(_residualIncr);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residual = const_cast<PylithScalar*>(_residual);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation using solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation using solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,23 +39,23 @@
 
 const int pylith::faults::CohesiveKinSrcsDataLine2::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_quadWts[] = {
   1.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_basis[] = {
   1.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_basisDeriv[] = {
   1.0
 };
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_verticesRef[] = {
   0.0
 };
 
@@ -73,7 +73,7 @@
   "data/line2_risetime.spatialdb";
 
 // Don't expect these values to be used, so just use some values.
-const double pylith::faults::CohesiveKinSrcsDataLine2::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_fieldT[] = {
   7.1,
   7.2,
   7.3,
@@ -82,11 +82,11 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_orientation[] = {
   1.0
 };
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_area[] = {
   1.0
 };
 
@@ -113,7 +113,7 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_residualIncr[] = {
    0.0,
    7.5,
    0.0,
@@ -121,7 +121,7 @@
   -0.2+1.89546413727+0.99414665414,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_residual[] = {
    0.0,
    7.5,
    0.0,
@@ -129,7 +129,7 @@
   -0.2+1.89546413727+0.99414665414,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataLine2::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataLine2::_jacobian[] = {
   0.0,  0.0,  0.0,  0.0,  0.0,
   0.0,  0.0,  0.0,  0.0, -1.0,
   0.0,  0.0,  0.0,  0.0,  0.0,
@@ -144,22 +144,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residualIncr = const_cast<double*>(_residualIncr);
-  residual = const_cast<double*>(_residual);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  residual = const_cast<PylithScalar*>(_residual);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation with solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation with solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -60,25 +60,25 @@
 
 const int pylith::faults::CohesiveKinSrcsDataQuad4::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -95,7 +95,7 @@
 const char* pylith::faults::CohesiveKinSrcsDataQuad4::_riseTimeFilename = 
   "data/quad4_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_fieldT[] = {
   8.1, 9.1,
   8.2, 9.2,
   8.3, 9.3, // 4
@@ -110,12 +110,12 @@
 
 
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_orientation[] = {
   0.0,  1.0,  +1.0, 0.0,
   0.0,  1.0,  +1.0, 0.0
 };
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_area[] = {
   1.0, 1.0,
 };
 
@@ -142,7 +142,7 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_residual[] = {
   0.0,  0.0,
   0.0,  0.0,
   9.8,  8.8, // 4
@@ -155,7 +155,7 @@
  -0.5+1.89546413727+0.99414665414, -0.5+0.08241148423+0.04322376757, // 11
 };
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_residualIncr[] = {
   0.0,  0.0,
   0.0,  0.0,
   9.8,  8.8, // 4
@@ -168,7 +168,7 @@
  -0.5+1.89546413727+0.99414665414, -0.5+0.08241148423+0.04322376757, // 11
 };
 
-const double pylith::faults::CohesiveKinSrcsDataQuad4::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataQuad4::_jacobian[] = {
   0.0, 0.0, // 2x
   0.0, 0.0,
   0.0, 0.0,
@@ -378,22 +378,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residual = const_cast<double*>(_residual);
-  residualIncr = const_cast<double*>(_residualIncr);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residual = const_cast<PylithScalar*>(_residual);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation using solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation using solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,25 +46,25 @@
 
 const int pylith::faults::CohesiveKinSrcsDataTet4::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_quadPts[] = {
   -3.33333333e-01,  -3.33333333e-01,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_basisDeriv[] = {
  -0.50000000e+00, -0.50000000e+00,
   0.50000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.50000000e+00,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -83,7 +83,7 @@
 const char* pylith::faults::CohesiveKinSrcsDataTet4::_riseTimeFilename = 
   "data/tet4_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_fieldT[] = {
   7.1, 8.1, 9.1,
   7.2, 8.2, 9.2,
   7.3, 8.3, 9.3,
@@ -98,13 +98,13 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_orientation[] = {
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
   0.0, +1.0, 0.0,    0.0, 0.0, +1.0,    +1.0, 0.0, 0.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_area[] = {
   1.0/3.0, 
   1.0/3.0, 
   1.0/3.0,
@@ -133,7 +133,7 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_residual[] = {
   0.0,  0.0,  0.0,
   9.7,  7.7,  8.7, // 3
   9.9,  7.9,  8.9, // 4
@@ -147,7 +147,7 @@
   0.4+1.51709826228+0.34903622931,  0.4+-0.54615537442+-0.12565304255,  0.4+0.18205179147+0.04188434752, // 12
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_residualIncr[] = {
   0.0,  0.0,  0.0,
   9.7,  7.7,  8.7, // 3
   9.9,  7.9,  8.9, // 4
@@ -161,7 +161,7 @@
   0.4+1.51709826228+0.34903622931,  0.4+-0.54615537442+-0.12565304255,  0.4+0.18205179147+0.04188434752, // 12
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTet4::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTet4::_jacobian[] = {
   0.0, 0.0, 0.0, // 2x
   0.0, 0.0, 0.0,
   0.0, 0.0, 0.0,
@@ -534,22 +534,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residual = const_cast<double*>(_residual);
-  residualIncr = const_cast<double*>(_residualIncr);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residual = const_cast<PylithScalar*>(_residual);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation using solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation using solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -74,25 +74,25 @@
 
 const int pylith::faults::CohesiveKinSrcsDataTri3::_numQuadPts = 1;
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_quadPts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_quadPts[] = {
   0.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_quadWts[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_quadWts[] = {
   2.0,
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_basis[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_basis[] = {
   0.5,
   0.5
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_basisDeriv[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_basisDeriv[] = {
   -0.5,
    0.5
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_verticesRef[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_verticesRef[] = {
   -1.0, 1.0
 };
 
@@ -109,7 +109,7 @@
 const char* pylith::faults::CohesiveKinSrcsDataTri3::_riseTimeFilename = 
   "data/tri3_risetime.spatialdb";
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_fieldT[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_fieldT[] = {
   8.1, 9.1,
   8.2, 9.2,
   8.3, 9.3,
@@ -121,12 +121,12 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_orientation[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_orientation[] = {
   0.0, -1.0,  -1.0, 0.0,
   0.0, -1.0,  -1.0, 0.0
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_area[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_area[] = {
   1.0,
   1.0,
 };
@@ -154,7 +154,7 @@
 };
 
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_residual[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_residual[] = {
   0.0,  0.0,
  -9.6, -8.6, // 3
  -9.8, -8.8, // 4
@@ -165,7 +165,7 @@
   0.4+1.77538035254+0.68377062865,  0.4+0.14794836271+0.05698088572, // 9
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_residualIncr[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_residualIncr[] = {
   0.0,  0.0,
  -9.6, -8.6, // 3
  -9.8, -8.8, // 4
@@ -176,7 +176,7 @@
   0.4+1.77538035254+0.68377062865,  0.4+0.14794836271+0.05698088572, // 9
 };
 
-const double pylith::faults::CohesiveKinSrcsDataTri3::_jacobian[] = {
+const PylithScalar pylith::faults::CohesiveKinSrcsDataTri3::_jacobian[] = {
   0.0, 0.0, // 2x
   0.0, 0.0,
   0.0, 0.0,
@@ -316,22 +316,22 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
   id = _id;
   label = const_cast<char*>(_label);
   finalSlipFilename = const_cast<char*>(_finalSlipFilename);
   slipTimeFilename = const_cast<char*>(_slipTimeFilename);
   riseTimeFilename = const_cast<char*>(_riseTimeFilename);
-  fieldT = const_cast<double*>(_fieldT);
-  orientation = const_cast<double*>(_orientation);
-  area = const_cast<double*>(_area);
-  residual = const_cast<double*>(_residual);
-  residualIncr = const_cast<double*>(_residualIncr);
-  jacobian = const_cast<double*>(_jacobian);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  orientation = const_cast<PylithScalar*>(_orientation);
+  area = const_cast<PylithScalar*>(_area);
+  residual = const_cast<PylithScalar*>(_residual);
+  residualIncr = const_cast<PylithScalar*>(_residualIncr);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
   verticesFault = const_cast<int*>(_verticesFault);
   verticesLagrange = const_cast<int*>(_verticesLagrange);
   verticesNegative = const_cast<int*>(_verticesNegative);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinSrcsDataTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,11 +49,11 @@
 
   static const int _numBasis; ///< Number of vertices in cell
   static const int _numQuadPts; ///< Number of quadrature points
-  static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
-  static const double _quadWts[]; ///< Weights of quadrature points
-  static const double _basis[]; ///< Basis fns at quadrature points
-  static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
-  static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+  static const PylithScalar _quadPts[]; ///< Coordinates of quad pts in ref cell
+  static const PylithScalar _quadWts[]; ///< Weights of quadrature points
+  static const PylithScalar _basis[]; ///< Basis fns at quadrature points
+  static const PylithScalar _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+  static const PylithScalar _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
 
   static const int _id; ///< Fault material identifier
   static const char* _label; ///< Label for fault
@@ -63,13 +63,13 @@
   static const char* _matPropsFilename; ///< Name of db for bulk mat properties.
   //@}
 
-  static const double _fieldT[]; ///< Solution field at time t.
+  static const PylithScalar _fieldT[]; ///< Solution field at time t.
 
-  static const double _orientation[]; ///< Expected values for fault orientation.
-  static const double _area[]; ///< Expected values for fault area.
-  static const double _residual[]; ///< Expected values from residual calculation.
-  static const double _residualIncr[]; ///< Expected values from residual calculation using solution increment.
-  static const double _jacobian[]; ///< Expected values from Jacobian calculation.
+  static const PylithScalar _orientation[]; ///< Expected values for fault orientation.
+  static const PylithScalar _area[]; ///< Expected values for fault area.
+  static const PylithScalar _residual[]; ///< Expected values from residual calculation.
+  static const PylithScalar _residualIncr[]; ///< Expected values from residual calculation using solution increment.
+  static const PylithScalar _jacobian[]; ///< Expected values from Jacobian calculation.
 
   static const int _verticesFault[]; ///< Expected points for Fault vertices
   static const int _verticesLagrange[]; ///< Expected points for Lagrange vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestCellGeometry.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestCellGeometry.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestCellGeometry.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -21,7 +21,7 @@
 #include "TestCellGeometry.hh" // Implementation of class methods
 
 #include "pylith/feassemble/CellGeometry.hh" // USES CellGeometry
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "data/CellGeomData.hh" // USES CellGeomData
 
@@ -51,16 +51,16 @@
 void
 pylith::feassemble::TestCellGeometry::testOrient0D(void)
 { // testOrient0D
-  double_array jacobian;
-  double jacobianDet;
-  double_array upDir;
-  double_array orientation(1);
+  scalar_array jacobian;
+  PylithScalar jacobianDet;
+  scalar_array upDir;
+  scalar_array orientation(1);
   
   CellGeometry::_orient0D(&orientation, jacobian, jacobianDet, upDir);
 
   const int size = orientation.size();
   CPPUNIT_ASSERT_EQUAL(1, size);
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, orientation[i], tolerance);
 } // testOrient0D
@@ -74,27 +74,27 @@
   const int spaceDim = 2;
   const int orientSize = 4;
 
-  const double jacobianVals[] = {
+  const PylithScalar jacobianVals[] = {
     -1.0, 2.0,
     -0.5, 1.0
   };
-  const double orientationE[] = {
+  const PylithScalar orientationE[] = {
     -1.0,  2.0,  2.0, 1.0,
     -0.5,  1.0,  1.0, 0.5
   };
 
   const int jacobianSize = spaceDim*(spaceDim-1);
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
-    double_array jacobian(&jacobianVals[iLoc*jacobianSize], jacobianSize);
-    double jacobianDet;
-    double_array upDir;
-    double_array orientation(orientSize);
+    scalar_array jacobian(&jacobianVals[iLoc*jacobianSize], jacobianSize);
+    PylithScalar jacobianDet;
+    scalar_array upDir;
+    scalar_array orientation(orientSize);
 
     CellGeometry::_orient1D(&orientation, jacobian, jacobianDet, upDir);
 
     const int size = orientation.size();
     CPPUNIT_ASSERT_EQUAL(orientSize, size);
-    const double tolerance = 1.0e-6;
+    const PylithScalar tolerance = 1.0e-6;
     for (int i=0; i < size; ++i)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(orientationE[iLoc*orientSize+i],
 				   orientation[i], tolerance);
@@ -110,7 +110,7 @@
   const int spaceDim = 3;
   const int orientSize = 9;
 
-  const double jacobianVals[] = {
+  const PylithScalar jacobianVals[] = {
     2.0,  -0.5,
     1.0,  -0.2,
     0.5,   2.0,
@@ -119,11 +119,11 @@
     -3.0, -0.2,
     -0.3,  0.3,
   };
-  const double jacobianDetVals[] = {
+  const PylithScalar jacobianDetVals[] = {
     1.3, 0.7
   };
-  const double upDirVals[] = { 0.0, 0.0, 1.0 };
-  const double orientationE[] = {
+  const PylithScalar upDirVals[] = { 0.0, 0.0, 1.0 };
+  const PylithScalar orientationE[] = {
     1.1654847299258313, 0.57588657243394026, 0.0, 
     -0.012145479112634533, 0.024580136299379406, 1.2997108540889502, 
     0.57575848378190342, -1.1652255028919474, 0.027417070656281111,
@@ -133,18 +133,18 @@
     -0.10698846644884991, -0.033433895765265592, 0.69096717914882233
   };
 
-  double_array upDir(upDirVals, 3);
+  scalar_array upDir(upDirVals, 3);
   const int jacobianSize = spaceDim*(spaceDim-1);
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
-    double_array jacobian(&jacobianVals[iLoc*jacobianSize], jacobianSize);
-    double jacobianDet = jacobianDetVals[iLoc];
-    double_array orientation(orientSize);
+    scalar_array jacobian(&jacobianVals[iLoc*jacobianSize], jacobianSize);
+    PylithScalar jacobianDet = jacobianDetVals[iLoc];
+    scalar_array orientation(orientSize);
 
     CellGeometry::_orient2D(&orientation, jacobian, jacobianDet, upDir);
 
     const int size = orientation.size();
     CPPUNIT_ASSERT_EQUAL(orientSize, size);
-    const double tolerance = 1.0e-6;
+    const PylithScalar tolerance = 1.0e-6;
     for (int i=0; i < size; ++i)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(orientationE[iLoc*orientSize+i],
 				   orientation[i], tolerance);
@@ -239,17 +239,17 @@
   CPPUNIT_ASSERT_EQUAL(spaceDim, _object->spaceDim());
   CPPUNIT_ASSERT_EQUAL(numCorners, _object->numCorners());
 
-  double_array jacobian(cellDim*spaceDim);
-  double det = 0;
+  scalar_array jacobian(cellDim*spaceDim);
+  PylithScalar det = 0;
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
-    double_array vertices(_data->vertices, numCorners*spaceDim);
-    double_array location(&_data->locations[iLoc*cellDim], cellDim);
+    scalar_array vertices(_data->vertices, numCorners*spaceDim);
+    scalar_array location(&_data->locations[iLoc*cellDim], cellDim);
 
     _object->jacobian(&jacobian, &det, vertices, location);
 
     const int size = jacobian.size();
     const int index = iLoc*cellDim*spaceDim;
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < size; ++i)
       if (_data->jacobian[index+i] < 1.0)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->jacobian[index+i], jacobian[i],

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -30,6 +30,8 @@
 #include "pylith/topology/SolutionFields.hh" // USES SolutionFields
 #include "pylith/topology/Jacobian.hh" // USES Jacobian
 
+#include "pylith/utils/constdefs.h" // USES MAXSCALAR
+
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
@@ -84,7 +86,7 @@
 { // testTimeStep
   ElasticityExplicit integrator;
 
-  const double dt1 = 2.0;
+  const PylithScalar dt1 = 2.0;
   integrator.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, integrator._dt);
   integrator.timeStep(dt1);
@@ -99,7 +101,7 @@
 { // testNormViscosity
   ElasticityExplicit integrator;
 
-  const double viscosity = 1.234;
+  const PylithScalar viscosity = 1.234;
   integrator.normViscosity(viscosity);
   CPPUNIT_ASSERT_EQUAL(viscosity, integrator._normViscosity);
 } // testTimeStep
@@ -120,7 +122,7 @@
   CPPUNIT_ASSERT_EQUAL(id, integrator._material->id());
   CPPUNIT_ASSERT_EQUAL(label, std::string(integrator._material->label()));
   CPPUNIT_ASSERT_EQUAL(integrator._dt, integrator._material->timeStep());
-  const double dt = 2.0;
+  const PylithScalar dt = 2.0;
   integrator.timeStep(dt);
   CPPUNIT_ASSERT_EQUAL(dt, integrator._material->timeStep());
 } // testMaterial
@@ -188,15 +190,15 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
-  const double* valsE = _data->valsResidual;
+  const PylithScalar* valsE = _data->valsResidual;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
@@ -207,7 +209,7 @@
     std::cout << "  " << valsE[i] << std::endl;
 #endif
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 4.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -228,15 +230,15 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidualLumped(residual, t, &fields);
 
-  const double* valsE = _data->valsResidualLumped;
+  const PylithScalar* valsE = _data->valsResidualLumped;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
@@ -247,7 +249,7 @@
     std::cout << "  " << valsE[i] << std::endl;
 #endif
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 4.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -270,12 +272,12 @@
 
   topology::Jacobian jacobian(fields.solution());
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.assemble("final_assembly");
 
-  const double* valsE = _data->valsJacobian;
+  const PylithScalar* valsE = _data->valsJacobian;
   const int nrowsE = _data->numVertices * _data->spaceDim;
   const int ncolsE = _data->numVertices * _data->spaceDim;
 
@@ -292,7 +294,7 @@
   MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
   MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -300,7 +302,7 @@
   for (int iCol=0; iCol < ncols; ++iCol)
     cols[iCol] = iCol;
   MatGetValues(jDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int index = ncols*iRow+iCol;
@@ -332,12 +334,12 @@
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   jacobian.allocate();
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.complete();
 
-  const double* valsE = _data->valsJacobianLumped;
+  const PylithScalar* valsE = _data->valsJacobianLumped;
 
 #if 0 // DEBUGGING
   // TEMPORARY
@@ -353,12 +355,12 @@
 
   const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
   CPPUNIT_ASSERT(!jacobianSection.isNull());
-  const double* vals = jacobianSection->restrictSpace();
+  const PylithScalar* vals = jacobianSection->restrictSpace();
   const int size = jacobianSection->sizeWithBC();
   const int sizeE = _data->numVertices * _data->spaceDim;
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -378,7 +380,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.updateStateVars(t, &fields);
 } // testUpdateStateVars
 
@@ -392,8 +394,8 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double stableTimeStep = integrator.stableTimeStep(mesh);
-  CPPUNIT_ASSERT_EQUAL(1.0e+30, stableTimeStep);
+  const PylithScalar stableTimeStep = integrator.stableTimeStep(mesh);
+  CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXSCALAR, stableTimeStep);
 } // testStableTimeStep
 
 // ----------------------------------------------------------------------
@@ -411,7 +413,7 @@
   CPPUNIT_ASSERT(0 != _material);
 
   const int spaceDim = _data->spaceDim;
-  const double dt = _data->dt;
+  const PylithScalar dt = _data->dt;
 
   // Setup mesh
   mesh->createSieveMesh(_data->cellDim);
@@ -516,8 +518,8 @@
   CPPUNIT_ASSERT(!velSection.isNull());
   CPPUNIT_ASSERT(!accSection.isNull());
 
-  double_array velVertex(spaceDim);
-  double_array accVertex(spaceDim);
+  scalar_array velVertex(spaceDim);
+  scalar_array accVertex(spaceDim);
 
 
   const int offset = _data->numCells;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,7 +32,7 @@
 #include "pylith/feassemble/feassemblefwd.hh" // forward declarations
 #include "pylith/topology/topologyfwd.hh" // USES Mesh, SolutionFields
 #include "pylith/materials/materialsfwd.hh" // USES ElasticMaterial
-#include "pylith/utils/arrayfwd.hh" // USES double_array
+#include "pylith/utils/arrayfwd.hh" // USES scalar_array
 
 #include "spatialdata/spatialdb/spatialdbfwd.hh" // USES GravityField
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryLine1D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { -1.0, 0.0, 0.0};
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { -1.0, 0.0, 0.0};
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryLine1D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { -1.0, 0.0, 0.0};
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { -1.0, 0.0, 0.0};
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryTri2D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { 0.0, -1.0, 0.0 };
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { 0.0, -1.0, 0.0 };
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryTri2D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { 0.0, -1.0, 0.0 };
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { 0.0, -1.0, 0.0 };
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   GeometryTet3D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
+  const PylithScalar g = 1.0e8;
   _gravityField->gravAcceleration(g);
 
   _material = new materials::ElasticIsotropic3D;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   GeometryTet3D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
+  const PylithScalar g = 1.0e8;
   _gravityField->gravAcceleration(g);
 
   _material = new materials::ElasticIsotropic3D;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,6 @@
 #include "pylith/feassemble/ElasticityExplicitLgDeform.hh" // USES ElasticityExplicitLgDeform
 #include "data/ElasticityExplicitData.hh" // USES ElasticityExplicitData
 
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 #include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/Mesh.hh" // USES Mesh
@@ -103,10 +102,10 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
-  const double* valsE = _data->valsResidual;
+  const PylithScalar* valsE = _data->valsResidual;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
 #if 0 // DEBUGGING
@@ -118,11 +117,11 @@
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-04;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -143,15 +142,15 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidualLumped(residual, t, &fields);
 
-  const double* valsE = _data->valsResidualLumped;
+  const PylithScalar* valsE = _data->valsResidualLumped;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
@@ -162,7 +161,7 @@
     std::cout << "  " << valsE[i] << std::endl;
 #endif
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-04;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -185,12 +184,12 @@
 
   topology::Jacobian jacobian(fields.solution());
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.assemble("final_assembly");
 
-  const double* valsE = _data->valsJacobian;
+  const PylithScalar* valsE = _data->valsJacobian;
   const int nrowsE = _data->numVertices * _data->spaceDim;
   const int ncolsE = _data->numVertices * _data->spaceDim;
 
@@ -207,7 +206,7 @@
   MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
   MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -215,7 +214,7 @@
   for (int iCol=0; iCol < ncols; ++iCol)
     cols[iCol] = iCol;
   MatGetValues(jDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int index = ncols*iRow+iCol;
@@ -247,12 +246,12 @@
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   jacobian.allocate();
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.complete();
 
-  const double* valsE = _data->valsJacobianLumped;
+  const PylithScalar* valsE = _data->valsJacobianLumped;
 
 #if 0 // DEBUGGING
   // TEMPORARY
@@ -268,12 +267,12 @@
 
   const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
   CPPUNIT_ASSERT(!jacobianSection.isNull());
-  const double* vals = jacobianSection->restrictSpace();
+  const PylithScalar* vals = jacobianSection->restrictSpace();
   const int size = jacobianSection->sizeWithBC();
   const int sizeE = _data->numVertices * _data->spaceDim;
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -293,7 +292,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.updateStateVars(t, &fields);
 } // testUpdateStateVars
 
@@ -312,7 +311,7 @@
   CPPUNIT_ASSERT(0 != _material);
 
   const int spaceDim = _data->spaceDim;
-  const double dt = _data->dt;
+  const PylithScalar dt = _data->dt;
 
   // Setup mesh
   spatialdata::geocoords::CSCart cs;
@@ -416,8 +415,8 @@
   CPPUNIT_ASSERT(!velSection.isNull());
   CPPUNIT_ASSERT(!accSection.isNull());
 
-  double_array velVertex(spaceDim);
-  double_array accVertex(spaceDim);
+  scalar_array velVertex(spaceDim);
+  scalar_array accVertex(spaceDim);
 
   const int offset = _data->numCells;
   for (int iVertex=0; iVertex < _data->numVertices; ++iVertex) {

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryLine1D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { -1.0, 0.0, 0.0};
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { -1.0, 0.0, 0.0};
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryLine1D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { -1.0, 0.0, 0.0};
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { -1.0, 0.0, 0.0};
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryTri2D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { 0.0, -1.0, 0.0 };
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { 0.0, -1.0, 0.0 };
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryTri2D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { 0.0, -1.0, 0.0 };
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { 0.0, -1.0, 0.0 };
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   GeometryTet3D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
+  const PylithScalar g = 1.0e8;
   _gravityField->gravAcceleration(g);
 
   _material = new materials::ElasticIsotropic3D;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   GeometryTet3D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
+  const PylithScalar g = 1.0e8;
   _gravityField->gravAcceleration(g);
 
   _material = new materials::ElasticIsotropic3D;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -93,7 +93,7 @@
 { // testTimeStep
   ElasticityExplicitTet4 integrator;
 
-  const double dt1 = 2.0;
+  const PylithScalar dt1 = 2.0;
   integrator.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, integrator._dt);
   integrator.timeStep(dt1);
@@ -117,7 +117,7 @@
   CPPUNIT_ASSERT_EQUAL(id, integrator._material->id());
   CPPUNIT_ASSERT_EQUAL(label, std::string(integrator._material->label()));
   CPPUNIT_ASSERT_EQUAL(integrator._dt, integrator._material->timeStep());
-  const double dt = 2.0;
+  const PylithScalar dt = 2.0;
   integrator.timeStep(dt);
   CPPUNIT_ASSERT_EQUAL(dt, integrator._material->timeStep());
 } // testMaterial
@@ -185,15 +185,15 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
-  const double* valsE = _data->valsResidual;
+  const PylithScalar* valsE = _data->valsResidual;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
@@ -204,7 +204,7 @@
     std::cout << "  " << valsE[i] << std::endl;
 #endif // DEBUGGING
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -225,15 +225,15 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidualLumped(residual, t, &fields);
 
-  const double* valsE = _data->valsResidualLumped;
+  const PylithScalar* valsE = _data->valsResidualLumped;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
@@ -244,7 +244,7 @@
     std::cout << "  " << valsE[i] << std::endl;
 #endif // DEBUGGING
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -267,12 +267,12 @@
 
   topology::Jacobian jacobian(fields.solution());
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.assemble("final_assembly");
 
-  const double* valsE = _data->valsJacobian;
+  const PylithScalar* valsE = _data->valsJacobian;
   const int nrowsE = _data->numVertices * _data->spaceDim;
   const int ncolsE = _data->numVertices * _data->spaceDim;
 
@@ -289,7 +289,7 @@
   MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
   MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -297,7 +297,7 @@
   for (int iCol=0; iCol < ncols; ++iCol)
     cols[iCol] = iCol;
   MatGetValues(jDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int index = ncols*iRow+iCol;
@@ -329,20 +329,20 @@
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   jacobian.allocate();
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.complete();
 
-  const double* valsMatrixE = _data->valsJacobian;
+  const PylithScalar* valsMatrixE = _data->valsJacobian;
   const int sizeE = _data->numVertices * _data->spaceDim;
-  double_array valsE(sizeE);
+  scalar_array valsE(sizeE);
   const int spaceDim = _data->spaceDim;
   const int numBasis = _data->numVertices;
   for (int iBasis=0; iBasis < numBasis; ++iBasis)
     for (int iDim=0; iDim < spaceDim; ++iDim) {
       const int indexRow = (iBasis*spaceDim+iDim)*numBasis*spaceDim;
-      double value = 0.0;
+      PylithScalar value = 0.0;
       for (int jBasis=0; jBasis < numBasis; ++jBasis)
 	value += valsMatrixE[indexRow + jBasis*spaceDim+iDim];
       valsE[iBasis*spaceDim+iDim] = value;
@@ -358,11 +358,11 @@
 
   const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
   CPPUNIT_ASSERT(!jacobianSection.isNull());
-  const double* vals = jacobianSection->restrictSpace();
+  const PylithScalar* vals = jacobianSection->restrictSpace();
   const int size = jacobianSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -382,7 +382,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.updateStateVars(t, &fields);
 } // testUpdateStateVars
 
@@ -396,8 +396,8 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double stableTimeStep = integrator.stableTimeStep(mesh);
-  CPPUNIT_ASSERT_EQUAL(1.0e+30, stableTimeStep);
+  const PylithScalar stableTimeStep = integrator.stableTimeStep(mesh);
+  CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXSCALAR, stableTimeStep);
 } // testStableTimeStep
 
 // ----------------------------------------------------------------------
@@ -415,7 +415,7 @@
   CPPUNIT_ASSERT(0 != _material);
 
   const int spaceDim = _data->spaceDim;
-  const double dt = _data->dt;
+  const PylithScalar dt = _data->dt;
 
   // Setup mesh
   mesh->createSieveMesh(_data->cellDim);
@@ -523,8 +523,8 @@
   CPPUNIT_ASSERT(!velSection.isNull());
   CPPUNIT_ASSERT(!accSection.isNull());
 
-  double_array velVertex(spaceDim);
-  double_array accVertex(spaceDim);
+  scalar_array velVertex(spaceDim);
+  scalar_array accVertex(spaceDim);
 
   const int offset = _data->numCells;
   for (int iVertex=0; iVertex < _data->numVertices; ++iVertex) {

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -93,7 +93,7 @@
 { // testTimeStep
   ElasticityExplicitTri3 integrator;
 
-  const double dt1 = 2.0;
+  const PylithScalar dt1 = 2.0;
   integrator.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, integrator._dt);
   integrator.timeStep(dt1);
@@ -117,7 +117,7 @@
   CPPUNIT_ASSERT_EQUAL(id, integrator._material->id());
   CPPUNIT_ASSERT_EQUAL(label, std::string(integrator._material->label()));
   CPPUNIT_ASSERT_EQUAL(integrator._dt, integrator._material->timeStep());
-  const double dt = 2.0;
+  const PylithScalar dt = 2.0;
   integrator.timeStep(dt);
   CPPUNIT_ASSERT_EQUAL(dt, integrator._material->timeStep());
 } // testMaterial
@@ -185,15 +185,15 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
-  const double* valsE = _data->valsResidual;
+  const PylithScalar* valsE = _data->valsResidual;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
@@ -204,7 +204,7 @@
     std::cout << "  " << valsE[i] << std::endl;
 #endif // DEBUGGING
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -225,15 +225,15 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidualLumped(residual, t, &fields);
 
-  const double* valsE = _data->valsResidualLumped;
+  const PylithScalar* valsE = _data->valsResidualLumped;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
@@ -244,7 +244,7 @@
     std::cout << "  " << valsE[i] << std::endl;
 #endif // DEBUGGING
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -267,12 +267,12 @@
 
   topology::Jacobian jacobian(fields.solution());
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.assemble("final_assembly");
 
-  const double* valsE = _data->valsJacobian;
+  const PylithScalar* valsE = _data->valsJacobian;
   const int nrowsE = _data->numVertices * _data->spaceDim;
   const int ncolsE = _data->numVertices * _data->spaceDim;
 
@@ -289,7 +289,7 @@
   MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
   MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -297,7 +297,7 @@
   for (int iCol=0; iCol < ncols; ++iCol)
     cols[iCol] = iCol;
   MatGetValues(jDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int index = ncols*iRow+iCol;
@@ -329,20 +329,20 @@
   jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
   jacobian.allocate();
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.complete();
 
-  const double* valsMatrixE = _data->valsJacobian;
+  const PylithScalar* valsMatrixE = _data->valsJacobian;
   const int sizeE = _data->numVertices * _data->spaceDim;
-  double_array valsE(sizeE);
+  scalar_array valsE(sizeE);
   const int spaceDim = _data->spaceDim;
   const int numBasis = _data->numVertices;
   for (int iBasis=0; iBasis < numBasis; ++iBasis)
     for (int iDim=0; iDim < spaceDim; ++iDim) {
       const int indexRow = (iBasis*spaceDim+iDim)*numBasis*spaceDim;
-      double value = 0.0;
+      PylithScalar value = 0.0;
       for (int jBasis=0; jBasis < numBasis; ++jBasis)
 	value += valsMatrixE[indexRow + jBasis*spaceDim+iDim];
       valsE[iBasis*spaceDim+iDim] = value;
@@ -358,11 +358,11 @@
 
   const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
   CPPUNIT_ASSERT(!jacobianSection.isNull());
-  const double* vals = jacobianSection->restrictSpace();
+  const PylithScalar* vals = jacobianSection->restrictSpace();
   const int size = jacobianSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -382,7 +382,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.updateStateVars(t, &fields);
 } // testUpdateStateVars
 
@@ -396,8 +396,8 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double stableTimeStep = integrator.stableTimeStep(mesh);
-  CPPUNIT_ASSERT_EQUAL(1.0e+30, stableTimeStep);
+  const PylithScalar stableTimeStep = integrator.stableTimeStep(mesh);
+  CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXSCALAR, stableTimeStep);
 } // testStableTimeStep
 
 // ----------------------------------------------------------------------
@@ -415,7 +415,7 @@
   CPPUNIT_ASSERT(0 != _material);
 
   const int spaceDim = _data->spaceDim;
-  const double dt = _data->dt;
+  const PylithScalar dt = _data->dt;
 
   // Setup mesh
   mesh->createSieveMesh(_data->cellDim);
@@ -523,8 +523,8 @@
   CPPUNIT_ASSERT(!velSection.isNull());
   CPPUNIT_ASSERT(!accSection.isNull());
 
-  double_array velVertex(spaceDim);
-  double_array accVertex(spaceDim);
+  scalar_array velVertex(spaceDim);
+  scalar_array accVertex(spaceDim);
 
   const int offset = _data->numCells;
   for (int iVertex=0; iVertex < _data->numVertices; ++iVertex) {

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "pylith/feassemble/ElasticityImplicit.hh" // USES ElasticityImplicit
 #include "data/IntegratorData.hh" // USES IntegratorData
 
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
+#include "pylith/utils/constdefs.h" // USES MAXSCALAR
 #include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/Mesh.hh" // USES Mesh
@@ -83,7 +83,7 @@
 { // testTimeStep
   ElasticityImplicit integrator;
 
-  const double dt1 = 2.0;
+  const PylithScalar dt1 = 2.0;
   integrator.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, integrator._dt);
   integrator.timeStep(dt1);
@@ -107,7 +107,7 @@
   CPPUNIT_ASSERT_EQUAL(id, integrator._material->id());
   CPPUNIT_ASSERT_EQUAL(label, std::string(integrator._material->label()));
   CPPUNIT_ASSERT_EQUAL(integrator._dt, integrator._material->timeStep());
-  const double dt = 2.0;
+  const PylithScalar dt = 2.0;
   integrator.timeStep(dt);
   CPPUNIT_ASSERT_EQUAL(dt, integrator._material->timeStep());
 } // testMaterial
@@ -167,19 +167,19 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
-  const double* valsE = _data->valsResidual;
+  const PylithScalar* valsE = _data->valsResidual;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 4.0e-05;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -202,14 +202,14 @@
 
   topology::Jacobian jacobian(fields.solution());
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   //mesh->getSieve()->setDebug(10);
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   //mesh->getSieve()->setDebug(0);
   jacobian.assemble("final_assembly");
 
-  const double* valsE = _data->valsJacobian;
+  const PylithScalar* valsE = _data->valsJacobian;
   const int nrowsE = _data->numVertices * _data->spaceDim;
   const int ncolsE = _data->numVertices * _data->spaceDim;
 
@@ -226,7 +226,7 @@
   MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
   MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -234,7 +234,7 @@
   for (int iCol=0; iCol < ncols; ++iCol)
     cols[iCol] = iCol;
   MatGetValues(jDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-04;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int index = ncols*iRow+iCol;
@@ -259,7 +259,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.updateStateVars(t, &fields);
 } // testUpdateStateVars
 
@@ -274,8 +274,8 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double stableTimeStep = integrator.stableTimeStep(mesh);
-  CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXDOUBLE, stableTimeStep);
+  const PylithScalar stableTimeStep = integrator.stableTimeStep(mesh);
+  CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXSCALAR, stableTimeStep);
 } // testStableTimeStep
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryLine1D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { -1.0, 0.0, 0.0};
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { -1.0, 0.0, 0.0};
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryLine1D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { -1.0, 0.0, 0.0};
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { -1.0, 0.0, 0.0};
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryTri2D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { 0.0, -1.0, 0.0 };
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { 0.0, -1.0, 0.0 };
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryTri2D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { 0.0, -1.0, 0.0 };
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { 0.0, -1.0, 0.0 };
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   GeometryTet3D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
+  const PylithScalar g = 1.0e8;
   _gravityField->gravAcceleration(g);
 
   _material = new materials::ElasticIsotropic3D;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitGrav3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   GeometryTet3D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
+  const PylithScalar g = 1.0e8;
   _gravityField->gravAcceleration(g);
 
   _material = new materials::ElasticIsotropic3D;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,6 @@
 #include "pylith/feassemble/ElasticityImplicitLgDeform.hh" // USES ElasticityImplicitLgDeform
 #include "data/IntegratorData.hh" // USES IntegratorData
 
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 #include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/topology/Mesh.hh" // USES Mesh
@@ -103,10 +102,10 @@
   _initialize(&mesh, &integrator, &fields);
 
   topology::Field<topology::Mesh>& residual = fields.get("residual");
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateResidual(residual, t, &fields);
 
-  const double* valsE = _data->valsResidual;
+  const PylithScalar* valsE = _data->valsResidual;
   const int sizeE = _data->spaceDim * _data->numVertices;
 
 #if 0 // DEBUGGING
@@ -118,11 +117,11 @@
 
   const ALE::Obj<RealSection>& residualSection = residual.section();
   CPPUNIT_ASSERT(!residualSection.isNull());
-  const double* vals = residualSection->restrictSpace();
+  const PylithScalar* vals = residualSection->restrictSpace();
   const int size = residualSection->sizeWithBC();
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-04;
   for (int i=0; i < size; ++i)
     if (fabs(valsE[i]) > 1.0)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
@@ -145,12 +144,12 @@
 
   topology::Jacobian jacobian(fields.solution());
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.integrateJacobian(&jacobian, t, &fields);
   CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
   jacobian.assemble("final_assembly");
 
-  const double* valsE = _data->valsJacobian;
+  const PylithScalar* valsE = _data->valsJacobian;
   const int nrowsE = _data->numVertices * _data->spaceDim;
   const int ncolsE = _data->numVertices * _data->spaceDim;
 
@@ -167,7 +166,7 @@
   MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
   MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
 
-  double_array vals(nrows*ncols);
+  scalar_array vals(nrows*ncols);
   int_array rows(nrows);
   int_array cols(ncols);
   for (int iRow=0; iRow < nrows; ++iRow)
@@ -175,7 +174,7 @@
   for (int iCol=0; iCol < ncols; ++iCol)
     cols[iCol] = iCol;
   MatGetValues(jDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-04;
   for (int iRow=0; iRow < nrows; ++iRow)
     for (int iCol=0; iCol < ncols; ++iCol) {
       const int index = ncols*iRow+iCol;
@@ -200,7 +199,7 @@
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const double t = 1.0;
+  const PylithScalar t = 1.0;
   integrator.updateStateVars(t, &fields);
 } // testUpdateStateVars
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryLine1D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { -1.0, 0.0, 0.0};
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { -1.0, 0.0, 0.0};
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryLine1D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { -1.0, 0.0, 0.0};
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { -1.0, 0.0, 0.0};
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryTri2D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { 0.0, -1.0, 0.0 };
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { 0.0, -1.0, 0.0 };
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,8 +45,8 @@
   GeometryTri2D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
-  const double gravityDir[] = { 0.0, -1.0, 0.0 };
+  const PylithScalar g = 1.0e8;
+  const PylithScalar gravityDir[] = { 0.0, -1.0, 0.0 };
   _gravityField->gravAcceleration(g);
   _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   GeometryTet3D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
+  const PylithScalar g = 1.0e8;
   _gravityField->gravAcceleration(g);
 
   _material = new materials::ElasticIsotropic3D;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   GeometryTet3D geometry;
   _quadrature->refGeometry(&geometry);
 
-  const double g = 1.0e8;
+  const PylithScalar g = 1.0e8;
   _gravityField->gravAcceleration(g);
 
   _material = new materials::ElasticIsotropic3D;

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/feassemble/GeometryPoint1D.hh"
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "data/GeomDataPoint1D.hh"
 
@@ -75,15 +75,15 @@
   CPPUNIT_ASSERT_EQUAL(spaceDim, geometry.spaceDim());
   CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
 
-  double_array jacobian(1);
-  double det = 0.0;
+  scalar_array jacobian(1);
+  PylithScalar det = 0.0;
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
-    double_array vertices(data.vertices, numCorners*spaceDim);
-    double_array location(&data.locations[iLoc], 1);
+    scalar_array vertices(data.vertices, numCorners*spaceDim);
+    scalar_array location(&data.locations[iLoc], 1);
 
     geometry.jacobian(&jacobian, &det, vertices, location);
-    CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
-    CPPUNIT_ASSERT_EQUAL(1.0, det);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), jacobian[0]);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), det);
   } //for
 } // testJacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/feassemble/GeometryPoint2D.hh"
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "data/GeomDataPoint2D.hh"
 
@@ -75,15 +75,15 @@
   CPPUNIT_ASSERT_EQUAL(spaceDim, geometry.spaceDim());
   CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
 
-  double_array jacobian(1);
-  double det = 0.0;
+  scalar_array jacobian(1);
+  PylithScalar det = 0.0;
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
-    double_array vertices(data.vertices, numCorners*spaceDim);
-    double_array location(&data.locations[iLoc], 1);
+    scalar_array vertices(data.vertices, numCorners*spaceDim);
+    scalar_array location(&data.locations[iLoc], 1);
 
     geometry.jacobian(&jacobian, &det, vertices, location);
-    CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
-    CPPUNIT_ASSERT_EQUAL(1.0, det);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), jacobian[0]);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), det);
   } //for
 } // testJacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/feassemble/GeometryPoint3D.hh"
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "data/GeomDataPoint3D.hh"
 
@@ -75,15 +75,15 @@
   CPPUNIT_ASSERT_EQUAL(spaceDim, geometry.spaceDim());
   CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
 
-  double_array jacobian(1);
-  double det = 0.0;
+  scalar_array jacobian(1);
+  PylithScalar det = 0.0;
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
-    double_array vertices(data.vertices, numCorners*spaceDim);
-    double_array location(&data.locations[iLoc], 1);
+    scalar_array vertices(data.vertices, numCorners*spaceDim);
+    scalar_array location(&data.locations[iLoc], 1);
 
     geometry.jacobian(&jacobian, &det, vertices, location);
-    CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
-    CPPUNIT_ASSERT_EQUAL(1.0, det);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), jacobian[0]);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), det);
   } //for
 } // testJacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 #include "pylith/feassemble/ElasticityImplicit.hh" // USES ElasticityImplicit
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
+#include "pylith/utils/constdefs.h" // USES MAXSCALAR
 
 #include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
 
@@ -37,7 +37,7 @@
 pylith::feassemble::TestIntegrator::testTimeStep(void)
 { // testTimeStep
   ElasticityExplicit integrator;
-  const double dt = 1.2;
+  const PylithScalar dt = 1.2;
   integrator.timeStep(dt);
 
   CPPUNIT_ASSERT_EQUAL(dt, integrator._dt);
@@ -51,7 +51,8 @@
   ElasticityExplicit integrator;
   topology::Mesh mesh;
 
-  CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXDOUBLE, integrator.stableTimeStep(mesh));
+  CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXSCALAR,
+		       integrator.stableTimeStep(mesh));
 } // testStableTimeStep
 
 // ----------------------------------------------------------------------
@@ -76,7 +77,7 @@
   // value of minJacobian
 
   Quadrature<topology::Mesh> quadrature;
-  const double minJacobian = 4.0;
+  const PylithScalar minJacobian = 4.0;
   quadrature.minJacobian(minJacobian);
   
   ElasticityExplicit integrator;
@@ -132,7 +133,7 @@
     quadrature.spaceDim() * quadrature.numBasis();
   CPPUNIT_ASSERT_EQUAL(size, integrator._cellVector.size());
   for (size_t i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(0.0, integrator._cellVector[i]);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(0.0), integrator._cellVector[i]);
 } // testInitCellVector
 
 // ----------------------------------------------------------------------
@@ -155,7 +156,7 @@
     integrator._cellVector[i] = 1.4+2*i;
   integrator._resetCellVector();
   for (size_t i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(0.0, integrator._cellVector[i]);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(0.0), integrator._cellVector[i]);
 } // testResetCellVector
 
 // ----------------------------------------------------------------------
@@ -176,7 +177,7 @@
     quadrature.spaceDim() * quadrature.numBasis();
   CPPUNIT_ASSERT_EQUAL(size, integrator._cellMatrix.size());
   for (size_t i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(0.0, integrator._cellMatrix[i]);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(0.0), integrator._cellMatrix[i]);
 } // testInitCellMatrix
 
 // ----------------------------------------------------------------------
@@ -200,7 +201,7 @@
     integrator._cellMatrix[i] = 1.23 + 1.2*i;
   integrator._resetCellMatrix();
   for (size_t i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(0.0, integrator._cellMatrix[i]);
+    CPPUNIT_ASSERT_EQUAL(PylithScalar(0.0), integrator._cellMatrix[i]);
 } // testResetCellMatrix
 
 // ----------------------------------------------------------------------
@@ -225,12 +226,12 @@
     integrator._cellMatrix[i] = 1.23 + 1.2*i;
   integrator._lumpCellMatrix();
 
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   const int numBasis = quadrature.numBasis();
   const int spaceDim = quadrature.spaceDim();
   for (int iBasis=0; iBasis < numBasis; ++iBasis)
     for (int iDim=0; iDim < spaceDim; ++iDim) {
-      double value = 0;
+      PylithScalar value = 0;
       const int index = (iBasis*spaceDim+iDim)*numBasis*spaceDim;
       for (int jBasis=0; jBasis < numBasis; ++jBasis)
 	value += 1.23 + 1.2*(index+jBasis*spaceDim+iDim);
@@ -264,11 +265,11 @@
   const int numBasis = 2;
   const int numQuadPts = 1;
   const int spaceDim = 1;
-  const double basis[] = { 0.5, 0.5 };
-  const double basisDeriv[] = { -0.5, 0.5 };
-  const double quadPtsRef[] = { 0.0 };
-  const double quadWts[] = { 2.0 };
-  const double minJacobian = 1.0;
+  const PylithScalar basis[] = { 0.5, 0.5 };
+  const PylithScalar basisDeriv[] = { -0.5, 0.5 };
+  const PylithScalar quadPtsRef[] = { 0.0 };
+  const PylithScalar quadWts[] = { 2.0 };
+  const PylithScalar minJacobian = 1.0;
 
   quadrature->initialize(basis, numQuadPts, numBasis,
 			 basisDeriv, numQuadPts, numBasis, cellDim,

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticity.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticity.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticity.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,25 +41,25 @@
   const int dim = 1;
   const int numBasis = 2;
   const int numQuadPts = 2;
-  const double basisDerivVals[] = {
+  const PylithScalar basisDerivVals[] = {
     -0.50, 0.50,
     -0.25, 0.25 };
   const int tensorSize = 1;
 
   // Let u(x) = 1 + 0.5 * x
-  const double dispVals[] = { 0.5, 1.5 };
-  const double strainE[] = { 0.5, 0.25 };
+  const PylithScalar dispVals[] = { 0.5, 1.5 };
+  const PylithScalar strainE[] = { 0.5, 0.25 };
 
   const int size = numQuadPts * tensorSize;
-  double_array strain(size);
+  scalar_array strain(size);
 
-  double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
-  double_array disp(dispVals, numBasis*dim);
+  scalar_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+  scalar_array disp(dispVals, numBasis*dim);
 
   IntegratorElasticity::_calcTotalStrain1D(&strain,
 					   basisDeriv, disp, numBasis, numQuadPts);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);
@@ -80,7 +80,7 @@
   const int dim = 2;
   const int numBasis = 3;
   const int numQuadPts = 2;
-  const double basisDerivVals[] = {
+  const PylithScalar basisDerivVals[] = {
     +1.0,  0.0,   0.0, +1.0,   -1.0, -1.0,
     +2.0,  0.0,   0.0, +2.0,   -2.0, -2.0
   };
@@ -88,26 +88,26 @@
 
   // Let ux(x,y) = +0.4 + 0.3*x + 0.8*y
   // Ley uy(x,y) = -2.0 + 0.5*x - 0.2*y
-  const double dispVals[] = {
+  const PylithScalar dispVals[] = {
     0.7, -1.5,
     1.2, -2.2,
     0.4, -2.0
   };
-  const double strainE[] = {
+  const PylithScalar strainE[] = {
     0.3, -0.2, 0.65,
     0.6, -0.4, 1.3
   };
 
   const int size = numQuadPts * tensorSize;
-  double_array strain(size);
+  scalar_array strain(size);
 
-  double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
-  double_array disp(dispVals, numBasis*dim);
+  scalar_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+  scalar_array disp(dispVals, numBasis*dim);
 
   IntegratorElasticity::_calcTotalStrain2D(&strain, basisDeriv, disp,
 					   numBasis, numQuadPts);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);
@@ -130,7 +130,7 @@
   const int dim = 3;
   const int numBasis = 4;
   const int numQuadPts = 2;
-  const double basisDerivVals[] = {
+  const PylithScalar basisDerivVals[] = {
     +1.0,  0.0,  0.0, // Quad pt 0
      0.0, +1.0,  0.0,
      0.0,  0.0, +1.0,
@@ -145,27 +145,27 @@
   // Let ux(x,y,z) = +0.4 + 0.3*x + 0.8*y + 0.4*z
   // Ley uy(x,y,z) = -2.0 + 0.5*x - 0.2*y + 1.2*z
   // Ley uz(x,y,z) = -1.0 + 0.2*x - 0.7*y - 0.3*z
-  const double dispVals[] = {
+  const PylithScalar dispVals[] = {
     0.7, -1.5, -0.8,
     1.2, -2.2, -1.7,
     0.8, -0.8, -1.3,
     0.4, -2.0, -1.0
   };
-  const double strainE[] = {
+  const PylithScalar strainE[] = {
     0.3, -0.2, -0.3, 0.65, 0.25, 0.3,
     0.9, -0.6, -0.9, 1.95, 0.75, 0.9
   };
 
   const int size = numQuadPts * tensorSize;
-  double_array strain(size);
+  scalar_array strain(size);
 
-  double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
-  double_array disp(dispVals, numBasis*dim);
+  scalar_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+  scalar_array disp(dispVals, numBasis*dim);
 
   IntegratorElasticity::_calcTotalStrain3D(&strain, basisDeriv, disp,
 					   numBasis, numQuadPts);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,25 +40,25 @@
   const int dim = 1;
   const int numBasis = 2;
   const int numQuadPts = 2;
-  const double verticesVals[] = { -1.0, 1.0 };
-  const double basisDerivVals[] = {
+  const PylithScalar verticesVals[] = { -1.0, 1.0 };
+  const PylithScalar basisDerivVals[] = {
     -0.50, 0.50,
     -0.50, 0.50 };
   const int tensorSize = 1;
 
   const int size = numQuadPts * dim*dim;
-  double_array deform(size);    
-  double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
-  double_array vertices(verticesVals, numBasis*dim);
+  scalar_array deform(size);    
+  scalar_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+  scalar_array vertices(verticesVals, numBasis*dim);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   { // Rigid body translation
     // u(x) = 1.0
-    const double dispVals[] = { 1.0, 1.0 };
-    const double deformE[] = { 1.0, 1.0 };
+    const PylithScalar dispVals[] = { 1.0, 1.0 };
+    const PylithScalar deformE[] = { 1.0, 1.0 };
     
-    double_array disp(dispVals, numBasis*dim);
+    scalar_array disp(dispVals, numBasis*dim);
     
     IntegratorElasticityLgDeform::_calcDeformation(&deform,
 						   basisDeriv, vertices, disp,
@@ -71,10 +71,10 @@
 
   { // Uniform strain
     // u(x) = 0.1*x
-    const double dispVals[] = { -0.1, 0.1 };
-    const double deformE[] = { 1.1, 1.1 };
+    const PylithScalar dispVals[] = { -0.1, 0.1 };
+    const PylithScalar deformE[] = { 1.1, 1.1 };
     
-    double_array disp(dispVals, numBasis*dim);
+    scalar_array disp(dispVals, numBasis*dim);
     
     IntegratorElasticityLgDeform::_calcDeformation(&deform,
 						   basisDeriv, vertices, disp,
@@ -100,38 +100,38 @@
   const int dim = 2;
   const int numBasis = 3;
   const int numQuadPts = 2;
-  const double verticesVals[] = {
+  const PylithScalar verticesVals[] = {
     1.0, 0.0,
     0.0, 1.0, 
     0.0, 0.0,
   };
-  const double basisDerivVals[] = {
+  const PylithScalar basisDerivVals[] = {
     +1.0,  0.0,   0.0, +1.0,   -1.0, -1.0,
     +1.0,  0.0,   0.0, +1.0,   -1.0, -1.0
   };
   const int tensorSize = 3;
 
   const int size = numQuadPts * dim*dim;
-  double_array deform(size);    
-  double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
-  double_array vertices(verticesVals, numBasis*dim);
+  scalar_array deform(size);    
+  scalar_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+  scalar_array vertices(verticesVals, numBasis*dim);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   { // Rigid body translation
     // ux(x,y) = 0.5
     // uy(x,y) = 0.2
-    const double dispVals[] = {
+    const PylithScalar dispVals[] = {
       0.5, 0.2,
       0.5, 0.2,
       0.5, 0.2,
     };
-    const double deformE[] = {
+    const PylithScalar deformE[] = {
       1.0, 0.0,   0.0, 1.0,
       1.0, 0.0,   0.0, 1.0,
     };
     
-    double_array disp(dispVals, numBasis*dim);
+    scalar_array disp(dispVals, numBasis*dim);
     
     IntegratorElasticityLgDeform::_calcDeformation(&deform,
 						   basisDeriv, vertices, disp,
@@ -146,9 +146,9 @@
     // ux(x,y) = 0.5 + cos(theta)*x + sin(theta)*y - x0
     // uy(x,y) = 0.2 - sin(theta)*x + cos(theta)*y - y0
     // theta = pi/6
-    const double pi = 4.0*atan(1.0);
-    const double theta = pi / 6.0;
-    const double dispVals[] = {
+    const PylithScalar pi = 4.0*atan(1.0);
+    const PylithScalar theta = pi / 6.0;
+    const PylithScalar dispVals[] = {
       0.5+cos(theta)*1.0+sin(theta)*0.0-1.0,
       0.2-sin(theta)*1.0+cos(theta)*0.0-0.0,
 
@@ -158,12 +158,12 @@
       0.5+cos(theta)*0.0+sin(theta)*0.0-0.0,
       0.2-sin(theta)*0.0+cos(theta)*0.0-0.0,
     };
-    const double deformE[] = {
+    const PylithScalar deformE[] = {
       cos(theta), sin(theta), -sin(theta), cos(theta),
       cos(theta), sin(theta), -sin(theta), cos(theta),
     };
     
-    double_array disp(dispVals, numBasis*dim);
+    scalar_array disp(dispVals, numBasis*dim);
     
     IntegratorElasticityLgDeform::_calcDeformation(&deform,
 						   basisDeriv, vertices, disp,
@@ -177,17 +177,17 @@
   { // Uniform strain
     // Let ux(x,y) = +0.4 + 0.3*x + 0.8*y
     // Ley uy(x,y) = -2.0 + 0.5*x - 0.2*y
-    const double dispVals[] = {
+    const PylithScalar dispVals[] = {
       0.7, -1.5,
       1.2, -2.2,
       0.4, -2.0
     };
-    const double deformE[] = {
+    const PylithScalar deformE[] = {
       1.3, 0.8,   0.5, 0.8,
       1.3, 0.8,   0.5, 0.8,
     };
     
-    double_array disp(dispVals, numBasis*dim);
+    scalar_array disp(dispVals, numBasis*dim);
     
     IntegratorElasticityLgDeform::_calcDeformation(&deform,
 						   basisDeriv, vertices, disp,
@@ -223,7 +223,7 @@
   const int dim = 3;
   const int numBasis = 8;
   const int numQuadPts = 1;
-  const double verticesVals[] = {
+  const PylithScalar verticesVals[] = {
     -1.0, -1.0, -1.0,
     +1.0, -1.0, -1.0,
     +1.0, +1.0, -1.0,
@@ -233,7 +233,7 @@
     +1.0, +1.0, +1.0,
     -1.0, +1.0, +1.0,
   };
-  const double basisDerivVals[] = {
+  const PylithScalar basisDerivVals[] = {
     -0.125, -0.125, -0.125,
     +0.125, -0.125, -0.125,
     +0.125, +0.125, -0.125,
@@ -246,17 +246,17 @@
   const int tensorSize = 3;
 
   const int size = numQuadPts * dim*dim;
-  double_array deform(size);    
-  double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
-  double_array vertices(verticesVals, numBasis*dim);
+  scalar_array deform(size);    
+  scalar_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+  scalar_array vertices(verticesVals, numBasis*dim);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   { // Rigid body translation
     // ux(x,y,z) = 0.5
     // uy(x,y,z) = 0.2
     // uz(x,y,z) = 0.3
-    const double dispVals[] = {
+    const PylithScalar dispVals[] = {
       0.5, 0.2, 0.3,
       0.5, 0.2, 0.3,
       0.5, 0.2, 0.3,
@@ -266,12 +266,12 @@
       0.5, 0.2, 0.3,
       0.5, 0.2, 0.3,
     };
-    const double deformE[] = {
+    const PylithScalar deformE[] = {
       1.0, 0.0, 0.0,   0.0, 1.0, 0.0,  0.0, 0.0, 1.0,
       1.0, 0.0, 0.0,   0.0, 1.0, 0.0,  0.0, 0.0, 1.0,
     };
     
-    double_array disp(dispVals, numBasis*dim);
+    scalar_array disp(dispVals, numBasis*dim);
     
     IntegratorElasticityLgDeform::_calcDeformation(&deform,
 						   basisDeriv, vertices, disp,
@@ -286,7 +286,7 @@
     // Let ux(x,y,z) = +0.4 + 0.3*x + 0.8*y - 0.2*z
     // Ley uy(x,y,z) = -2.0 + 0.5*x - 0.2*y + 0.6*z
     // Ley uz(x,y,z) = +0.7 + 0.8*x - 0.9*y - 0.1*z
-    const double dispVals[] = {
+    const PylithScalar dispVals[] = {
       +0.4+0.3*-1+0.8*-1-0.2*-1,
       -2.0+0.5*-1-0.2*-1+0.6*-1,
       +0.7+0.8*-1-0.9*-1-0.1*-1,
@@ -320,13 +320,13 @@
       +0.7+0.8*-1-0.9*+1-0.1*+1,
 
     };
-    const double deformE[] = {
+    const PylithScalar deformE[] = {
       1.3, 0.8, -0.2,
       0.5, 0.8, 0.6,
       0.8, -0.9, 0.9,
     };
     
-    double_array disp(dispVals, numBasis*dim);
+    scalar_array disp(dispVals, numBasis*dim);
     
     IntegratorElasticityLgDeform::_calcDeformation(&deform,
 						   basisDeriv, vertices, disp,
@@ -347,23 +347,23 @@
   // X = [ 2.0 ], [ 0.4 ]
   const int dim = 1;
   const int numQuadPts = 2;
-  const double deformVals[] = {
+  const PylithScalar deformVals[] = {
     2.0,  0.4,
   };
-  const double strainE[] = {
+  const PylithScalar strainE[] = {
     0.5*(2.0*2.0-1.0),  0.5*(0.4*0.4-1.0),
   };
   const int tensorSize = 1;
 
   const int size = numQuadPts * tensorSize;
-  double_array strain(size);
+  scalar_array strain(size);
 
-  double_array deform(deformVals, numQuadPts*dim*dim);
+  scalar_array deform(deformVals, numQuadPts*dim*dim);
 
   IntegratorElasticityLgDeform::_calcTotalStrain1D(&strain,
 						   deform, numQuadPts);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);
@@ -379,25 +379,25 @@
   //     [ 0.6, 1.4 ],   [ -0.9, 0.8 ]
   const int dim = 2;
   const int numQuadPts = 2;
-  const double deformVals[] = {
+  const PylithScalar deformVals[] = {
     2.0,  0.4, 0.6, 1.4,
     1.5, 0.2, -0.9, 0.8,
   };
-  const double strainE[] = {
+  const PylithScalar strainE[] = {
     1.68, 0.56, 0.82,
     1.03, -0.16, -0.21,
   };
   const int tensorSize = 3;
 
   const int size = numQuadPts * tensorSize;
-  double_array strain(size);
+  scalar_array strain(size);
 
-  double_array deform(deformVals, numQuadPts*dim*dim);
+  scalar_array deform(deformVals, numQuadPts*dim*dim);
 
   IntegratorElasticityLgDeform::_calcTotalStrain2D(&strain,
 						   deform, numQuadPts);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);
@@ -414,25 +414,25 @@
   //     [ -0.1, 0.6,  1.0 ],   [ -0.8, 0.5,  1.2 ]
   const int dim = 3;
   const int numQuadPts = 2;
-  const double deformVals[] = {
+  const PylithScalar deformVals[] = {
     2.0,  0.4, 0.3,  0.6, 1.4, -0.8,  -0.1, 0.6, 1.0,
     1.5, 0.2, -0.1,  -0.9, 0.8, 0.3,  -0.8, 0.5, 1.2,
   };
-  const double strainE[] = {
+  const PylithScalar strainE[] = {
     1.685, 0.74, 0.365, 0.79, -0.2, 0.01,
     1.35, -0.035, 0.27, -0.41, 0.41, -0.69,
   };
   const int tensorSize = 6;
 
   const int size = numQuadPts * tensorSize;
-  double_array strain(size);
+  scalar_array strain(size);
 
-  double_array deform(deformVals, numQuadPts*dim*dim);
+  scalar_array deform(deformVals, numQuadPts*dim*dim);
 
   IntegratorElasticityLgDeform::_calcTotalStrain3D(&strain,
 						   deform, numQuadPts);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,20 +41,20 @@
 pylith::feassemble::TestQuadrature::testCopyConstructor(void)
 { // testClone
   // Semi-random values manually set to check cloning
-  const double minJacobianE = 1.0;
+  const PylithScalar minJacobianE = 1.0;
   const bool checkConditioning = true;
   const int cellDimE = 1;
   const int numBasisE = 2;
   const int numQuadPtsE = 1;
   const int spaceDimE = 1;
-  const double basisE[] = { 0.2, 0.4 };
-  const double basisDerivE[] = { 0.8, 1.6 };
-  const double quadPtsRefE[] = { 3.2 };
-  const double quadWtsE[] = { 6.4 };
-  const double quadPtsE[] = { 12.8 };
-  const double jacobianE[] = { 2.56 };
-  const double jacobianInvE[] = { 5.12 };
-  const double jacobianDetE[] = { 10.24 };
+  const PylithScalar basisE[] = { 0.2, 0.4 };
+  const PylithScalar basisDerivE[] = { 0.8, 1.6 };
+  const PylithScalar quadPtsRefE[] = { 3.2 };
+  const PylithScalar quadWtsE[] = { 6.4 };
+  const PylithScalar quadPtsE[] = { 12.8 };
+  const PylithScalar jacobianE[] = { 2.56 };
+  const PylithScalar jacobianInvE[] = { 5.12 };
+  const PylithScalar jacobianDetE[] = { 10.24 };
   GeometryLine1D geometry;
 
   // Set values
@@ -80,25 +80,25 @@
   CPPUNIT_ASSERT_EQUAL(numQuadPtsE, qCopy.numQuadPts());
   CPPUNIT_ASSERT_EQUAL(spaceDimE, qCopy.spaceDim());
 
-  const double_array& basis = qCopy.basis();
+  const scalar_array& basis = qCopy.basis();
   size_t size = numBasisE * numQuadPtsE;
   CPPUNIT_ASSERT_EQUAL(size, basis.size());
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(basisE[i], basis[i]);
 
-  const double_array& basisDerivRef = qCopy._basisDerivRef;
+  const scalar_array& basisDerivRef = qCopy._basisDerivRef;
   size = numBasisE * numQuadPtsE * spaceDimE;
   CPPUNIT_ASSERT_EQUAL(size, basisDerivRef.size());
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(basisDerivE[i], basisDerivRef[i]);
 
-  const double_array& quadPtsRef = qCopy._quadPtsRef;
+  const scalar_array& quadPtsRef = qCopy._quadPtsRef;
   size = numQuadPtsE * cellDimE;
   CPPUNIT_ASSERT_EQUAL(size, quadPtsRef.size());
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(quadPtsRefE[i], quadPtsRef[i]);
 
-  const double_array& quadWts = qCopy.quadWts();
+  const scalar_array& quadWts = qCopy.quadWts();
   size = numQuadPtsE;
   CPPUNIT_ASSERT_EQUAL(size, quadWts.size());
   for (int i=0; i < size; ++i)
@@ -132,18 +132,18 @@
   const int numBasis = 5;
   const int numQuadPts = 1;
   const int spaceDim = 3;
-  const double basis[] = { 
+  const PylithScalar basis[] = { 
     1.1, 1.2, 1.3, 1.4, 1.5
   };
-  const double basisDerivRef[] = {
+  const PylithScalar basisDerivRef[] = {
     2.1, 2.2, 2.3,
     2.4, 2.5, 2.6,
     2.7, 2.8, 2.9,
     2.10, 2.11, 2.12,
     2.13, 2.14, 2.15,
   };
-  const double quadPtsRef[] = { 3.1, 3.2, 3.3 };
-  const double quadWts[] = { 4.0 };
+  const PylithScalar quadPtsRef[] = { 3.1, 3.2, 3.3 };
+  const PylithScalar quadWts[] = { 4.0 };
 
   QuadratureRefCell refCell;
   refCell.initialize(basis, numQuadPts, numBasis,
@@ -187,13 +187,13 @@
   const int spaceDim = data.spaceDim;
 
   const int numCells = data.numCells;
-  const double* vertCoords = data.vertices;
-  const double* quadPtsE = data.quadPts;
-  const double* jacobianE = data.jacobian;
-  const double* jacobianDetE = data.jacobianDet;
-  const double* basisDerivE = data.basisDeriv;
+  const PylithScalar* vertCoords = data.vertices;
+  const PylithScalar* quadPtsE = data.quadPts;
+  const PylithScalar* jacobianE = data.jacobian;
+  const PylithScalar* jacobianDetE = data.jacobianDet;
+  const PylithScalar* basisDerivE = data.basisDeriv;
 
-  const double minJacobian = 1.0e-06;
+  const PylithScalar minJacobian = 1.0e-06;
 
   // Create mesh with test cell
   topology::Mesh mesh(data.cellDim);
@@ -236,7 +236,7 @@
 #if defined(PRECOMPUTE_GEOMETRY)
   quadrature.computeGeometry(mesh, cells);
 #else
-  double_array coordinatesCell(numBasis*spaceDim);
+  scalar_array coordinatesCell(numBasis*spaceDim);
   const ALE::Obj<topology::Mesh::RealSection>& coordinates = 
     sieveMesh->getRealSection("coordinates");
   assert(!coordinates.isNull());
@@ -247,7 +247,7 @@
   size_t size = 0;
 
   // Check values from computeGeometry()
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const SieveMesh::label_sequence::iterator cellsEnd = cells->end(); 
   for (SieveMesh::label_sequence::iterator c_iter=cells->begin();
        c_iter != cellsEnd;
@@ -260,25 +260,25 @@
     quadrature.computeGeometry(coordinatesCell, *c_iter);    
 #endif
 
-    const double_array& quadPts = quadrature.quadPts();
+    const scalar_array& quadPts = quadrature.quadPts();
     size = numQuadPts * spaceDim;
     CPPUNIT_ASSERT_EQUAL(size, quadPts.size());
     for (size_t i=0; i < size; ++i)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(quadPtsE[i], quadPts[i], tolerance);
 
-    const double_array& jacobian = quadrature.jacobian();
+    const scalar_array& jacobian = quadrature.jacobian();
     size = numQuadPts * cellDim * spaceDim;
     CPPUNIT_ASSERT_EQUAL(size, jacobian.size());
     for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianE[i], jacobian[i], tolerance);
 
-    const double_array& jacobianDet = quadrature.jacobianDet();
+    const scalar_array& jacobianDet = quadrature.jacobianDet();
     size = numQuadPts;
     CPPUNIT_ASSERT_EQUAL(size, jacobianDet.size());
     for (size_t i=0; i < size; ++i)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianDetE[i], jacobianDet[i], tolerance);
     
-    const double_array& basisDeriv = quadrature.basisDeriv();
+    const scalar_array& basisDeriv = quadrature.basisDeriv();
     size = numQuadPts * numBasis * spaceDim;
     CPPUNIT_ASSERT_EQUAL(size, basisDeriv.size());
     for (size_t i=0; i < size; ++i)
@@ -309,13 +309,13 @@
   const int spaceDim = data.spaceDim;
 
   const int numCells = data.numCells;
-  double_array vertCoords(data.vertices, numBasis*spaceDim);
-  const double* quadPtsE = data.quadPts;
-  const double* jacobianE = data.jacobian;
-  const double* jacobianDetE = data.jacobianDet;
-  const double* basisDerivE = data.basisDeriv;
+  scalar_array vertCoords(data.vertices, numBasis*spaceDim);
+  const PylithScalar* quadPtsE = data.quadPts;
+  const PylithScalar* jacobianE = data.jacobian;
+  const PylithScalar* jacobianDetE = data.jacobianDet;
+  const PylithScalar* basisDerivE = data.basisDeriv;
 
-  const double minJacobian = 1.0e-06;
+  const PylithScalar minJacobian = 1.0e-06;
 
 #if 0
   // Create mesh with test cell
@@ -365,27 +365,27 @@
   size_t size = 0;
 
   // Check values from computeGeometry()
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
-  const double_array& quadPts = quadrature.quadPts();
+  const scalar_array& quadPts = quadrature.quadPts();
   size = numQuadPts * spaceDim;
   CPPUNIT_ASSERT_EQUAL(size, quadPts.size());
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(quadPtsE[i], quadPts[i], tolerance);
   
-  const double_array& jacobian = quadrature.jacobian();
+  const scalar_array& jacobian = quadrature.jacobian();
   size = numQuadPts * cellDim * spaceDim;
   CPPUNIT_ASSERT_EQUAL(size, jacobian.size());
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianE[i], jacobian[i], tolerance);
   
-  const double_array& jacobianDet = quadrature.jacobianDet();
+  const scalar_array& jacobianDet = quadrature.jacobianDet();
   size = numQuadPts;
   CPPUNIT_ASSERT_EQUAL(size, jacobianDet.size());
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianDetE[i], jacobianDet[i], tolerance);
   
-  const double_array& basisDeriv = quadrature.basisDeriv();
+  const scalar_array& basisDeriv = quadrature.basisDeriv();
   size = numQuadPts * numBasis * spaceDim;
   CPPUNIT_ASSERT_EQUAL(size, basisDeriv.size());
   for (size_t i=0; i < size; ++i)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature0D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature0D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature0D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,23 +44,23 @@
   const int numBasis = 1;
   const int numQuadPts = 1;
   const int spaceDim = 1;
-  const double basis[] = { 1.0 };
-  const double basisDerivRef[] = { 1.0 };
-  const double quadPtsRef[] = { 0.0 };
-  const double quadWts[] = { 1.0 };
+  const PylithScalar basis[] = { 1.0 };
+  const PylithScalar basisDerivRef[] = { 1.0 };
+  const PylithScalar quadPtsRef[] = { 0.0 };
+  const PylithScalar quadWts[] = { 1.0 };
 
   const int numVertices = 1;
   const int numCells = 1;
-  const double vertCoordsData[] = { 1.1 };
+  const PylithScalar vertCoordsData[] = { 1.1 };
   const int cells[] = { 0 };
-  const double quadPts[] = { 1.1 };
-  const double jacobian[] = { 1.0 };
-  const double jacobianInv[] = { 1.0 };
-  const double jacobianDet[] = { 1.0 };
+  const PylithScalar quadPts[] = { 1.1 };
+  const PylithScalar jacobian[] = { 1.0 };
+  const PylithScalar jacobianInv[] = { 1.0 };
+  const PylithScalar jacobianDet[] = { 1.0 };
 
-  double_array vertCoords(vertCoordsData, numBasis*spaceDim);
+  scalar_array vertCoords(vertCoordsData, numBasis*spaceDim);
 
-  const double minJacobian = 1.0e-06;
+  const PylithScalar minJacobian = 1.0e-06;
   
   QuadratureRefCell refCell;
   refCell.minJacobian(minJacobian);
@@ -75,7 +75,7 @@
   engine.initialize();
   engine.computeGeometry(vertCoords, 0);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_DOUBLES_EQUAL(quadPts[0], engine._quadPts[0], 
 			       tolerance);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobian[0], engine._jacobian[0], 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadratureEngine.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadratureEngine.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadratureEngine.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,11 +36,11 @@
 pylith::feassemble::TestQuadratureEngine::testCopyConstructor(void)
 { // testClone
   // Semi-random values manually set to check cloning
-  const double quadPtsE[] = { 12.8 };
-  const double jacobianE[] = { 2.56 };
-  const double jacobianInvE[] = { 5.12 };
-  const double jacobianDetE[] = { 10.24 };
-  const double basisDerivE[] = { 0.8, 1.6 };
+  const PylithScalar quadPtsE[] = { 12.8 };
+  const PylithScalar jacobianE[] = { 2.56 };
+  const PylithScalar jacobianInvE[] = { 5.12 };
+  const PylithScalar jacobianDetE[] = { 10.24 };
+  const PylithScalar basisDerivE[] = { 0.8, 1.6 };
 
   QuadratureRefCell refCell;
 
@@ -50,43 +50,43 @@
   // Set values
   size = 1;
   engineOrig._quadPts.resize(size);
-  memcpy(&engineOrig._quadPts[0], quadPtsE, size*sizeof(double));
+  memcpy(&engineOrig._quadPts[0], quadPtsE, size*sizeof(PylithScalar));
 
   size = 1;
   engineOrig._jacobian.resize(size);
-  memcpy(&engineOrig._jacobian[0], jacobianE, size*sizeof(double));
+  memcpy(&engineOrig._jacobian[0], jacobianE, size*sizeof(PylithScalar));
 
   size = 1;
   engineOrig._jacobianInv.resize(size);
-  memcpy(&engineOrig._jacobianInv[0], jacobianInvE, size*sizeof(double));
+  memcpy(&engineOrig._jacobianInv[0], jacobianInvE, size*sizeof(PylithScalar));
 
   size = 1;
   engineOrig._jacobianDet.resize(size);
-  memcpy(&engineOrig._jacobianDet[0], jacobianDetE, size*sizeof(double));
+  memcpy(&engineOrig._jacobianDet[0], jacobianDetE, size*sizeof(PylithScalar));
 
   // Copy
   const QuadratureEngine* engine = engineOrig.clone();
   CPPUNIT_ASSERT(0 != engine);
 
-  const double_array& quadPts = engine->quadPts();
+  const scalar_array& quadPts = engine->quadPts();
   size = 1;
   CPPUNIT_ASSERT_EQUAL(size, quadPts.size());
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(quadPtsE[i], quadPts[i]);
 
-  const double_array& jacobian = engine->_jacobian;
+  const scalar_array& jacobian = engine->_jacobian;
   size = 1;
   CPPUNIT_ASSERT_EQUAL(size, jacobian.size());
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(jacobianE[i], jacobian[i]);
 
-  const double_array& jacobianInv = engine->_jacobianInv;
+  const scalar_array& jacobianInv = engine->_jacobianInv;
   size = 1;
   CPPUNIT_ASSERT_EQUAL(size, jacobianInv.size());
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(jacobianInvE[i], jacobianInv[i]);
 
-  const double_array& jacobianDet = engine->jacobianDet();
+  const scalar_array& jacobianDet = engine->jacobianDet();
   size = 1;
   CPPUNIT_ASSERT_EQUAL(size, jacobianDet.size());
   for (int i=0; i < size; ++i)
@@ -104,18 +104,18 @@
   const int numBasis = 5;
   const int numQuadPts = 1;
   const int spaceDim = 3;
-  const double basis[] = { 
+  const PylithScalar basis[] = { 
     1.1, 1.2, 1.3, 1.4, 1.5
   };
-  const double basisDerivRef[] = {
+  const PylithScalar basisDerivRef[] = {
     2.1, 2.2, 2.3,
     2.4, 2.5, 2.6,
     2.7, 2.8, 2.9,
     2.10, 2.11, 2.12,
     2.13, 2.14, 2.15,
   };
-  const double quadPtsRef[] = { 3.1, 3.2, 3.3 };
-  const double quadWts[] = { 4.0 };
+  const PylithScalar quadPtsRef[] = { 3.1, 3.2, 3.3 };
+  const PylithScalar quadWts[] = { 4.0 };
 
   QuadratureRefCell refCell;
   refCell.initialize(basis, numQuadPts, numBasis,
@@ -157,26 +157,26 @@
   const int numBasis = data.numBasis;
   const int numQuadPts = data.numQuadPts;
   const int spaceDim = data.spaceDim;
-  const double* basis = data.basis;
-  const double* basisDerivRef = data.basisDerivRef;
-  const double* quadPtsRef = data.quadPtsRef;
-  const double* quadWts = data.quadWts;
+  const PylithScalar* basis = data.basis;
+  const PylithScalar* basisDerivRef = data.basisDerivRef;
+  const PylithScalar* quadPtsRef = data.quadPtsRef;
+  const PylithScalar* quadWts = data.quadWts;
 
   const int numVertices = data.numVertices;
   const int numCells = data.numCells;
-  const double_array vertCoords(data.vertices, numBasis*spaceDim);
+  const scalar_array vertCoords(data.vertices, numBasis*spaceDim);
   const int* cells = data.cells;
-  const double* quadPtsE = data.quadPts;
-  const double* jacobianE = data.jacobian;
-  const double* jacobianInvE = data.jacobianInv;
-  const double* jacobianDetE = data.jacobianDet;
-  const double* basisDerivE = data.basisDeriv;
+  const PylithScalar* quadPtsE = data.quadPts;
+  const PylithScalar* jacobianE = data.jacobian;
+  const PylithScalar* jacobianInvE = data.jacobianInv;
+  const PylithScalar* jacobianDetE = data.jacobianDet;
+  const PylithScalar* basisDerivE = data.basisDeriv;
 
   CPPUNIT_ASSERT(1 == numCells);
   CPPUNIT_ASSERT(0 != engine);
   CPPUNIT_ASSERT(0 != refCell);
 
-  const double minJacobian = 1.0e-06;
+  const PylithScalar minJacobian = 1.0e-06;
   refCell->minJacobian(minJacobian);
   refCell->initialize(basis, numQuadPts, numBasis,
 		      basisDerivRef, numQuadPts, numBasis, cellDim,
@@ -188,7 +188,7 @@
   engine->initialize();
   engine->computeGeometry(vertCoords, 0);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   int size = numQuadPts * spaceDim;
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(quadPtsE[i], engine->_quadPts[i], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadratureRefCell.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadratureRefCell.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadratureRefCell.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -45,7 +45,7 @@
 { // testMinJacobian
   QuadratureRefCell q;
 
-  const double min = 1.0;
+  const PylithScalar min = 1.0;
   q.minJacobian(min);
   CPPUNIT_ASSERT_EQUAL(min, q._minJacobian);
 } // testMinJacobian
@@ -76,11 +76,11 @@
   const int numBasis = 2;
   const int numQuadPts = 1;
   const int spaceDim = 1;
-  const double basis[] = { 0.5, 0.5 };
-  const double basisDerivRef[] = { -0.5, 0.5 };
-  const double quadPtsRef[] = { 0.0 };
-  const double quadWts[] = { 2.0 };
-  const double minJacobian = 1.0;
+  const PylithScalar basis[] = { 0.5, 0.5 };
+  const PylithScalar basisDerivRef[] = { -0.5, 0.5 };
+  const PylithScalar quadPtsRef[] = { 0.0 };
+  const PylithScalar quadWts[] = { 2.0 };
+  const PylithScalar minJacobian = 1.0;
 
   QuadratureRefCell q;
   q.initialize(basis, numQuadPts, numBasis,

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_feassemble_cellgeomdata_hh)
 #define pylith_feassemble_cellgeomdata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace feassemble {
      class CellGeomData;
@@ -46,11 +48,11 @@
 
   int numLocs; ///< Number of locations
 
-  double* gravityVec; ///< Gravity vector for problem
-  double* vertices; ///< Coordinates of vertices of cell
-  double* locations; ///< Locations where Jacobian is computed
-  double* jacobian; ///< Jacobian at locations
-  double* jacobianDet; ///< Determinant of Jacobian at locations
+  PylithScalar* gravityVec; ///< Gravity vector for problem
+  PylithScalar* vertices; ///< Coordinates of vertices of cell
+  PylithScalar* locations; ///< Locations where Jacobian is computed
+  PylithScalar* jacobian; ///< Jacobian at locations
+  PylithScalar* jacobianDet; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -44,8 +44,8 @@
 
   /// @name Calculated values.
   //@{
-  double* valsResidualLumped; ///< Expected values from residual calculation (lumped Jacobian).
-  double* valsJacobianLumped; ///< Expected values from lumped Jacobian calculation.
+  PylithScalar* valsResidualLumped; ///< Expected values from residual calculation (lumped Jacobian).
+  PylithScalar* valsJacobianLumped; ///< Expected values from lumped Jacobian calculation.
   //@}
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitData1DLinear::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -56,62 +56,62 @@
 0,1,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_fieldTIncr[] = {
   1.20000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_fieldT[] = {
   1.10000000e+00,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_fieldTmdt[] = {
   1.00000000e+00,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_valsResidual[] = {
   1.71634375e+10,
  -1.72365625e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_valsJacobian[] = {
   1.40625000e+07,
   1.40625000e+07,
   1.40625000e+07,
   1.40625000e+07,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_valsResidualLumped[] = {
   1.71690625e+10,
  -1.72421875e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_valsJacobianLumped[] = {
   2.81250000e+07,
   2.81250000e+07,
 };
@@ -129,21 +129,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitData1DLinear::~ElasticityExplicitData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitData1DQuadratic::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -57,22 +57,22 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -81,7 +81,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -90,31 +90,31 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_fieldTIncr[] = {
   1.20000000e+00,
   0.00000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_fieldT[] = {
   1.10000000e+00,
   1.00000000e-01,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_fieldTmdt[] = {
   1.00000000e+00,
   1.00000000e-01,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsResidual[] = {
   6.00504167e+10,
   1.45260729e+11,
  -2.05377708e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsJacobian[] = {
   6.25000000e+06,
  -3.12500000e+06,
   6.25000000e+06,
@@ -126,13 +126,13 @@
   2.50000000e+07,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsResidualLumped[] = {
   6.00563542e+10,
   1.45266667e+11,
  -2.05389583e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsJacobianLumped[] = {
   9.37500000e+06,
   9.37500000e+06,
   3.75000000e+07,
@@ -151,21 +151,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitData1DQuadratic::~ElasticityExplicitData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitData2DLinear::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -57,55 +57,55 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_quadPts[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_fieldTIncr[] = {
   1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_fieldT[] = {
   1.60000000e+00, -8.00000000e-01,
   9.00000000e-01,  7.00000000e-01,
  -2.00000000e-01, -1.10000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_fieldTmdt[] = {
   8.00000000e-01,  1.00000000e-01,
   5.00000000e-01,  3.00000000e-01,
  -1.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_valsResidual[] = {
  -7.10095578e+10,  1.36893348e+11,
  -1.02829242e+10, -1.20976325e+11,
   8.12828570e+10, -1.59202314e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_valsJacobian[] = {
   1.52777778e+06,  0.00000000e+00,
   1.52777778e+06,  0.00000000e+00,
   1.52777778e+06,  0.00000000e+00,
@@ -126,13 +126,13 @@
   0.00000000e+00,  1.52777778e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_valsResidualLumped[] = {
  -7.10086411e+10,  1.36894418e+11,
  -1.02842992e+10, -1.20980297e+11,
   8.12833153e+10, -1.59173286e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_valsJacobianLumped[] = {
   4.58333333e+06,  4.58333333e+06,
   4.58333333e+06,  4.58333333e+06,
   4.58333333e+06,  4.58333333e+06,
@@ -151,21 +151,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitData2DLinear::~ElasticityExplicitData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitData2DQuadratic::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -60,7 +60,7 @@
 0,1,2,3,4,5,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -69,7 +69,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_quadPts[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -78,11 +78,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -103,7 +103,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -142,7 +142,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_fieldTIncr[] = {
  -4.00000000e-01, -6.00000000e-01,
   7.00000000e-01,  8.00000000e-01,
   0.00000000e+00,  2.00000000e-01,
@@ -151,7 +151,7 @@
  -3.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_fieldT[] = {
  -3.00000000e-01, -4.00000000e-01,
   5.00000000e-01,  6.00000000e-01,
   0.00000000e+00,  1.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_fieldTmdt[] = {
  -2.00000000e-01, -3.00000000e-01,
   3.00000000e-01,  4.00000000e-01,
   0.00000000e+00, -1.00000000e-01,
@@ -169,7 +169,7 @@
  -2.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsResidual[] = {
   1.14469580e+10,  9.89206525e+10,
  -3.22261697e+10, -5.24164966e+09,
   5.33382294e+09,  6.79748894e+10,
@@ -178,7 +178,7 @@
   1.58455201e+10, -6.90098433e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsJacobian[] = {
   2.24121094e+06,  0.00000000e+00,
   2.41699219e+05,  0.00000000e+00,
   2.41699219e+05,  0.00000000e+00,
@@ -253,7 +253,7 @@
   0.00000000e+00,  8.46679688e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsResidualLumped[] = {
   1.14454133e+10,  9.89209294e+10,
  -3.22283567e+10, -5.24308887e+09,
   5.33172309e+09,  6.79741797e+10,
@@ -262,7 +262,7 @@
   1.58484937e+10, -6.90064316e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsJacobianLumped[] = {
   4.21875000e+06,  4.21875000e+06,
   3.98437500e+06,  3.98437500e+06,
   3.98437500e+06,  3.98437500e+06,
@@ -284,21 +284,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitData2DQuadratic::~ElasticityExplicitData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitData3DLinear::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -58,61 +58,61 @@
 0,1,2,3,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_quadPts[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_fieldTIncr[] = {
   3.00000000e-01,  2.00000000e-01, -5.00000000e-01,
  -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
   2.00000000e-01,  6.00000000e-01,  3.00000000e-01,
  -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_fieldT[] = {
   8.00000000e-01,  1.00000000e-01, -6.00000000e-01,
  -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
   1.00000000e-01,  7.00000000e-01,  2.00000000e-01,
  -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_fieldTmdt[] = {
   1.00000000e-01,  1.00000000e-01, -3.00000000e-01,
  -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
   2.00000000e-01,  4.00000000e-01,  1.00000000e-01,
  -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_valsResidual[] = {
  -6.53693819e+09,  3.88079833e+10,  3.46544326e+09,
  -4.32000975e+09,  7.13967240e+10,  2.36593900e+10,
   7.21670494e+09, -1.13026998e+11, -3.40757835e+10,
   3.64360549e+09,  2.82229089e+09,  6.95364028e+09,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_valsJacobian[] = {
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
@@ -163,14 +163,14 @@
   0.00000000e+00,  0.00000000e+00,  8.40625000e+05,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_valsResidualLumped[] = {
  -6.53643381e+09,  3.88073108e+10,  3.46544326e+09,
  -4.31950537e+09,  7.13977327e+10,  2.36607350e+10,
   7.21485556e+09, -1.13028007e+11, -3.40771285e+10,
   3.64444612e+09,  2.82296339e+09,  6.95364028e+09,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_valsJacobianLumped[] = {
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
@@ -190,21 +190,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitData3DLinear::~ElasticityExplicitData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitData3DQuadratic::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -64,7 +64,7 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -77,18 +77,18 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_quadPts[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -104,7 +104,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -147,7 +147,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_fieldTIncr[] = {
   3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
  -6.00000000e-01,  8.00000000e-01,  2.00000000e-01,
   5.00000000e-01,  5.00000000e-01,  7.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01,  5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_fieldT[] = {
   1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
  -3.00000000e-01,  4.00000000e-01,  9.00000000e-01,
   6.00000000e-01,  8.00000000e-01,  5.00000000e-01,
@@ -173,7 +173,7 @@
  -9.00000000e-01,  3.00000000e-01, -8.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_fieldTmdt[] = {
   2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
  -4.00000000e-01,  2.00000000e-01,  3.00000000e-01,
  -5.00000000e-01,  2.00000000e-01,  2.00000000e-01,
@@ -186,7 +186,7 @@
  -4.00000000e-01,  5.00000000e-01, -7.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsResidual[] = {
   2.17054586e+10, -1.01739898e+10,  2.19940105e+10,
   6.44485026e+10, -2.49355435e+10,  6.57568524e+09,
  -4.99706922e+10, -5.58679967e+10, -3.45875247e+10,
@@ -199,7 +199,7 @@
   5.77073439e+10, -6.86734841e+10,  9.70537069e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsJacobian[] = {
   1.50251107e+06,  0.00000000e+00,  0.00000000e+00,
  -5.70500651e+05,  0.00000000e+00,  0.00000000e+00,
  -5.70500651e+05,  0.00000000e+00,  0.00000000e+00,
@@ -502,7 +502,7 @@
   0.00000000e+00,  0.00000000e+00,  3.25847917e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsResidualLumped[] = {
   2.17058857e+10, -1.01733961e+10,  2.19900081e+10,
   6.44476753e+10, -2.49368998e+10,  6.57917072e+09,
  -4.99716018e+10, -5.58679351e+10, -3.45875383e+10,
@@ -515,7 +515,7 @@
   5.76997342e+10, -6.86862545e+10,  9.70617888e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsJacobianLumped[] = {
   2.57903646e+06,  2.57903646e+06,  2.57903646e+06,
   2.40117187e+06,  2.40117187e+06,  2.40117187e+06,
   2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
@@ -541,21 +541,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitData3DQuadratic::~ElasticityExplicitData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitGravData1DLinear::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -56,62 +56,62 @@
 0,1,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldTIncr[] = {
   1.20000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldT[] = {
   1.10000000e+00,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldTmdt[] = {
   1.00000000e+00,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsResidual[] = {
  -2.64086562e+11,
  -2.98486562e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsJacobian[] = {
   1.40625000e+07,
   1.40625000e+07,
   1.40625000e+07,
   1.40625000e+07,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsResidualLumped[] = {
  -2.64080938e+11,
  -2.98492188e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsJacobianLumped[] = {
   2.81250000e+07,
   2.81250000e+07,
 };
@@ -129,21 +129,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitGravData1DLinear::~ElasticityExplicitGravData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -57,22 +57,22 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -81,7 +81,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -90,31 +90,31 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldTIncr[] = {
   1.20000000e+00,
   0.00000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldT[] = {
   1.10000000e+00,
   1.00000000e-01,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldTmdt[] = {
   1.00000000e+00,
   1.00000000e-01,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsResidual[] = {
  -3.36995833e+10,
   5.15107292e+10,
  -5.80377708e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsJacobian[] = {
   6.25000000e+06,
  -3.12500000e+06,
   6.25000000e+06,
@@ -126,13 +126,13 @@
   2.50000000e+07,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsResidualLumped[] = {
  -3.36936458e+10,
   5.15166667e+10,
  -5.80389583e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsJacobianLumped[] = {
   9.37500000e+06,
   9.37500000e+06,
   3.75000000e+07,
@@ -151,21 +151,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitGravData1DQuadratic::~ElasticityExplicitGravData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitGravData2DLinear::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -57,55 +57,55 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_quadPts[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldTIncr[] = {
   1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldT[] = {
   1.60000000e+00, -8.00000000e-01,
   9.00000000e-01,  7.00000000e-01,
  -2.00000000e-01, -1.10000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldTmdt[] = {
   8.00000000e-01,  1.00000000e-01,
   5.00000000e-01,  3.00000000e-01,
  -1.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsResidual[] = {
  -7.10095578e+10,  9.10600148e+10,
  -1.02829242e+10, -1.66809658e+11,
   8.12828570e+10, -6.17535647e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsJacobian[] = {
   1.52777778e+06,  0.00000000e+00,
   1.52777778e+06,  0.00000000e+00,
   1.52777778e+06,  0.00000000e+00,
@@ -126,13 +126,13 @@
   0.00000000e+00,  1.52777778e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsResidualLumped[] = {
  -7.10086411e+10,  9.10610843e+10,
  -1.02842992e+10, -1.66813631e+11,
   8.12833153e+10, -6.17506619e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsJacobianLumped[] = {
   4.58333333e+06,  4.58333333e+06,
   4.58333333e+06,  4.58333333e+06,
   4.58333333e+06,  4.58333333e+06,
@@ -151,21 +151,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitGravData2DLinear::~ElasticityExplicitGravData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -60,7 +60,7 @@
 0,1,2,3,4,5,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -69,7 +69,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_quadPts[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -78,11 +78,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -103,7 +103,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -142,7 +142,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_fieldTIncr[] = {
  -4.00000000e-01, -6.00000000e-01,
   7.00000000e-01,  8.00000000e-01,
   0.00000000e+00,  2.00000000e-01,
@@ -151,7 +151,7 @@
  -3.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_fieldT[] = {
  -3.00000000e-01, -4.00000000e-01,
   5.00000000e-01,  6.00000000e-01,
   0.00000000e+00,  1.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_fieldTmdt[] = {
  -2.00000000e-01, -3.00000000e-01,
   3.00000000e-01,  4.00000000e-01,
   0.00000000e+00, -1.00000000e-01,
@@ -169,7 +169,7 @@
  -2.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsResidual[] = {
   1.14469580e+10,  5.67331525e+10,
  -3.22261697e+10, -4.50853997e+10,
   5.33382294e+09,  2.81311394e+10,
@@ -178,7 +178,7 @@
   1.58455201e+10, -1.20572343e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsJacobian[] = {
   2.24121094e+06,  0.00000000e+00,
   2.41699219e+05,  0.00000000e+00,
   2.41699219e+05,  0.00000000e+00,
@@ -253,7 +253,7 @@
   0.00000000e+00,  8.46679688e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsResidualLumped[] = {
   1.14454133e+10,  5.67334294e+10,
  -3.22283567e+10, -4.50868389e+10,
   5.33172309e+09,  2.81304297e+10,
@@ -262,7 +262,7 @@
   1.58484937e+10, -1.20568932e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsJacobianLumped[] = {
   4.21875000e+06,  4.21875000e+06,
   3.98437500e+06,  3.98437500e+06,
   3.98437500e+06,  3.98437500e+06,
@@ -284,21 +284,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitGravData2DQuadratic::~ElasticityExplicitGravData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitGravData3DLinear::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -58,61 +58,61 @@
 0,1,2,3,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_quadPts[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldTIncr[] = {
   3.00000000e-01,  2.00000000e-01, -5.00000000e-01,
  -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
   2.00000000e-01,  6.00000000e-01,  3.00000000e-01,
  -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldT[] = {
   8.00000000e-01,  1.00000000e-01, -6.00000000e-01,
  -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
   1.00000000e-01,  7.00000000e-01,  2.00000000e-01,
  -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldTmdt[] = {
   1.00000000e-01,  1.00000000e-01, -3.00000000e-01,
  -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
   2.00000000e-01,  4.00000000e-01,  1.00000000e-01,
  -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsResidual[] = {
  -6.53693819e+09,  3.88079833e+10, -3.01595567e+10,
  -4.32000975e+09,  7.13967240e+10, -9.96561003e+09,
   7.21670494e+09, -1.13026998e+11, -6.77007835e+10,
   3.64360549e+09,  2.82229089e+09, -2.66713597e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsJacobian[] = {
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
@@ -163,14 +163,14 @@
   0.00000000e+00,  0.00000000e+00,  8.40625000e+05,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsResidualLumped[] = {
  -6.53643381e+09,  3.88073108e+10, -3.01595567e+10,
  -4.31950537e+09,  7.13977327e+10, -9.96426503e+09,
   7.21485556e+09, -1.13028007e+11, -6.77021285e+10,
   3.64444612e+09,  2.82296339e+09, -2.66713597e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsJacobianLumped[] = {
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
@@ -190,21 +190,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitGravData3DLinear::~ElasticityExplicitGravData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -64,7 +64,7 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -77,18 +77,18 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_quadPts[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -104,7 +104,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -147,7 +147,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldTIncr[] = {
   3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
  -6.00000000e-01,  8.00000000e-01,  2.00000000e-01,
   5.00000000e-01,  5.00000000e-01,  7.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01,  5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldT[] = {
   1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
  -3.00000000e-01,  4.00000000e-01,  9.00000000e-01,
   6.00000000e-01,  8.00000000e-01,  5.00000000e-01,
@@ -173,7 +173,7 @@
  -9.00000000e-01,  3.00000000e-01, -8.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldTmdt[] = {
   2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
  -4.00000000e-01,  2.00000000e-01,  3.00000000e-01,
  -5.00000000e-01,  2.00000000e-01,  2.00000000e-01,
@@ -186,7 +186,7 @@
  -4.00000000e-01,  5.00000000e-01, -7.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsResidual[] = {
   2.17054586e+10, -1.01739898e+10, -3.79635409e+09,
   6.44485026e+10, -2.49355435e+10, -1.74360335e+10,
  -4.99706922e+10, -5.58679967e+10, -5.85992435e+10,
@@ -199,7 +199,7 @@
   5.77073439e+10, -6.86734841e+10, -2.38942097e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsJacobian[] = {
   1.50251107e+06,  0.00000000e+00,  0.00000000e+00,
  -5.70500651e+05,  0.00000000e+00,  0.00000000e+00,
  -5.70500651e+05,  0.00000000e+00,  0.00000000e+00,
@@ -502,7 +502,7 @@
   0.00000000e+00,  0.00000000e+00,  3.25847917e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsResidualLumped[] = {
   2.17058857e+10, -1.01733961e+10, -3.80035653e+09,
   6.44476753e+10, -2.49368998e+10, -1.74325480e+10,
  -4.99716018e+10, -5.58679351e+10, -5.85992570e+10,
@@ -515,7 +515,7 @@
   5.76997342e+10, -6.86862545e+10, -2.38861279e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsJacobianLumped[] = {
   2.57903646e+06,  2.57903646e+06,  2.57903646e+06,
   2.40117187e+06,  2.40117187e+06,  2.40117187e+06,
   2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
@@ -541,21 +541,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitGravData3DQuadratic::~ElasticityExplicitGravData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -56,62 +56,62 @@
 0,1,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldTIncr[] = {
   1.20000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldT[] = {
   1.10000000e+00,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldTmdt[] = {
   1.00000000e+00,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsResidual[] = {
   2.04829437e+10,
  -2.05560687e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsJacobian[] = {
   1.40625000e+07,
   1.40625000e+07,
   1.40625000e+07,
   1.40625000e+07,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsResidualLumped[] = {
   2.04885687e+10,
  -2.05616937e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsJacobianLumped[] = {
   2.81250000e+07,
   2.81250000e+07,
 };
@@ -129,21 +129,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::~ElasticityExplicitLgDeformData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -57,22 +57,22 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -81,7 +81,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -90,31 +90,31 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldTIncr[] = {
   1.20000000e+00,
   0.00000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldT[] = {
   1.10000000e+00,
   1.00000000e-01,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldTmdt[] = {
   1.00000000e+00,
   1.00000000e-01,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsResidual[] = {
   8.41042438e+10,
  -9.31754244e+09,
  -7.48532639e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsJacobian[] = {
   6.25000000e+06,
  -3.12500000e+06,
   6.25000000e+06,
@@ -126,13 +126,13 @@
   2.50000000e+07,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsResidualLumped[] = {
   8.41101813e+10,
  -9.31160494e+09,
  -7.48651389e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsJacobianLumped[] = {
   9.37500000e+06,
   9.37500000e+06,
   3.75000000e+07,
@@ -151,21 +151,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::~ElasticityExplicitLgDeformData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -57,55 +57,55 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_quadPts[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldTIncr[] = {
   1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldT[] = {
   1.60000000e+00, -8.00000000e-01,
   9.00000000e-01,  7.00000000e-01,
  -2.00000000e-01, -1.10000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldTmdt[] = {
   8.00000000e-01,  1.00000000e-01,
   5.00000000e-01,  3.00000000e-01,
  -1.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsResidual[] = {
  -5.23632630e+11,  5.83305846e+11,
   1.65372743e+11, -5.78685990e+11,
   3.58250262e+11, -4.62306437e+09,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsJacobian[] = {
   1.52777778e+06,  0.00000000e+00,
   1.52777778e+06,  0.00000000e+00,
   1.52777778e+06,  0.00000000e+00,
@@ -126,13 +126,13 @@
   0.00000000e+00,  1.52777778e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsResidualLumped[] = {
  -5.23631714e+11,  5.83306915e+11,
   1.65371368e+11, -5.78689962e+11,
   3.58250720e+11, -4.62016160e+09,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsJacobianLumped[] = {
   4.58333333e+06,  4.58333333e+06,
   4.58333333e+06,  4.58333333e+06,
   4.58333333e+06,  4.58333333e+06,
@@ -151,21 +151,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::~ElasticityExplicitLgDeformData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -60,7 +60,7 @@
 0,1,2,3,4,5,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -69,7 +69,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_quadPts[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -78,11 +78,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -103,7 +103,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -142,7 +142,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_fieldTIncr[] = {
  -4.00000000e-01, -6.00000000e-01,
   7.00000000e-01,  8.00000000e-01,
   0.00000000e+00,  2.00000000e-01,
@@ -151,7 +151,7 @@
  -3.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_fieldT[] = {
  -3.00000000e-01, -4.00000000e-01,
   5.00000000e-01,  6.00000000e-01,
   0.00000000e+00,  1.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_fieldTmdt[] = {
  -2.00000000e-01, -3.00000000e-01,
   3.00000000e-01,  4.00000000e-01,
   0.00000000e+00, -1.00000000e-01,
@@ -169,7 +169,7 @@
  -2.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsResidual[] = {
   3.35186619e+10,  8.10189832e+10,
  -7.94930135e+10, -4.37826989e+10,
   2.10035850e+10,  2.15156871e+10,
@@ -178,7 +178,7 @@
   6.13022939e+09,  4.70980577e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsJacobian[] = {
   2.24121094e+06,  0.00000000e+00,
   2.41699219e+05,  0.00000000e+00,
   2.41699219e+05,  0.00000000e+00,
@@ -253,7 +253,7 @@
   0.00000000e+00,  8.46679688e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsResidualLumped[] = {
   3.35171172e+10,  8.10192601e+10,
  -7.94952005e+10, -4.37841381e+10,
   2.10014852e+10,  2.15149774e+10,
@@ -262,7 +262,7 @@
   6.13320302e+09,  4.71014693e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsJacobianLumped[] = {
   4.21875000e+06,  4.21875000e+06,
   3.98437500e+06,  3.98437500e+06,
   3.98437500e+06,  3.98437500e+06,
@@ -284,21 +284,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::~ElasticityExplicitLgDeformData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -58,61 +58,61 @@
 0,1,2,3,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_quadPts[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldTIncr[] = {
   3.00000000e-01,  2.00000000e-01, -5.00000000e-01,
  -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
   2.00000000e-01,  6.00000000e-01,  3.00000000e-01,
  -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldT[] = {
   8.00000000e-01,  1.00000000e-01, -6.00000000e-01,
  -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
   1.00000000e-01,  7.00000000e-01,  2.00000000e-01,
  -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldTmdt[] = {
   1.00000000e-01,  1.00000000e-01, -3.00000000e-01,
  -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
   2.00000000e-01,  4.00000000e-01,  1.00000000e-01,
  -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsResidual[] = {
  -1.33659352e+10,  3.00655421e+11,  1.48221233e+11,
  -5.48900483e+10,  6.55599721e+11,  3.04460965e+11,
   6.45910023e+10, -1.06342951e+12, -4.86426871e+11,
   3.66834369e+09,  1.07174373e+11,  3.37473630e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsJacobian[] = {
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
@@ -163,14 +163,14 @@
   0.00000000e+00,  0.00000000e+00,  8.40625000e+05,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsResidualLumped[] = {
  -1.33654308e+10,  3.00654749e+11,  1.48221233e+11,
  -5.48895440e+10,  6.55600730e+11,  3.04462310e+11,
   6.45891529e+10, -1.06343052e+12, -4.86428216e+11,
   3.66918432e+09,  1.07175045e+11,  3.37473630e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsJacobianLumped[] = {
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
@@ -190,21 +190,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::~ElasticityExplicitLgDeformData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -64,7 +64,7 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -77,18 +77,18 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_quadPts[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -104,7 +104,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -147,7 +147,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldTIncr[] = {
   3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
  -6.00000000e-01,  8.00000000e-01,  2.00000000e-01,
   5.00000000e-01,  5.00000000e-01,  7.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01,  5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldT[] = {
   1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
  -3.00000000e-01,  4.00000000e-01,  9.00000000e-01,
   6.00000000e-01,  8.00000000e-01,  5.00000000e-01,
@@ -173,7 +173,7 @@
  -9.00000000e-01,  3.00000000e-01, -8.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldTmdt[] = {
   2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
  -4.00000000e-01,  2.00000000e-01,  3.00000000e-01,
  -5.00000000e-01,  2.00000000e-01,  2.00000000e-01,
@@ -186,7 +186,7 @@
  -4.00000000e-01,  5.00000000e-01, -7.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsResidual[] = {
   3.68904302e+10,  2.89154635e+10, -8.34303196e+08,
   1.31658958e+11, -3.38188176e+10,  5.13285187e+10,
  -3.92909711e+11, -2.10630391e+11, -2.01774869e+11,
@@ -199,7 +199,7 @@
   4.58368848e+11, -2.69312012e+11,  3.51028310e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsJacobian[] = {
   1.50251107e+06,  0.00000000e+00,  0.00000000e+00,
  -5.70500651e+05,  0.00000000e+00,  0.00000000e+00,
  -5.70500651e+05,  0.00000000e+00,  0.00000000e+00,
@@ -502,7 +502,7 @@
   0.00000000e+00,  0.00000000e+00,  3.25847917e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsResidualLumped[] = {
   3.68908573e+10,  2.89160572e+10, -8.38305638e+08,
   1.31658131e+11, -3.38201739e+10,  5.13320041e+10,
  -3.92910621e+11, -2.10630330e+11, -2.01774882e+11,
@@ -515,7 +515,7 @@
   4.58361238e+11, -2.69324783e+11,  3.51036392e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsJacobianLumped[] = {
   2.57903646e+06,  2.57903646e+06,  2.57903646e+06,
   2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
   2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
@@ -541,21 +541,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::~ElasticityExplicitLgDeformData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -56,62 +56,62 @@
 0,1,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldTIncr[] = {
   1.20000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldT[] = {
   1.10000000e+00,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldTmdt[] = {
   1.00000000e+00,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsResidual[] = {
  -2.60767056e+11,
  -3.01806069e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsJacobian[] = {
   1.40625000e+07,
   1.40625000e+07,
   1.40625000e+07,
   1.40625000e+07,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsResidualLumped[] = {
  -2.60761431e+11,
  -3.01811694e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsJacobianLumped[] = {
   2.81250000e+07,
   2.81250000e+07,
 };
@@ -129,21 +129,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::~ElasticityExplicitLgDeformGravData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -57,22 +57,22 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -81,7 +81,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -90,31 +90,31 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldTIncr[] = {
   1.20000000e+00,
   0.00000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldT[] = {
   1.10000000e+00,
   1.00000000e-01,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldTmdt[] = {
   1.00000000e+00,
   1.00000000e-01,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsResidual[] = {
  -9.64575617e+09,
  -1.03067542e+11,
  -4.49853264e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsJacobian[] = {
   6.25000000e+06,
  -3.12500000e+06,
   6.25000000e+06,
@@ -126,13 +126,13 @@
   2.50000000e+07,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsResidualLumped[] = {
  -9.63981867e+09,
  -1.03061605e+11,
  -4.49865139e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsJacobianLumped[] = {
   9.37500000e+06,
   9.37500000e+06,
   3.75000000e+07,
@@ -151,21 +151,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::~ElasticityExplicitLgDeformGravData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -57,55 +57,55 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_quadPts[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldTIncr[] = {
   1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldT[] = {
   1.60000000e+00, -8.00000000e-01,
   9.00000000e-01,  7.00000000e-01,
  -2.00000000e-01, -1.10000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldTmdt[] = {
   8.00000000e-01,  1.00000000e-01,
   5.00000000e-01,  3.00000000e-01,
  -1.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsResidual[] = {
  -5.23632630e+11,  5.37472513e+11,
   1.65372743e+11, -6.24519323e+11,
   3.58250262e+11, -5.04563977e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsJacobian[] = {
   1.52777778e+06,  0.00000000e+00,
   1.52777778e+06,  0.00000000e+00,
   1.52777778e+06,  0.00000000e+00,
@@ -126,13 +126,13 @@
   0.00000000e+00,  1.52777778e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsResidualLumped[] = {
  -5.23631714e+11,  5.37473582e+11,
   1.65371368e+11, -6.24523296e+11,
   3.58250720e+11, -5.04534949e+10,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsJacobianLumped[] = {
   4.58333333e+06,  4.58333333e+06,
   4.58333333e+06,  4.58333333e+06,
   4.58333333e+06,  4.58333333e+06,
@@ -151,21 +151,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::~ElasticityExplicitLgDeformGravData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -60,7 +60,7 @@
 0,1,2,3,4,5,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -69,7 +69,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_quadPts[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -78,11 +78,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -103,7 +103,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -142,7 +142,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_fieldTIncr[] = {
  -4.00000000e-01, -6.00000000e-01,
   7.00000000e-01,  8.00000000e-01,
   0.00000000e+00,  2.00000000e-01,
@@ -151,7 +151,7 @@
  -3.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_fieldT[] = {
  -3.00000000e-01, -4.00000000e-01,
   5.00000000e-01,  6.00000000e-01,
   0.00000000e+00,  1.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_fieldTmdt[] = {
  -2.00000000e-01, -3.00000000e-01,
   3.00000000e-01,  4.00000000e-01,
   0.00000000e+00, -1.00000000e-01,
@@ -169,7 +169,7 @@
  -2.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsResidual[] = {
   3.35186619e+10,  3.88314832e+10,
  -7.94930135e+10, -8.36264489e+10,
   2.10035850e+10, -1.83280629e+10,
@@ -178,7 +178,7 @@
   6.13022939e+09, -4.46444228e+09,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsJacobian[] = {
   2.24121094e+06,  0.00000000e+00,
   2.41699219e+05,  0.00000000e+00,
   2.41699219e+05,  0.00000000e+00,
@@ -253,7 +253,7 @@
   0.00000000e+00,  8.46679688e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsResidualLumped[] = {
   3.35171172e+10,  3.88317601e+10,
  -7.94952005e+10, -8.36278881e+10,
   2.10014852e+10, -1.83287726e+10,
@@ -262,7 +262,7 @@
   6.13320302e+09, -4.46103066e+09,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsJacobianLumped[] = {
   4.21875000e+06,  4.21875000e+06,
   3.98437500e+06,  3.98437500e+06,
   3.98437500e+06,  3.98437500e+06,
@@ -284,21 +284,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::~ElasticityExplicitLgDeformGravData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -58,61 +58,61 @@
 0,1,2,3,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_quadPts[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldTIncr[] = {
   3.00000000e-01,  2.00000000e-01, -5.00000000e-01,
  -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
   2.00000000e-01,  6.00000000e-01,  3.00000000e-01,
  -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldT[] = {
   8.00000000e-01,  1.00000000e-01, -6.00000000e-01,
  -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
   1.00000000e-01,  7.00000000e-01,  2.00000000e-01,
  -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldTmdt[] = {
   1.00000000e-01,  1.00000000e-01, -3.00000000e-01,
  -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
   2.00000000e-01,  4.00000000e-01,  1.00000000e-01,
  -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsResidual[] = {
  -1.33659352e+10,  3.00655421e+11,  1.14596233e+11,
  -5.48900483e+10,  6.55599721e+11,  2.70835965e+11,
   6.45910023e+10, -1.06342951e+12, -5.20051871e+11,
   3.66834369e+09,  1.07174373e+11,  1.22363040e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsJacobian[] = {
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
   8.40625000e+05,  0.00000000e+00,  0.00000000e+00,
@@ -163,14 +163,14 @@
   0.00000000e+00,  0.00000000e+00,  8.40625000e+05,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsResidualLumped[] = {
  -1.33654308e+10,  3.00654749e+11,  1.14596233e+11,
  -5.48895440e+10,  6.55600730e+11,  2.70837310e+11,
   6.45891529e+10, -1.06343052e+12, -5.20053216e+11,
   3.66918432e+09,  1.07175045e+11,  1.22363040e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsJacobianLumped[] = {
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
   3.36250000e+06,  3.36250000e+06,  3.36250000e+06,
@@ -190,21 +190,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::~ElasticityExplicitLgDeformGravData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -64,7 +64,7 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -77,18 +77,18 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_quadPts[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -104,7 +104,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -147,7 +147,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldTIncr[] = {
   3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
  -6.00000000e-01,  8.00000000e-01,  2.00000000e-01,
   5.00000000e-01,  5.00000000e-01,  7.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01,  5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldT[] = {
   1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
  -3.00000000e-01,  4.00000000e-01,  9.00000000e-01,
   6.00000000e-01,  8.00000000e-01,  5.00000000e-01,
@@ -173,7 +173,7 @@
  -9.00000000e-01,  3.00000000e-01, -8.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldTmdt[] = {
   2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
  -4.00000000e-01,  2.00000000e-01,  3.00000000e-01,
  -5.00000000e-01,  2.00000000e-01,  2.00000000e-01,
@@ -186,7 +186,7 @@
  -4.00000000e-01,  5.00000000e-01, -7.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsResidual[] = {
   3.68904302e+10,  2.89154635e+10, -2.66246678e+10,
   1.31658958e+11, -3.38188176e+10,  2.73167999e+10,
  -3.92909711e+11, -2.10630391e+11, -2.25786587e+11,
@@ -199,7 +199,7 @@
   4.58368848e+11, -2.69312012e+11,  2.30080394e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsJacobian[] = {
   1.50251107e+06,  0.00000000e+00,  0.00000000e+00,
  -5.70500651e+05,  0.00000000e+00,  0.00000000e+00,
  -5.70500651e+05,  0.00000000e+00,  0.00000000e+00,
@@ -502,7 +502,7 @@
   0.00000000e+00,  0.00000000e+00,  3.25847917e+06,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsResidualLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsResidualLumped[] = {
   3.68908573e+10,  2.89160572e+10, -2.66286702e+10,
   1.31658131e+11, -3.38201739e+10,  2.73202854e+10,
  -3.92910621e+11, -2.10630330e+11, -2.25786601e+11,
@@ -515,7 +515,7 @@
   4.58361238e+11, -2.69324783e+11,  2.30088475e+11,
 };
 
-const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsJacobianLumped[] = {
+const PylithScalar pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsJacobianLumped[] = {
   2.57903646e+06,  2.57903646e+06,  2.57903646e+06,
   2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
   2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
@@ -541,21 +541,21 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
-  valsResidualLumped = const_cast<double*>(_valsResidualLumped);
-  valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
+  valsResidualLumped = const_cast<PylithScalar*>(_valsResidualLumped);
+  valsJacobianLumped = const_cast<PylithScalar*>(_valsJacobianLumped);
 } // constructor
 
 pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::~ElasticityExplicitLgDeformGravData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,37 +63,37 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
-  static const double _valsResidualLumped[];
+  static const PylithScalar _valsResidualLumped[];
 
-  static const double _valsJacobianLumped[];
+  static const PylithScalar _valsJacobianLumped[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitData1DLinear::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -56,50 +56,50 @@
 0,1,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_fieldTIncr[] = {
   1.20000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_fieldT[] = {
   1.10000000e+00,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_fieldTmdt[] = {
   1.00000000e+00,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_valsResidual[] = {
   3.60000000e+10,
  -3.60000000e+10,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DLinear::_valsJacobian[] = {
   4.00000000e+10,
  -4.00000000e+10,
  -4.00000000e+10,
@@ -119,19 +119,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitData1DLinear::~ElasticityImplicitData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitData1DQuadratic::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -57,22 +57,22 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -81,7 +81,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -90,31 +90,31 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_fieldTIncr[] = {
   1.20000000e+00,
   0.00000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_fieldT[] = {
   1.10000000e+00,
   1.00000000e-01,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_fieldTmdt[] = {
   1.00000000e+00,
   1.00000000e-01,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_valsResidual[] = {
   1.25333333e+11,
   3.01333333e+11,
  -4.26666667e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData1DQuadratic::_valsJacobian[] = {
   9.33333333e+10,
   1.33333333e+10,
  -1.06666667e+11,
@@ -139,19 +139,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitData1DQuadratic::~ElasticityImplicitData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitData2DLinear::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -57,55 +57,55 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_quadPts[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_fieldTIncr[] = {
   1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_fieldT[] = {
   1.60000000e+00, -8.00000000e-01,
   9.00000000e-01,  7.00000000e-01,
  -2.00000000e-01, -1.10000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_fieldTmdt[] = {
   8.00000000e-01,  1.00000000e-01,
   5.00000000e-01,  3.00000000e-01,
  -1.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_valsResidual[] = {
  -1.04842898e+11,  2.84328125e+11,
  -3.14863636e+10, -2.63281250e+11,
   1.36329261e+11, -2.10468750e+10,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DLinear::_valsJacobian[] = {
   4.35710227e+10, -2.45596591e+10,
  -1.59886364e+10,  7.35795455e+09,
  -2.75823864e+10,  1.72017045e+10,
@@ -139,19 +139,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitData2DLinear::~ElasticityImplicitData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitData2DQuadratic::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -60,7 +60,7 @@
 0,1,2,3,4,5,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -69,7 +69,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_quadPts[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -78,11 +78,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -103,7 +103,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -142,7 +142,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_fieldTIncr[] = {
  -4.00000000e-01, -6.00000000e-01,
   7.00000000e-01,  8.00000000e-01,
   0.00000000e+00,  2.00000000e-01,
@@ -151,7 +151,7 @@
  -3.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_fieldT[] = {
  -3.00000000e-01, -4.00000000e-01,
   5.00000000e-01,  6.00000000e-01,
   0.00000000e+00,  1.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_fieldTmdt[] = {
  -2.00000000e-01, -3.00000000e-01,
   3.00000000e-01,  4.00000000e-01,
   0.00000000e+00, -1.00000000e-01,
@@ -169,7 +169,7 @@
  -2.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_valsResidual[] = {
   1.29278791e+09,  2.30117470e+11,
  -1.01094274e+11, -3.41937391e+10,
  -6.14324363e+09,  2.06921658e+11,
@@ -178,7 +178,7 @@
   4.15069698e+10, -1.37586697e+10,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData2DQuadratic::_valsJacobian[] = {
   4.84911024e+10,  1.08235677e+10,
   1.04859303e+10,  1.58599175e+10,
   1.60687211e+10, -9.93272569e+09,
@@ -266,19 +266,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitData2DQuadratic::~ElasticityImplicitData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitData3DLinear::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -58,61 +58,61 @@
 0,1,2,3,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_quadPts[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_fieldTIncr[] = {
   3.00000000e-01,  2.00000000e-01, -5.00000000e-01,
  -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
   2.00000000e-01,  6.00000000e-01,  3.00000000e-01,
  -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_fieldT[] = {
   8.00000000e-01,  1.00000000e-01, -6.00000000e-01,
  -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
   1.00000000e-01,  7.00000000e-01,  2.00000000e-01,
  -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_fieldTmdt[] = {
   1.00000000e-01,  1.00000000e-01, -3.00000000e-01,
  -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
   2.00000000e-01,  4.00000000e-01,  1.00000000e-01,
  -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_valsResidual[] = {
  -6.04851301e+09,  7.19421933e+10,  7.13890954e+09,
   1.11995353e+10,  1.19496190e+11,  5.83920074e+10,
  -1.62946097e+10, -1.94715799e+11, -8.38339529e+10,
   1.11435874e+10,  3.27741636e+09,  1.83030359e+10,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DLinear::_valsJacobian[] = {
   1.08203222e+10,  5.80793061e+09, -3.19702602e+08,
   5.03531599e+09, -1.66914498e+09, -2.27509294e+09,
  -1.72763321e+10, -4.57125155e+09,  4.59107807e+09,
@@ -176,19 +176,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitData3DLinear::~ElasticityImplicitData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitData3DQuadratic::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -64,7 +64,7 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -77,18 +77,18 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_quadPts[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -104,7 +104,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -147,7 +147,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_fieldTIncr[] = {
   3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
  -6.00000000e-01,  8.00000000e-01,  2.00000000e-01,
   5.00000000e-01,  5.00000000e-01,  7.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01,  5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_fieldT[] = {
   1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
  -3.00000000e-01,  4.00000000e-01,  9.00000000e-01,
   6.00000000e-01,  8.00000000e-01,  5.00000000e-01,
@@ -173,7 +173,7 @@
  -9.00000000e-01,  3.00000000e-01, -8.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_fieldTmdt[] = {
   2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
  -4.00000000e-01,  2.00000000e-01,  3.00000000e-01,
  -5.00000000e-01,  2.00000000e-01,  2.00000000e-01,
@@ -186,7 +186,7 @@
  -4.00000000e-01,  5.00000000e-01, -7.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_valsResidual[] = {
   2.17091508e+10, -1.76856611e+10, -5.86893265e+09,
   1.31632837e+11, -4.68038741e+10,  8.29256662e+09,
  -5.63686735e+10, -5.92797533e+10, -1.13371237e+11,
@@ -199,7 +199,7 @@
   4.65874861e+10, -2.46708036e+11,  2.94377360e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitData3DQuadratic::_valsJacobian[] = {
   4.84108858e+10,  7.55490483e+09,  1.36932650e+10,
   1.51828404e+10, -1.68096633e+09,  3.67199854e+09,
   2.10939239e+09,  5.87866032e+09, -4.46211567e+09,
@@ -515,19 +515,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitData3DQuadratic::~ElasticityImplicitData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitGravData1DLinear::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -56,50 +56,50 @@
 0,1,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_fieldTIncr[] = {
   1.20000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_fieldT[] = {
   1.10000000e+00,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_fieldTmdt[] = {
   1.00000000e+00,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_valsResidual[] = {
  -2.45250000e+11,
  -3.17250000e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DLinear::_valsJacobian[] = {
   4.00000000e+10,
  -4.00000000e+10,
  -4.00000000e+10,
@@ -119,19 +119,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitGravData1DLinear::~ElasticityImplicitGravData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -57,22 +57,22 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -81,7 +81,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -90,31 +90,31 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_fieldTIncr[] = {
   1.20000000e+00,
   0.00000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_fieldT[] = {
   1.10000000e+00,
   1.00000000e-01,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_fieldTmdt[] = {
   1.00000000e+00,
   1.00000000e-01,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_valsResidual[] = {
   3.15833333e+10,
   2.07583333e+11,
  -8.01666667e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData1DQuadratic::_valsJacobian[] = {
   9.33333333e+10,
   1.33333333e+10,
  -1.06666667e+11,
@@ -139,19 +139,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitGravData1DQuadratic::~ElasticityImplicitGravData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitGravData2DLinear::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -57,55 +57,55 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_quadPts[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_fieldTIncr[] = {
   1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_fieldT[] = {
   1.60000000e+00, -8.00000000e-01,
   9.00000000e-01,  7.00000000e-01,
  -2.00000000e-01, -1.10000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_fieldTmdt[] = {
   8.00000000e-01,  1.00000000e-01,
   5.00000000e-01,  3.00000000e-01,
  -1.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_valsResidual[] = {
  -1.04842898e+11,  2.38494792e+11,
  -3.14863636e+10, -3.09114583e+11,
   1.36329261e+11, -6.68802083e+10,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DLinear::_valsJacobian[] = {
   4.35710227e+10, -2.45596591e+10,
  -1.59886364e+10,  7.35795455e+09,
  -2.75823864e+10,  1.72017045e+10,
@@ -139,19 +139,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitGravData2DLinear::~ElasticityImplicitGravData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -60,7 +60,7 @@
 0,1,2,3,4,5,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -69,7 +69,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_quadPts[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -78,11 +78,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -103,7 +103,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -142,7 +142,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_fieldTIncr[] = {
  -4.00000000e-01, -6.00000000e-01,
   7.00000000e-01,  8.00000000e-01,
   0.00000000e+00,  2.00000000e-01,
@@ -151,7 +151,7 @@
  -3.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_fieldT[] = {
  -3.00000000e-01, -4.00000000e-01,
   5.00000000e-01,  6.00000000e-01,
   0.00000000e+00,  1.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_fieldTmdt[] = {
  -2.00000000e-01, -3.00000000e-01,
   3.00000000e-01,  4.00000000e-01,
   0.00000000e+00, -1.00000000e-01,
@@ -169,7 +169,7 @@
  -2.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_valsResidual[] = {
   1.29278791e+09,  1.87929970e+11,
  -1.01094274e+11, -7.40374891e+10,
  -6.14324363e+09,  1.67077908e+11,
@@ -178,7 +178,7 @@
   4.15069698e+10, -6.53211697e+10,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_valsJacobian[] = {
   4.84911024e+10,  1.08235677e+10,
   1.04859303e+10,  1.58599175e+10,
   1.60687211e+10, -9.93272569e+09,
@@ -266,19 +266,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitGravData2DQuadratic::~ElasticityImplicitGravData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitGravData3DLinear::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -58,61 +58,61 @@
 0,1,2,3,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_quadPts[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_fieldTIncr[] = {
   3.00000000e-01,  2.00000000e-01, -5.00000000e-01,
  -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
   2.00000000e-01,  6.00000000e-01,  3.00000000e-01,
  -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_fieldT[] = {
   8.00000000e-01,  1.00000000e-01, -6.00000000e-01,
  -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
   1.00000000e-01,  7.00000000e-01,  2.00000000e-01,
  -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_fieldTmdt[] = {
   1.00000000e-01,  1.00000000e-01, -3.00000000e-01,
  -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
   2.00000000e-01,  4.00000000e-01,  1.00000000e-01,
  -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_valsResidual[] = {
  -6.04851301e+09,  7.19421933e+10, -2.64860905e+10,
   1.11995353e+10,  1.19496190e+11,  2.47670074e+10,
  -1.62946097e+10, -1.94715799e+11, -1.17458953e+11,
   1.11435874e+10,  3.27741636e+09, -1.53219641e+10,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DLinear::_valsJacobian[] = {
   1.08203222e+10,  5.80793061e+09, -3.19702602e+08,
   5.03531599e+09, -1.66914498e+09, -2.27509294e+09,
  -1.72763321e+10, -4.57125155e+09,  4.59107807e+09,
@@ -176,19 +176,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitGravData3DLinear::~ElasticityImplicitGravData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -64,7 +64,7 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -77,18 +77,18 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_quadPts[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -104,7 +104,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -147,7 +147,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_fieldTIncr[] = {
   3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
  -6.00000000e-01,  8.00000000e-01,  2.00000000e-01,
   5.00000000e-01,  5.00000000e-01,  7.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01,  5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_fieldT[] = {
   1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
  -3.00000000e-01,  4.00000000e-01,  9.00000000e-01,
   6.00000000e-01,  8.00000000e-01,  5.00000000e-01,
@@ -173,7 +173,7 @@
  -9.00000000e-01,  3.00000000e-01, -8.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_fieldTmdt[] = {
   2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
  -4.00000000e-01,  2.00000000e-01,  3.00000000e-01,
  -5.00000000e-01,  2.00000000e-01,  2.00000000e-01,
@@ -186,7 +186,7 @@
  -4.00000000e-01,  5.00000000e-01, -7.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_valsResidual[] = {
   2.17091508e+10, -1.76856611e+10, -3.16592972e+10,
   1.31632837e+11, -4.68038741e+10, -1.57191521e+10,
  -5.63686735e+10, -5.92797533e+10, -1.37382956e+11,
@@ -199,7 +199,7 @@
   4.65874861e+10, -2.46708036e+11,  1.73429444e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitGravData3DQuadratic::_valsJacobian[] = {
   4.84108858e+10,  7.55490483e+09,  1.36932650e+10,
   1.51828404e+10, -1.68096633e+09,  3.67199854e+09,
   2.10939239e+09,  5.87866032e+09, -4.46211567e+09,
@@ -515,19 +515,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitGravData3DQuadratic::~ElasticityImplicitGravData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -56,50 +56,50 @@
 0,1,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldTIncr[] = {
   1.20000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldT[] = {
   1.10000000e+00,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldTmdt[] = {
   1.00000000e+00,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsResidual[] = {
   6.04800000e+10,
  -6.04800000e+10,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsJacobian[] = {
   9.76000000e+10,
  -9.76000000e+10,
  -9.76000000e+10,
@@ -119,19 +119,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::~ElasticityImplicitLgDeformData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -57,22 +57,22 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -81,7 +81,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -90,31 +90,31 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldTIncr[] = {
   1.20000000e+00,
   0.00000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldT[] = {
   1.10000000e+00,
   1.00000000e-01,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldTmdt[] = {
   1.00000000e+00,
   1.00000000e-01,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_valsResidual[] = {
   3.54626283e+11,
   3.31341344e+11,
  -6.85967627e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_valsJacobian[] = {
   5.56003292e+11,
   7.76230453e+10,
  -6.33626337e+11,
@@ -139,19 +139,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::~ElasticityImplicitLgDeformData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -57,55 +57,55 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_quadPts[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldTIncr[] = {
   1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldT[] = {
   1.60000000e+00, -8.00000000e-01,
   9.00000000e-01,  7.00000000e-01,
  -2.00000000e-01, -1.10000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldTmdt[] = {
   8.00000000e-01,  1.00000000e-01,
   5.00000000e-01,  3.00000000e-01,
  -1.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsResidual[] = {
  -1.46216315e+12,  4.23583651e+12,
   3.60137277e+11, -4.38718860e+12,
   1.10202587e+12,  1.51352095e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsJacobian[] = {
   1.74525304e+12, -5.94796107e+11,
  -1.12489278e+12,  3.51094670e+11,
  -6.20360267e+11,  2.43701437e+11,
@@ -139,19 +139,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::~ElasticityImplicitLgDeformData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -60,7 +60,7 @@
 0,1,2,3,4,5,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -69,7 +69,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_quadPts[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -78,11 +78,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -103,7 +103,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -142,7 +142,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldTIncr[] = {
  -4.00000000e-01, -6.00000000e-01,
   7.00000000e-01,  8.00000000e-01,
   0.00000000e+00,  2.00000000e-01,
@@ -151,7 +151,7 @@
  -3.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldT[] = {
  -3.00000000e-01, -4.00000000e-01,
   5.00000000e-01,  6.00000000e-01,
   0.00000000e+00,  1.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldTmdt[] = {
  -2.00000000e-01, -3.00000000e-01,
   3.00000000e-01,  4.00000000e-01,
   0.00000000e+00, -1.00000000e-01,
@@ -169,7 +169,7 @@
  -2.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsResidual[] = {
   1.03829775e+12,  1.76362384e+12,
  -7.52244241e+11, -8.27609561e+11,
   8.03865887e+11,  1.06221366e+12,
@@ -178,7 +178,7 @@
  -3.65876743e+11,  1.04548083e+12,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsJacobian[] = {
   1.18059576e+12,  5.56624427e+11,
   2.17020537e+10,  2.82688919e+10,
   7.03170548e+11,  3.46233237e+11,
@@ -266,19 +266,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::~ElasticityImplicitLgDeformData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -58,61 +58,61 @@
 0,1,2,3,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_quadPts[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldTIncr[] = {
   3.00000000e-01,  2.00000000e-01, -5.00000000e-01,
  -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
   2.00000000e-01,  6.00000000e-01,  3.00000000e-01,
  -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldT[] = {
   8.00000000e-01,  1.00000000e-01, -6.00000000e-01,
  -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
   1.00000000e-01,  7.00000000e-01,  2.00000000e-01,
  -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldTmdt[] = {
   1.00000000e-01,  1.00000000e-01, -3.00000000e-01,
  -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
   2.00000000e-01,  4.00000000e-01,  1.00000000e-01,
  -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_valsResidual[] = {
   2.79474210e+11,  1.80174876e+12,  1.26556850e+12,
   6.44632598e+11,  4.29759382e+12,  2.88601168e+12,
  -1.13174893e+12, -6.94850554e+12, -4.65500318e+12,
   2.07642124e+11,  8.49162957e+11,  5.03422995e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_valsJacobian[] = {
   2.94874367e+11,  6.16951570e+10,  3.89461610e+10,
   5.48150595e+11,  1.11804684e+11,  7.10898629e+10,
  -9.45152856e+11, -2.08621385e+11, -1.32482083e+11,
@@ -176,19 +176,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::~ElasticityImplicitLgDeformData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -64,7 +64,7 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -77,18 +77,18 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_quadPts[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -104,7 +104,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -147,7 +147,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldTIncr[] = {
   3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
  -6.00000000e-01,  8.00000000e-01,  2.00000000e-01,
   5.00000000e-01,  5.00000000e-01,  7.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01,  5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldT[] = {
   1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
  -3.00000000e-01,  4.00000000e-01,  9.00000000e-01,
   6.00000000e-01,  8.00000000e-01,  5.00000000e-01,
@@ -173,7 +173,7 @@
  -9.00000000e-01,  3.00000000e-01, -8.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldTmdt[] = {
   2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
  -4.00000000e-01,  2.00000000e-01,  3.00000000e-01,
  -5.00000000e-01,  2.00000000e-01,  2.00000000e-01,
@@ -186,7 +186,7 @@
  -4.00000000e-01,  5.00000000e-01, -7.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_valsResidual[] = {
   2.83531193e+11,  6.85360097e+11, -7.35048936e+11,
   8.17609945e+11, -2.46059924e+11,  5.76994362e+11,
  -1.61369461e+12, -3.33728123e+11, -1.98412259e+12,
@@ -199,7 +199,7 @@
   1.79162831e+12, -3.54139567e+12,  4.51463965e+12,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_valsJacobian[] = {
   4.65661925e+11,  1.45207670e+11,  8.48382894e+10,
   1.24772472e+11,  7.41894782e+10, -4.42698676e+10,
   7.18213188e+10,  5.09242305e+09,  4.05530373e+10,
@@ -515,19 +515,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::~ElasticityImplicitLgDeformData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -56,50 +56,50 @@
 0,1,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldTIncr[] = {
   1.20000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldT[] = {
   1.10000000e+00,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldTmdt[] = {
   1.00000000e+00,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_valsResidual[] = {
  -2.20770000e+11,
  -3.41730000e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_valsJacobian[] = {
   9.76000000e+10,
  -9.76000000e+10,
  -9.76000000e+10,
@@ -119,19 +119,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::~ElasticityImplicitLgDeformGravData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_matLabel = "elastic strain 1-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -57,22 +57,22 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -81,7 +81,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -90,31 +90,31 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldTIncr[] = {
   1.20000000e+00,
   0.00000000e+00,
   1.70000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldT[] = {
   1.10000000e+00,
   1.00000000e-01,
   1.50000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldTmdt[] = {
   1.00000000e+00,
   1.00000000e-01,
   1.30000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_valsResidual[] = {
   2.60876283e+11,
   2.37591344e+11,
  -1.06096763e+12,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_valsJacobian[] = {
   5.56003292e+11,
   7.76230453e+10,
  -6.33626337e+11,
@@ -139,19 +139,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::~ElasticityImplicitLgDeformGravData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -57,55 +57,55 @@
 0,1,2,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_quadPts[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldTIncr[] = {
   1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldT[] = {
   1.60000000e+00, -8.00000000e-01,
   9.00000000e-01,  7.00000000e-01,
  -2.00000000e-01, -1.10000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldTmdt[] = {
   8.00000000e-01,  1.00000000e-01,
   5.00000000e-01,  3.00000000e-01,
  -1.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_valsResidual[] = {
  -1.46216315e+12,  4.19000317e+12,
   3.60137277e+11, -4.43302194e+12,
   1.10202587e+12,  1.05518761e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_valsJacobian[] = {
   1.74525304e+12, -5.94796107e+11,
  -1.12489278e+12,  3.51094670e+11,
  -6.20360267e+11,  2.43701437e+11,
@@ -139,19 +139,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::~ElasticityImplicitLgDeformGravData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_matLabel = "elastic strain 2-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -60,7 +60,7 @@
 0,1,2,3,4,5,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -69,7 +69,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_quadPts[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -78,11 +78,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -103,7 +103,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -142,7 +142,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_fieldTIncr[] = {
  -4.00000000e-01, -6.00000000e-01,
   7.00000000e-01,  8.00000000e-01,
   0.00000000e+00,  2.00000000e-01,
@@ -151,7 +151,7 @@
  -3.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_fieldT[] = {
  -3.00000000e-01, -4.00000000e-01,
   5.00000000e-01,  6.00000000e-01,
   0.00000000e+00,  1.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_fieldTmdt[] = {
  -2.00000000e-01, -3.00000000e-01,
   3.00000000e-01,  4.00000000e-01,
   0.00000000e+00, -1.00000000e-01,
@@ -169,7 +169,7 @@
  -2.00000000e-01, -6.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_valsResidual[] = {
   1.03829775e+12,  1.72143634e+12,
  -7.52244241e+11, -8.67453311e+11,
   8.03865887e+11,  1.02236991e+12,
@@ -178,7 +178,7 @@
  -3.65876743e+11,  9.93918331e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_valsJacobian[] = {
   1.18059576e+12,  5.56624427e+11,
   2.17020537e+10,  2.82688919e+10,
   7.03170548e+11,  3.46233237e+11,
@@ -266,19 +266,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::~ElasticityImplicitLgDeformGravData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -58,61 +58,61 @@
 0,1,2,3,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_quadPts[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldTIncr[] = {
   3.00000000e-01,  2.00000000e-01, -5.00000000e-01,
  -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
   2.00000000e-01,  6.00000000e-01,  3.00000000e-01,
  -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldT[] = {
   8.00000000e-01,  1.00000000e-01, -6.00000000e-01,
  -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
   1.00000000e-01,  7.00000000e-01,  2.00000000e-01,
  -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldTmdt[] = {
   1.00000000e-01,  1.00000000e-01, -3.00000000e-01,
  -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
   2.00000000e-01,  4.00000000e-01,  1.00000000e-01,
  -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_valsResidual[] = {
   2.79474210e+11,  1.80174876e+12,  1.23194350e+12,
   6.44632598e+11,  4.29759382e+12,  2.85238668e+12,
  -1.13174893e+12, -6.94850554e+12, -4.68862818e+12,
   2.07642124e+11,  8.49162957e+11,  4.69797995e+11,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_valsJacobian[] = {
   2.94874367e+11,  6.16951570e+10,  3.89461610e+10,
   5.48150595e+11,  1.11804684e+11,  7.10898629e+10,
  -9.45152856e+11, -2.08621385e+11, -1.32482083e+11,
@@ -176,19 +176,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::~ElasticityImplicitLgDeformGravData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -41,13 +41,13 @@
 
 const char* pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_matLabel = "elastic isotropic 3-D";
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_dt =   1.00000000e-02;
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_dt =   1.00000000e-02;
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_gravityVec[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -64,7 +64,7 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -77,18 +77,18 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_quadPts[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -104,7 +104,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -147,7 +147,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldTIncr[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldTIncr[] = {
   3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
  -6.00000000e-01,  8.00000000e-01,  2.00000000e-01,
   5.00000000e-01,  5.00000000e-01,  7.00000000e-01,
@@ -160,7 +160,7 @@
  -1.00000000e-01,  5.00000000e-01, -9.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldT[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldT[] = {
   1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
  -3.00000000e-01,  4.00000000e-01,  9.00000000e-01,
   6.00000000e-01,  8.00000000e-01,  5.00000000e-01,
@@ -173,7 +173,7 @@
  -9.00000000e-01,  3.00000000e-01, -8.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldTmdt[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldTmdt[] = {
   2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
  -4.00000000e-01,  2.00000000e-01,  3.00000000e-01,
  -5.00000000e-01,  2.00000000e-01,  2.00000000e-01,
@@ -186,7 +186,7 @@
  -4.00000000e-01,  5.00000000e-01, -7.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_valsResidual[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_valsResidual[] = {
   2.83531193e+11,  6.85360097e+11, -7.60839301e+11,
   8.17609945e+11, -2.46059924e+11,  5.52982643e+11,
  -1.61369461e+12, -3.33728123e+11, -2.00813431e+12,
@@ -199,7 +199,7 @@
   1.79162831e+12, -3.54139567e+12,  4.39369174e+12,
 };
 
-const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_valsJacobian[] = {
+const PylithScalar pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_valsJacobian[] = {
   4.65661925e+11,  1.45207670e+11,  8.48382894e+10,
   1.24772472e+11,  7.41894782e+10, -4.42698676e+10,
   7.18213188e+10,  5.09242305e+09,  4.05530373e+10,
@@ -515,19 +515,19 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  fieldTIncr = const_cast<double*>(_fieldTIncr);
-  fieldT = const_cast<double*>(_fieldT);
-  fieldTmdt = const_cast<double*>(_fieldTmdt);
-  valsResidual = const_cast<double*>(_valsResidual);
-  valsJacobian = const_cast<double*>(_valsJacobian);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  fieldTIncr = const_cast<PylithScalar*>(_fieldTIncr);
+  fieldT = const_cast<PylithScalar*>(_fieldT);
+  fieldTmdt = const_cast<PylithScalar*>(_fieldTmdt);
+  valsResidual = const_cast<PylithScalar*>(_valsResidual);
+  valsJacobian = const_cast<PylithScalar*>(_valsJacobian);
 } // constructor
 
 pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::~ElasticityImplicitLgDeformGravData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -63,33 +63,33 @@
 
   static const char* _matLabel;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
-  static const double _gravityVec[];
+  static const PylithScalar _gravityVec[];
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _fieldTIncr[];
+  static const PylithScalar _fieldTIncr[];
 
-  static const double _fieldT[];
+  static const PylithScalar _fieldT[];
 
-  static const double _fieldTmdt[];
+  static const PylithScalar _fieldTmdt[];
 
-  static const double _valsResidual[];
+  static const PylithScalar _valsResidual[];
 
-  static const double _valsJacobian[];
+  static const PylithScalar _valsJacobian[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,7 +20,7 @@
 
 const int pylith::feassemble::GeomDataHex3D::_cellDim = 3;
 
-const double pylith::feassemble::GeomDataHex3D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataHex3D::_gravityVec[] = {
   0.0, 0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataHex3D::_spaceDim = 3;
@@ -29,7 +29,7 @@
 
 const int pylith::feassemble::GeomDataHex3D::_numLocs = 9;
 
-const double pylith::feassemble::GeomDataHex3D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataHex3D::_vertices[] = {
   -1.3, -1.4, -0.8,
   1.2, -1.5, -0.9,
   1.4, 0.7, -1.2,
@@ -40,7 +40,7 @@
   -1.8, 0.3, 2.2,
 };
 
-const double pylith::feassemble::GeomDataHex3D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataHex3D::_locations[] = {
  -1.0,-1.0,-1.0,
   1.0,-1.0,-1.0,
  -1.0, 1.0,-1.0,
@@ -53,7 +53,7 @@
 };
 
 // Reference cell has volume of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataHex3D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataHex3D::_jacobian[] = {
   2.5/2.0, -0.3/2.0, -0.4/2.0, -0.1/2.0, 1.8/2.0, 0.6/2.0, -0.1/2.0, 0.3/2.0, 2.6/2.0,
   2.5/2.0, 0.2/2.0, 0.9/2.0, -0.1/2.0, 2.2/2.0, -0.2/2.0, -0.1/2.0, -0.3/2.0, 1.5/2.0,
   3.0/2.0, -0.3/2.0, -0.2/2.0, 0.3/2.0, 1.8/2.0, -0.1/2.0, -0.7/2.0, 0.3/2.0, 2.7/2.0,
@@ -66,7 +66,7 @@
 };
 
 // Reference cell has volume of 2.0, so divide by 8.0;
-const double pylith::feassemble::GeomDataHex3D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataHex3D::_jacobianDet[] = {
   11.13/8.0,
   8.359/8.0,
   14.622/8.0,
@@ -84,11 +84,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataHex3D::~GeomDataHex3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,31 +22,31 @@
 
 const int pylith::feassemble::GeomDataLine1D::_spaceDim = 1;
 
-const double pylith::feassemble::GeomDataLine1D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataLine1D::_gravityVec[] = {
   -9.80665 };
 
 const int pylith::feassemble::GeomDataLine1D::_numCorners = 2;
 
 const int pylith::feassemble::GeomDataLine1D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataLine1D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataLine1D::_vertices[] = {
   1.2,
   4.5
 };
 
-const double pylith::feassemble::GeomDataLine1D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataLine1D::_locations[] = {
   0.345,
   0.459
 };
 
 // Reference cell has length of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataLine1D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataLine1D::_jacobian[] = {
   3.3/2.0,
   3.3/2.0
 };
 
 // Reference cell has length of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataLine1D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataLine1D::_jacobianDet[] = {
   3.3/2.0,
   3.3/2.0
 };
@@ -57,11 +57,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataLine1D::~GeomDataLine1D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,31 +22,31 @@
 
 const int pylith::feassemble::GeomDataLine2D::_spaceDim = 2;
 
-const double pylith::feassemble::GeomDataLine2D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataLine2D::_gravityVec[] = {
   0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataLine2D::_numCorners = 2;
 
 const int pylith::feassemble::GeomDataLine2D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataLine2D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataLine2D::_vertices[] = {
   1.2, 2.4,
   4.5, -1.4
 };
 
-const double pylith::feassemble::GeomDataLine2D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataLine2D::_locations[] = {
   0.345,
   0.459
 };
 
 // Reference cell has length of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataLine2D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataLine2D::_jacobian[] = {
   3.3/2.0, -3.8/2.0,
   3.3/2.0, -3.8/2.0
 };
 
 // Reference cell has length of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataLine2D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataLine2D::_jacobianDet[] = {
   5.0328918128646478/2.0,
   5.0328918128646478/2.0
 };
@@ -57,11 +57,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataLine2D::~GeomDataLine2D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,31 +22,31 @@
 
 const int pylith::feassemble::GeomDataLine3D::_spaceDim = 3;
 
-const double pylith::feassemble::GeomDataLine3D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataLine3D::_gravityVec[] = {
   0.0, 0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataLine3D::_numCorners = 2;
 
 const int pylith::feassemble::GeomDataLine3D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataLine3D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataLine3D::_vertices[] = {
   1.2, 2.3, 2.4,
   4.5, -1.5, 5.3
 };
 
-const double pylith::feassemble::GeomDataLine3D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataLine3D::_locations[] = {
   0.345,
   0.459
 };
 
 // Reference cell has length of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataLine3D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataLine3D::_jacobian[] = {
   3.3/2.0, -3.8/2.0, 2.9/2.0,
   3.3/2.0, -3.8/2.0, 2.9/2.0
 };
 
 // Reference cell has length of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataLine3D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataLine3D::_jacobianDet[] = {
   5.8086142925830417/2.0,
   5.8086142925830417/2.0
 };
@@ -57,11 +57,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataLine3D::~GeomDataLine3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,29 +22,29 @@
 
 const int pylith::feassemble::GeomDataPoint1D::_spaceDim = 1;
 
-const double pylith::feassemble::GeomDataPoint1D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint1D::_gravityVec[] = {
   -9.80665 };
 
 const int pylith::feassemble::GeomDataPoint1D::_numCorners = 1;
 
 const int pylith::feassemble::GeomDataPoint1D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataPoint1D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint1D::_vertices[] = {
   1.2,
   4.5
 };
 
-const double pylith::feassemble::GeomDataPoint1D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint1D::_locations[] = {
   0.0,
   0.0
 };
 
-const double pylith::feassemble::GeomDataPoint1D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint1D::_jacobian[] = {
   1.0,
   1.0
 };
 
-const double pylith::feassemble::GeomDataPoint1D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint1D::_jacobianDet[] = {
   1.0,
   1.0
 };
@@ -55,11 +55,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataPoint1D::~GeomDataPoint1D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,29 +22,29 @@
 
 const int pylith::feassemble::GeomDataPoint2D::_spaceDim = 2;
 
-const double pylith::feassemble::GeomDataPoint2D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint2D::_gravityVec[] = {
   0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataPoint2D::_numCorners = 1;
 
 const int pylith::feassemble::GeomDataPoint2D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataPoint2D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint2D::_vertices[] = {
   1.3, 5.4,
   4.1, 7.5
 };
 
-const double pylith::feassemble::GeomDataPoint2D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint2D::_locations[] = {
   0.0,
   0.0
 };
 
-const double pylith::feassemble::GeomDataPoint2D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint2D::_jacobian[] = {
   1.0,
   1.0
 };
 
-const double pylith::feassemble::GeomDataPoint2D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint2D::_jacobianDet[] = {
   1.0,
   1.0
 };
@@ -55,11 +55,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataPoint2D::~GeomDataPoint2D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,29 +22,29 @@
 
 const int pylith::feassemble::GeomDataPoint3D::_spaceDim = 3;
 
-const double pylith::feassemble::GeomDataPoint3D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint3D::_gravityVec[] = {
   0.0, 0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataPoint3D::_numCorners = 1;
 
 const int pylith::feassemble::GeomDataPoint3D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataPoint3D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint3D::_vertices[] = {
   1.22, 4.35, 6.56,
   4.45, 5.62, 2.55
 };
 
-const double pylith::feassemble::GeomDataPoint3D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint3D::_locations[] = {
   0.0,
   0.0
 };
 
-const double pylith::feassemble::GeomDataPoint3D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint3D::_jacobian[] = {
   1.0,
   1.0
 };
 
-const double pylith::feassemble::GeomDataPoint3D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataPoint3D::_jacobianDet[] = {
   1.0,
   1.0
 };
@@ -55,11 +55,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataPoint3D::~GeomDataPoint3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,21 +22,21 @@
 
 const int pylith::feassemble::GeomDataQuad2D::_spaceDim = 2;
 
-const double pylith::feassemble::GeomDataQuad2D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad2D::_gravityVec[] = {
   0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataQuad2D::_numCorners = 4;
 
 const int pylith::feassemble::GeomDataQuad2D::_numLocs = 5;
 
-const double pylith::feassemble::GeomDataQuad2D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad2D::_vertices[] = {
   0.3, 0.1,
   0.8, -0.2,
   0.7, 1.2,
   -0.1, 1.6,
 };
 
-const double pylith::feassemble::GeomDataQuad2D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad2D::_locations[] = {
  -1.0, -1.0,
   1.0, -1.0,
  -1.0,  1.0,
@@ -45,7 +45,7 @@
 };
 
 // Reference cell has area of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataQuad2D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad2D::_jacobian[] = {
   0.5/2.0, -0.4/2.0, -0.3/2.0, 1.5/2.0,
   0.5/2.0, -0.1/2.0, -0.3/2.0, 1.4/2.0,
   0.8/2.0, -0.4/2.0, -0.4/2.0, 1.5/2.0,
@@ -54,7 +54,7 @@
 };
 
 // Reference cell has area of 2.0, so divide by 4.0;
-const double pylith::feassemble::GeomDataQuad2D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad2D::_jacobianDet[] = {
   0.63/4.0,
   0.67/4.0,
   1.04/4.0,
@@ -68,11 +68,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataQuad2D::~GeomDataQuad2D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,21 +22,21 @@
 
 const int pylith::feassemble::GeomDataQuad3D::_spaceDim = 3;
 
-const double pylith::feassemble::GeomDataQuad3D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad3D::_gravityVec[] = {
   0.0, 0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataQuad3D::_numCorners = 4;
 
 const int pylith::feassemble::GeomDataQuad3D::_numLocs = 5;
 
-const double pylith::feassemble::GeomDataQuad3D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad3D::_vertices[] = {
   1.1, -0.9, 0.1,
   1.0, 0.7, 0.8,
   -0.4, 0.6, 1.2,
   -0.3, -1.3, -0.1,
 };
 
-const double pylith::feassemble::GeomDataQuad3D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad3D::_locations[] = {
  -1.0, -1.0,
   1.0, -1.0,
  -1.0,  1.0,
@@ -45,7 +45,7 @@
 };
 
 // Reference cell has area of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataQuad3D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad3D::_jacobian[] = {
   -0.1/2.0, -1.4/2.0, 1.6/2.0, -0.4/2.0, 0.7/2.0, -0.2/2.0,
   -0.1/2.0, -1.4/2.0, 1.6/2.0, -0.1/2.0, 0.7/2.0, 0.4/2.0,
   -0.1/2.0, -1.4/2.0, 1.9/2.0, -0.4/2.0, 1.3/2.0, -0.2/2.0,
@@ -54,7 +54,7 @@
 };
 
 // Reference cell has area of 2.0, so divide by 4.0;
-const double pylith::feassemble::GeomDataQuad3D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataQuad3D::_jacobianDet[] = {
   2.4899799195977463/4.0,
   2.5397243944963788/4.0,
   3.2703516630478742/4.0,
@@ -68,11 +68,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataQuad3D::~GeomDataQuad3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,33 +22,33 @@
 
 const int pylith::feassemble::GeomDataTet3D::_spaceDim = 3;
 
-const double pylith::feassemble::GeomDataTet3D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataTet3D::_gravityVec[] = {
   0.0, 0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataTet3D::_numCorners = 4;
 
 const int pylith::feassemble::GeomDataTet3D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataTet3D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataTet3D::_vertices[] = {
   -1.3, -0.8, 0.2,
   2.1, -0.7, 0.1,
   -1.0, 2.4, -0.3,
   -0.1, 0.2, 3.0
 };
 
-const double pylith::feassemble::GeomDataTet3D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataTet3D::_locations[] = {
   0.345, 0.397, 0.319,
   0.459, 0.727, 0.693
 };
 
 // Reference cell has volume of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataTet3D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataTet3D::_jacobian[] = {
   3.4/2.0, 0.3/2.0, 1.2/2.0, 0.1/2.0, 3.2/2.0, 1.0/2.0, -0.1/2.0, -0.5/2.0, 2.8/2.0,
   3.4/2.0, 0.3/2.0, 1.2/2.0, 0.1/2.0, 3.2/2.0, 1.0/2.0, -0.1/2.0, -0.5/2.0, 2.8/2.0
 };
 
 // Reference cell has volume of 2.0, so divide by 8.0;
-const double pylith::feassemble::GeomDataTet3D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataTet3D::_jacobianDet[] = {
   32.374/8.0,
   32.374/8.0
 };
@@ -59,11 +59,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataTet3D::~GeomDataTet3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,32 +22,32 @@
 
 const int pylith::feassemble::GeomDataTri2D::_spaceDim = 2;
 
-const double pylith::feassemble::GeomDataTri2D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataTri2D::_gravityVec[] = {
   0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataTri2D::_numCorners = 3;
 
 const int pylith::feassemble::GeomDataTri2D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataTri2D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataTri2D::_vertices[] = {
   1.0,  1.2,
   3.0,  2.0,
   1.5,  4.0
 };
 
-const double pylith::feassemble::GeomDataTri2D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataTri2D::_locations[] = {
   0.345, 0.397,
   0.459, 0.727
 };
 
 // Reference cell has area of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataTri2D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataTri2D::_jacobian[] = {
   2.0/2.0, 0.5/2.0, 0.8/2.0, 2.8/2.0,
   2.0/2.0, 0.5/2.0, 0.8/2.0, 2.8/2.0
 };
 
 // Reference cell has area of 2.0, so divide by 4.0;
-const double pylith::feassemble::GeomDataTri2D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataTri2D::_jacobianDet[] = {
   5.2/4.0,
   5.2/4.0
 };
@@ -58,11 +58,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataTri2D::~GeomDataTri2D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,32 +22,32 @@
 
 const int pylith::feassemble::GeomDataTri3D::_spaceDim = 3;
 
-const double pylith::feassemble::GeomDataTri3D::_gravityVec[] = {
+const PylithScalar pylith::feassemble::GeomDataTri3D::_gravityVec[] = {
   0.0, 0.0, -9.80665 };
 
 const int pylith::feassemble::GeomDataTri3D::_numCorners = 3;
 
 const int pylith::feassemble::GeomDataTri3D::_numLocs = 2;
 
-const double pylith::feassemble::GeomDataTri3D::_vertices[] = {
+const PylithScalar pylith::feassemble::GeomDataTri3D::_vertices[] = {
   1.2, 1.3, -0.4,
   -0.3, -1.7, 0.1,
   -0.1, 0.4, 1.4
 };
 
-const double pylith::feassemble::GeomDataTri3D::_locations[] = {
+const PylithScalar pylith::feassemble::GeomDataTri3D::_locations[] = {
   0.345, 0.397,
   0.459, 0.727
 };
 
 // Reference cell has area of 2.0, so divide by 2.0;
-const double pylith::feassemble::GeomDataTri3D::_jacobian[] = {
+const PylithScalar pylith::feassemble::GeomDataTri3D::_jacobian[] = {
   -1.5/2.0, -1.3/2.0, -3.0/2.0, -0.9/2.0, 0.5/2.0, 1.8/2.0,
   -1.5/2.0, -1.3/2.0, -3.0/2.0, -0.9/2.0, 0.5/2.0, 1.8/2.0
 };
 
 // Reference cell has area of 2.0, so divide by 4.0;
-const double pylith::feassemble::GeomDataTri3D::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::GeomDataTri3D::_jacobianDet[] = {
   5.933590818383081/4.0,
   5.933590818383081/4.0
 };
@@ -58,11 +58,11 @@
   spaceDim = _spaceDim;
   numCorners = _numCorners;
   numLocs = _numLocs;
-  gravityVec = const_cast<double*>(_gravityVec);
-  vertices = const_cast<double*>(_vertices);
-  locations = const_cast<double*>(_locations);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
+  gravityVec = const_cast<PylithScalar*>(_gravityVec);
+  vertices = const_cast<PylithScalar*>(_vertices);
+  locations = const_cast<PylithScalar*>(_locations);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataTri3D::~GeomDataTri3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,11 +48,11 @@
 
   static const int _numLocs; ///< Number of locations for computing Jacobian
 
-  static const double _gravityVec[]; ///< Constant gravity vector
-  static const double _vertices[]; ///< Coordinates of cell's vertices
-  static const double _locations[]; ///< Locations to compute Jacobian
-  static const double _jacobian[]; ///< Jacobian at locations
-  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
+  static const PylithScalar _gravityVec[]; ///< Constant gravity vector
+  static const PylithScalar _vertices[]; ///< Coordinates of cell's vertices
+  static const PylithScalar _locations[]; ///< Locations to compute Jacobian
+  static const PylithScalar _jacobian[]; ///< Jacobian at locations
+  static const PylithScalar _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_feassemble_integratordata_hh)
 #define pylith_feassemble_integratordata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace feassemble {
      class IntegratorData;
@@ -43,23 +45,23 @@
   /// @name Mesh information
   //@{
   int spaceDim; ///< Number of dimensions in vertex coordinates
-  double* gravityVec; ///< Constant gravity vector (for now)
+  PylithScalar* gravityVec; ///< Constant gravity vector (for now)
   int cellDim; ///< Number of dimensions associated with cell
   int numVertices; ///< Number of vertices
   int numCells; ///< Number of cells
-  double* vertices; ///< Coordinates of vertices
+  PylithScalar* vertices; ///< Coordinates of vertices
   int* cells; ///< Indices of vertices in cells
-  double* verticesRef; ///< Coordinates of vertices in ref cell (dual basis)
+  PylithScalar* verticesRef; ///< Coordinates of vertices in ref cell (dual basis)
   //@}
 
   /// @name Quadrature information
   //@{
   int numBasis; ///< Number of vertices in cell
   int numQuadPts; ///< Number of quadrature points
-  double* quadPts; ///< Coordinates of quad pts in ref cell
-  double* quadWts; ///< Weights of quadrature points
-  double* basis; ///< Basis fns at quadrature points
-  double* basisDerivRef; ///< Derivatives of basis fns at quad pts
+  PylithScalar* quadPts; ///< Coordinates of quad pts in ref cell
+  PylithScalar* quadWts; ///< Weights of quadrature points
+  PylithScalar* basis; ///< Basis fns at quadrature points
+  PylithScalar* basisDerivRef; ///< Derivatives of basis fns at quad pts
   //@}
 
   /// @name Material information
@@ -72,16 +74,16 @@
 
   /// @name Input fields
   //@{
-  double dt; ///< Time step
-  double* fieldTIncr; ///< Input field increment for time t to time t+dt.
-  double* fieldT; ///< Input field at time t.
-  double* fieldTmdt; ///< Input field at time t-dt.
+  PylithScalar dt; ///< Time step
+  PylithScalar* fieldTIncr; ///< Input field increment for time t to time t+dt.
+  PylithScalar* fieldT; ///< Input field at time t.
+  PylithScalar* fieldTmdt; ///< Input field at time t-dt.
   //@}
 
   /// @name Calculated values.
   //@{
-  double* valsResidual; ///< Expected values from residual calculation.
-  double* valsJacobian; ///< Expected values from Jacobian calculation.
+  PylithScalar* valsResidual; ///< Expected values from residual calculation.
+  PylithScalar* valsJacobian; ///< Expected values from Jacobian calculation.
   //@}
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_feassemble_quadraturedata_hh)
 #define pylith_feassemble_quadraturedata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace feassemble {
      class QuadratureData;
@@ -47,20 +49,20 @@
   int numBasis; ///< Number of vertices in cell
   int numQuadPts; ///< Number of quadrature points
 
-  double* vertices; ///< Pointer to coordinates of vertices
+  PylithScalar* vertices; ///< Pointer to coordinates of vertices
   int* cells; ///< Pointer to indices of vertices in cells
 
-  double* verticesRef; ///< Coordinates of vertices in ref cell
-  double* quadPtsRef; ///< Coordinates of quad pts in ref cell
-  double* quadWts; ///< Weights of quadrature points
-  double* quadPts; ///< Coordinates of quad pts in cell
+  PylithScalar* verticesRef; ///< Coordinates of vertices in ref cell
+  PylithScalar* quadPtsRef; ///< Coordinates of quad pts in ref cell
+  PylithScalar* quadWts; ///< Weights of quadrature points
+  PylithScalar* quadPts; ///< Coordinates of quad pts in cell
 
-  double* basis; ///< Basis fns at quadrature points
-  double* basisDerivRef; ///< Derivatices of basis fns at quad pts (cell)
-  double* basisDeriv; ///< Derivatices of basis fns at quad pts (global)
-  double* jacobian; ///< Jacobian at quadrature points
-  double* jacobianDet; ///< Determinant of quadrature points
-  double* jacobianInv; ///< Inverse of Jacobian at quadruature points
+  PylithScalar* basis; ///< Basis fns at quadrature points
+  PylithScalar* basisDerivRef; ///< Derivatices of basis fns at quad pts (cell)
+  PylithScalar* basisDeriv; ///< Derivatices of basis fns at quad pts (global)
+  PylithScalar* jacobian; ///< Jacobian at quadrature points
+  PylithScalar* jacobianDet; ///< Determinant of quadrature points
+  PylithScalar* jacobianInv; ///< Inverse of Jacobian at quadruature points
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData1DLinear::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData1DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
 };
@@ -42,47 +42,47 @@
        0,       1,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_quadPtsRef[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_quadPts[] = {
   8.75000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_basisDeriv[] = {
  -4.44444444e-01,
   4.44444444e-01,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_jacobian[] = {
   1.12500000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_jacobianDet[] = {
   1.12500000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DLinear::_jacobianInv[] = {
   8.88888889e-01,
 };
 
@@ -94,18 +94,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData1DLinear::~QuadratureData1DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData1DQuadratic::_numQuadPts = 2;
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_vertices[] = {
  -2.50000000e-01,
   2.00000000e+00,
   8.75000000e-01,
@@ -43,27 +43,27 @@
        0,       1,       2,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_quadPtsRef[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_quadPts[] = {
   2.25480947e-01,
   1.52451905e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -72,7 +72,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -81,7 +81,7 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_basisDeriv[] = {
  -9.57644684e-01,
  -6.87557948e-02,
   1.02640048e+00,
@@ -90,16 +90,16 @@
  -1.02640048e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_jacobian[] = {
   1.12500000e+00,
   1.12500000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_jacobianDet[] = {
   1.12500000e+00,  1.12500000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1DQuadratic::_jacobianInv[] = {
   8.88888889e-01,
   8.88888889e-01,
 };
@@ -112,18 +112,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData1DQuadratic::~QuadratureData1DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData1Din2DLinear::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_vertices[] = {
  -2.00000000e-01, -5.00000000e-01,
   7.00000000e-01,  3.00000000e-01,
 };
@@ -42,48 +42,48 @@
        0,       1,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_quadPtsRef[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_quadPts[] = {
   2.50000000e-01, -1.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_basisDeriv[] = {
  -1.11111111e+00, -1.25000000e+00,
   1.11111111e+00,  1.25000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_jacobian[] = {
   4.50000000e-01,
   4.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_jacobianDet[] = {
   6.02079729e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DLinear::_jacobianInv[] = {
   2.22222222e+00,  2.50000000e+00,
 };
 
@@ -95,18 +95,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData1Din2DLinear::~QuadratureData1Din2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData1Din2DQuadratic::_numQuadPts = 2;
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_vertices[] = {
  -2.00000000e-01, -5.00000000e-01,
   7.00000000e-01,  3.00000000e-01,
   2.50000000e-01, -1.00000000e-01,
@@ -43,27 +43,27 @@
        0,       1,       2,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_quadPtsRef[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_quadPts[] = {
  -9.80762114e-03, -3.30940108e-01,
   5.09807621e-01,  1.30940108e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -72,7 +72,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -81,7 +81,7 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDeriv[] = {
  -2.39411171e+00, -2.69337567e+00,
  -1.71889487e-01, -1.93375673e-01,
   2.56600120e+00,  2.88675135e+00,
@@ -90,18 +90,18 @@
  -2.56600120e+00, -2.88675135e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobian[] = {
   4.50000000e-01,
   4.00000000e-01,
   4.50000000e-01,
   4.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianDet[] = {
   6.02079729e-01,  6.02079729e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianInv[] = {
   2.22222222e+00,  2.50000000e+00,
   2.22222222e+00,  2.50000000e+00,
 };
@@ -114,18 +114,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData1Din2DQuadratic::~QuadratureData1Din2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData1Din3DLinear::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_vertices[] = {
   1.00000000e+00, -1.50000000e+00, -2.00000000e+00,
  -5.00000000e-01,  2.00000000e+00,  3.00000000e+00,
 };
@@ -42,49 +42,49 @@
        0,       1,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_quadPtsRef[] = {
   0.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_quadPts[] = {
   2.50000000e-01,  2.50000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_basis[] = {
   5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_basisDeriv[] = {
   6.66666667e-01, -2.85714286e-01, -2.00000000e-01,
  -6.66666667e-01,  2.85714286e-01,  2.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_jacobian[] = {
  -7.50000000e-01,
   1.75000000e+00,
   2.50000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_jacobianDet[] = {
   3.14245127e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DLinear::_jacobianInv[] = {
  -1.33333333e+00,  5.71428571e-01,  4.00000000e-01,
 };
 
@@ -96,18 +96,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData1Din3DLinear::~QuadratureData1Din3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData1Din3DQuadratic::_numQuadPts = 2;
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_vertices[] = {
   1.00000000e+00, -1.50000000e+00, -2.00000000e+00,
  -5.00000000e-01,  2.00000000e+00,  3.00000000e+00,
   2.50000000e-01,  2.50000000e-01,  5.00000000e-01,
@@ -43,27 +43,27 @@
        0,       1,       2,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_verticesRef[] = {
  -1.00000000e+00,
   1.00000000e+00,
   0.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_quadPtsRef[] = {
  -5.77350269e-01,
   5.77350269e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_quadWts[] = {
   1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_quadPts[] = {
   6.83012702e-01, -7.60362971e-01, -9.43375673e-01,
  -1.83012702e-01,  1.26036297e+00,  1.94337567e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_basis[] = {
   4.55341801e-01,
  -1.22008468e-01,
   6.66666667e-01,
@@ -72,7 +72,7 @@
   6.66666667e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
  -7.73502692e-02,
   1.15470054e+00,
@@ -81,7 +81,7 @@
  -1.15470054e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDeriv[] = {
   1.43646703e+00, -6.15628725e-01, -4.30940108e-01,
   1.03133692e-01, -4.42001538e-02, -3.09401077e-02,
  -1.53960072e+00,  6.59828879e-01,  4.61880215e-01,
@@ -90,7 +90,7 @@
   1.53960072e+00, -6.59828879e-01, -4.61880215e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobian[] = {
  -7.50000000e-01,
   1.75000000e+00,
   2.50000000e+00,
@@ -99,11 +99,11 @@
   2.50000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianDet[] = {
   3.14245127e+00,  3.14245127e+00,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianInv[] = {
  -1.33333333e+00,  5.71428571e-01,  4.00000000e-01,
  -1.33333333e+00,  5.71428571e-01,  4.00000000e-01,
 };
@@ -116,18 +116,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData1Din3DQuadratic::~QuadratureData1Din3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData2DLinear::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData2DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_vertices[] = {
   2.00000000e-01, -4.00000000e-01,
   3.00000000e-01,  5.00000000e-01,
  -1.00000000e+00, -2.00000000e-01,
@@ -43,50 +43,50 @@
        0,       1,       2,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_quadPtsRef[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_quadPts[] = {
  -1.66666667e-01, -3.33333333e-02,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_basisDeriv[] = {
   6.36363636e-01, -1.18181818e+00,
   1.81818182e-01,  1.09090909e+00,
  -8.18181818e-01,  9.09090909e-02,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_jacobian[] = {
   5.00000000e-02, -6.00000000e-01,
   4.50000000e-01,  1.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_jacobianDet[] = {
   2.75000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DLinear::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DLinear::_jacobianInv[] = {
   3.63636364e-01,  2.18181818e+00,
  -1.63636364e+00,  1.81818182e-01,
 };
@@ -99,18 +99,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData2DLinear::~QuadratureData2DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData2DQuadratic::_numQuadPts = 6;
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_vertices[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  2.00000000e-01,
  -1.50000000e+00,  5.00000000e-01,
@@ -46,7 +46,7 @@
        0,       1,       2,       3,       4,       5,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -55,7 +55,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_quadPtsRef[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -64,11 +64,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_quadPts[] = {
  -8.12500000e-01, -6.62500000e-01,
   6.87500000e-01,  2.37500000e-01,
  -1.18750000e+00,  4.62500000e-01,
@@ -77,7 +77,7 @@
  -6.25000000e-02,  6.87500000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -98,7 +98,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -137,7 +137,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_basisDeriv[] = {
  -1.66666667e-01, -1.38888889e+00,
  -2.08333333e-01, -6.94444444e-02,
   1.66666667e-01, -2.77777778e-01,
@@ -176,7 +176,7 @@
  -6.25000000e-01, -1.87500000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_jacobian[] = {
   1.00000000e+00, -2.50000000e-01,
   6.00000000e-01,  7.50000000e-01,
   1.00000000e+00, -2.50000000e-01,
@@ -191,11 +191,11 @@
   6.00000000e-01,  7.50000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_jacobianDet[] = {
   9.00000000e-01,  9.00000000e-01,  9.00000000e-01,  9.00000000e-01,  9.00000000e-01,  9.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2DQuadratic::_jacobianInv[] = {
   8.33333333e-01,  2.77777778e-01,
  -6.66666667e-01,  1.11111111e+00,
   8.33333333e-01,  2.77777778e-01,
@@ -218,18 +218,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData2DQuadratic::~QuadratureData2DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXY::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_vertices[] = {
   0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
@@ -43,51 +43,51 @@
        0,       1,       2,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPtsRef[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPts[] = {
  -3.33333333e-01,  0.00000000e+00,  3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDeriv[] = {
   1.00000000e+00,  0.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobian[] = {
  -5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianDet[] = {
   2.50000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianInv[] = {
  -2.00000000e+00,  0.00000000e+00, -0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  2.00000000e+00,
 };
@@ -100,18 +100,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData2Din3DLinearXY::~QuadratureData2Din3DLinearXY(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_vertices[] = {
   0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
@@ -43,51 +43,51 @@
        0,       1,       2,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPtsRef[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPts[] = {
  -3.33333333e-01,  0.00000000e+00,  3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDeriv[] = {
   1.00000000e+00,  0.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobian[] = {
  -5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianDet[] = {
   2.50000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianInv[] = {
  -2.00000000e+00,  0.00000000e+00, -0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  2.00000000e+00,
 };
@@ -100,18 +100,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData2Din3DLinearXYZ::~QuadratureData2Din3DLinearXYZ(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_vertices[] = {
   0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
@@ -43,51 +43,51 @@
        0,       1,       2,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPtsRef[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPts[] = {
  -3.33333333e-01,  0.00000000e+00,  3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDeriv[] = {
   1.00000000e+00,  0.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobian[] = {
  -5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianDet[] = {
   2.50000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianInv[] = {
  -2.00000000e+00,  0.00000000e+00, -0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  2.00000000e+00,
 };
@@ -100,18 +100,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData2Din3DLinearXZ::~QuadratureData2Din3DLinearXZ(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_vertices[] = {
   0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
@@ -43,51 +43,51 @@
        0,       1,       2,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPtsRef[] = {
  -3.33333333e-01, -3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadWts[] = {
   2.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPts[] = {
   0.00000000e+00,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_basis[] = {
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDeriv[] = {
   0.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobian[] = {
   0.00000000e+00,  0.00000000e+00,
   5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianDet[] = {
   2.50000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianInv[] = {
   0.00000000e+00,  2.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  2.00000000e+00,
 };
@@ -100,18 +100,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData2Din3DLinearYZ::~QuadratureData2Din3DLinearYZ(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DQuadratic::_numQuadPts = 6;
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_vertices[] = {
   2.00000000e+00, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  3.00000000e+00,  0.00000000e+00,
  -5.00000000e-01,  0.00000000e+00,  2.00000000e+00,
@@ -46,7 +46,7 @@
        0,       1,       2,       3,       4,       5,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00,
@@ -55,7 +55,7 @@
   0.00000000e+00, -1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_quadPtsRef[] = {
  -7.50000000e-01, -7.50000000e-01,
   7.50000000e-01, -7.50000000e-01,
  -7.50000000e-01,  7.50000000e-01,
@@ -64,11 +64,11 @@
   2.50000000e-01,  2.50000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_quadPts[] = {
   1.50000000e+00,  0.00000000e+00, -1.25000000e-01,
   3.75000000e-01,  2.62500000e+00,  2.50000000e-01,
  -3.75000000e-01,  3.75000000e-01,  1.75000000e+00,
@@ -77,7 +77,7 @@
  -5.00000000e-01,  2.00000000e+00,  1.37500000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_basis[] = {
   3.75000000e-01, -9.37500000e-02,
  -9.37500000e-02,  6.25000000e-02,
   3.75000000e-01,  3.75000000e-01,
@@ -98,7 +98,7 @@
  -6.25000000e-01, -6.25000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
  -2.50000000e-01,  0.00000000e+00,
   0.00000000e+00, -2.50000000e-01,
@@ -137,7 +137,7 @@
  -1.75000000e+00, -1.25000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDeriv[] = {
   7.50000000e-01, -2.50000000e-01, -7.05882353e-01,
  -3.12500000e-02, -1.56250000e-01,  2.94117647e-02,
   2.18750000e-01,  9.37500000e-02, -2.05882353e-01,
@@ -176,7 +176,7 @@
   8.75000000e-01, -6.25000000e-01, -8.23529412e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobian[] = {
  -7.50000000e-01, -1.25000000e+00,
   1.75000000e+00,  2.50000000e-01,
   2.50000000e-01,  1.25000000e+00,
@@ -197,11 +197,11 @@
   2.50000000e-01,  1.25000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianDet[] = {
   2.98433410e+00,  2.98433410e+00,  2.98433410e+00,  2.98433410e+00,  2.98433410e+00,  2.98433410e+00,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianInv[] = {
   1.25000000e-01,  6.25000000e-01, -1.17647059e-01,
  -8.75000000e-01, -3.75000000e-01,  8.23529412e-01,
   1.25000000e-01,  6.25000000e-01, -1.17647059e-01,
@@ -224,18 +224,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData2Din3DQuadratic::~QuadratureData2Din3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData3DLinear::_numQuadPts = 1;
 
-const double pylith::feassemble::QuadratureData3DLinear::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_vertices[] = {
  -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
   2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
   1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
@@ -44,54 +44,54 @@
        0,       1,       2,       3,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_quadPtsRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_quadWts[] = {
   1.33333333e+00,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_quadPts[] = {
   5.75000000e-01, -2.75000000e-01,  2.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_basis[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::QuadratureData3DLinear::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_basisDerivRef[] = {
  -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
   5.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  5.00000000e-01,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_basisDeriv[] = {
  -2.66418835e-01, -6.75340768e-01,  3.71747212e-02,
   6.04089219e-01, -1.14312268e+00,  6.13382900e-01,
  -3.40768278e-01,  1.92688971e+00, -1.11524164e+00,
   3.09789343e-03, -1.08426270e-01,  4.64684015e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_jacobian[] = {
   1.25000000e+00,  7.50000000e-01,  1.50000000e-01,
   2.50000000e-01,  4.50000000e-01,  7.50000000e-01,
   5.00000000e-02,  1.00000000e-01,  1.25000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_jacobianDet[] = {
   4.03500000e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DLinear::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DLinear::_jacobianInv[] = {
   1.20817844e+00, -2.28624535e+00,  1.22676580e+00,
  -6.81536555e-01,  3.85377943e+00, -2.23048327e+00,
   6.19578686e-03, -2.16852540e-01,  9.29368030e-01,
@@ -105,18 +105,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData3DLinear::~QuadratureData3DLinear(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -33,7 +33,7 @@
 
 const int pylith::feassemble::QuadratureData3DQuadratic::_numQuadPts = 4;
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_vertices[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_vertices[] = {
  -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
   2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
   1.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -50,7 +50,7 @@
        0,       1,       2,       3,       4,       5,       6,       7,       8,       9,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_verticesRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_verticesRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
  -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
@@ -63,25 +63,25 @@
  -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_quadPtsRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_quadPtsRef[] = {
  -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
   5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
  -8.00000000e-01,  5.00000000e-01, -8.00000000e-01,
  -8.00000000e-01, -8.00000000e-01,  5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_quadWts[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_quadWts[] = {
   3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_quadPts[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_quadPts[] = {
  -3.00000000e-02, -1.45000000e+00, -5.50000000e-01,
   1.59500000e+00, -1.45000000e+00, -2.25000000e-01,
   9.45000000e-01,  5.00000000e-01,  1.00000000e-01,
   4.25000000e-01,  1.75000000e-01,  1.40000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_basis[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_basis[] = {
   2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
  -8.00000000e-02,  4.00000000e-02,  2.80000000e-01,
   2.80000000e-01,  2.80000000e-01,  4.00000000e-02,
@@ -97,7 +97,7 @@
   2.00000000e-02,  1.50000000e-01,  3.00000000e-01,
   3.00000000e-01,};
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_basisDerivRef[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_basisDerivRef[] = {
  -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
  -3.00000000e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -3.00000000e-01,  0.00000000e+00,
@@ -140,7 +140,7 @@
   0.00000000e+00,  1.50000000e+00,  2.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_basisDeriv[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_basisDeriv[] = {
  -6.58857980e-01, -1.68667643e-01, -3.05710102e-01,
  -2.28404100e-01,  1.33528551e-01, -5.79795022e-02,
  -4.39238653e-02, -2.51244510e-01,  2.19619327e-01,
@@ -183,7 +183,7 @@
   1.84480234e-01,  1.21522694e+00, -9.22401171e-01,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_jacobian[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_jacobian[] = {
   1.25000000e+00,  7.50000000e-01,  3.50000000e-01,
   0.00000000e+00,  1.50000000e+00,  1.25000000e+00,
   2.50000000e-01,  5.00000000e-01,  1.50000000e+00,
@@ -198,11 +198,11 @@
   2.50000000e-01,  5.00000000e-01,  1.50000000e+00,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianDet[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_jacobianDet[] = {
   2.13437500e+00,  2.13437500e+00,  2.13437500e+00,  2.13437500e+00,
 };
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianInv[] = {
+const PylithScalar pylith::feassemble::QuadratureData3DQuadratic::_jacobianInv[] = {
   7.61346999e-01, -4.45095168e-01,  1.93265007e-01,
   1.46412884e-01,  8.37481698e-01, -7.32064422e-01,
  -1.75695461e-01, -2.04978038e-01,  8.78477306e-01,
@@ -225,18 +225,18 @@
   cellDim = _cellDim;
   numBasis = _numBasis;
   numQuadPts = _numQuadPts;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
-  verticesRef = const_cast<double*>(_verticesRef);
-  quadPtsRef = const_cast<double*>(_quadPtsRef);
-  quadWts = const_cast<double*>(_quadWts);
-  quadPts = const_cast<double*>(_quadPts);
-  basis = const_cast<double*>(_basis);
-  basisDerivRef = const_cast<double*>(_basisDerivRef);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  jacobian = const_cast<double*>(_jacobian);
-  jacobianDet = const_cast<double*>(_jacobianDet);
-  jacobianInv = const_cast<double*>(_jacobianInv);
+  verticesRef = const_cast<PylithScalar*>(_verticesRef);
+  quadPtsRef = const_cast<PylithScalar*>(_quadPtsRef);
+  quadWts = const_cast<PylithScalar*>(_quadWts);
+  quadPts = const_cast<PylithScalar*>(_quadPts);
+  basis = const_cast<PylithScalar*>(_basis);
+  basisDerivRef = const_cast<PylithScalar*>(_basisDerivRef);
+  basisDeriv = const_cast<PylithScalar*>(_basisDeriv);
+  jacobian = const_cast<PylithScalar*>(_jacobian);
+  jacobianDet = const_cast<PylithScalar*>(_jacobianDet);
+  jacobianInv = const_cast<PylithScalar*>(_jacobianInv);
 } // constructor
 
 pylith::feassemble::QuadratureData3DQuadratic::~QuadratureData3DQuadratic(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,29 +55,29 @@
 
   static const int _numQuadPts;
 
-  static const double _vertices[];
+  static const PylithScalar _vertices[];
 
   static const int _cells[];
 
-  static const double _verticesRef[];
+  static const PylithScalar _verticesRef[];
 
-  static const double _quadPtsRef[];
+  static const PylithScalar _quadPtsRef[];
 
-  static const double _quadWts[];
+  static const PylithScalar _quadWts[];
 
-  static const double _quadPts[];
+  static const PylithScalar _quadPts[];
 
-  static const double _basis[];
+  static const PylithScalar _basis[];
 
-  static const double _basisDerivRef[];
+  static const PylithScalar _basisDerivRef[];
 
-  static const double _basisDeriv[];
+  static const PylithScalar _basisDeriv[];
 
-  static const double _jacobian[];
+  static const PylithScalar _jacobian[];
 
-  static const double _jacobianDet[];
+  static const PylithScalar _jacobianDet[];
 
-  static const double _jacobianInv[];
+  static const PylithScalar _jacobianInv[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -34,7 +34,7 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/feassemble/GeometryLine2D.hh" // USES GeometryLine2D
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
@@ -71,7 +71,7 @@
 void
 pylith::friction::TestFrictionModel::testTimeStep(void) 
 { // testTimeStep
-  const double dt = 2.0;
+  const PylithScalar dt = 2.0;
   StaticFriction friction;
   friction.timeStep(dt);
   
@@ -131,7 +131,7 @@
 void
 pylith::friction::TestFrictionModel::testInitialize(void)
 { // testInitialize
-  const double propertiesE[] = { 0.6, 1000000, 0.4, 1000000 };
+  const PylithScalar propertiesE[] = { 0.6, 1000000, 0.4, 1000000 };
   const int numProperties = 2;
 
   topology::Mesh mesh;
@@ -149,7 +149,7 @@
     vertices->begin();
   const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   // Test fieldsPropsStateVars with mesh
   const int fieldsFiberDim = numProperties;
@@ -163,7 +163,7 @@
        ++v_iter) {
     CPPUNIT_ASSERT_EQUAL(fieldsFiberDim, 
 			 fieldsSection->getFiberDimension(*v_iter));
-    const double* fieldsVertex = fieldsSection->restrictPoint(*v_iter);
+    const PylithScalar* fieldsVertex = fieldsSection->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(fieldsVertex);
     for (int i = 0; i < numProperties; ++i, ++index)
       if (0 != propertiesE[index])
@@ -184,7 +184,7 @@
 void
 pylith::friction::TestFrictionModel::testGetField(void)
 { // testGetField
-  const double fieldE[] = { 0.6, 0.4 };
+  const PylithScalar fieldE[] = { 0.6, 0.4 };
   const int fiberDim = 1;
 
   topology::Mesh mesh;
@@ -205,10 +205,10 @@
     vertices->begin();
   const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   int index = 0;
-  double_array fieldVertex(fiberDim);
+  scalar_array fieldVertex(fiberDim);
   const ALE::Obj<RealSection>& fieldSection = field.section();
   CPPUNIT_ASSERT(!fieldSection.isNull());
   for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
@@ -229,9 +229,9 @@
 void
 pylith::friction::TestFrictionModel::testRetrievePropsStateVars(void)
 { // testRetrievePropsStateVars
-  const double propertiesE[] = { 0.4, 1000000 };
+  const PylithScalar propertiesE[] = { 0.4, 1000000 };
   const size_t numProperties = 2;
-  const double* stateVarsE = 0;
+  const PylithScalar* stateVarsE = 0;
   const size_t numStateVars = 0;
   const int vertex = 2;
 
@@ -243,9 +243,9 @@
 
   friction.retrievePropsStateVars(vertex);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
-  const double_array& fieldsVertex = friction._propsStateVarsVertex;
+  const scalar_array& fieldsVertex = friction._propsStateVarsVertex;
   CPPUNIT_ASSERT_EQUAL(numProperties + numStateVars, fieldsVertex.size());
 
   // Check properties array.
@@ -276,12 +276,12 @@
 void
 pylith::friction::TestFrictionModel::testCalcFriction(void)
 { // testCalcFriction
-  const double slip = 1.2;
-  const double slipRate = -2.3;
-  const double normalTraction = -2.4;
-  const double frictionCoef = 0.45;
-  const double cohesion = 1000000;
-  const double frictionE = -normalTraction*frictionCoef + cohesion;
+  const PylithScalar slip = 1.2;
+  const PylithScalar slipRate = -2.3;
+  const PylithScalar normalTraction = -2.4;
+  const PylithScalar frictionCoef = 0.45;
+  const PylithScalar cohesion = 1000000;
+  const PylithScalar frictionE = -normalTraction*frictionCoef + cohesion;
   const int vertex = 2;
 
   topology::Mesh mesh;
@@ -292,9 +292,9 @@
 
   friction.timeStep(data.dt);
   friction.retrievePropsStateVars(vertex);
-  const double frictionV = friction.calcFriction(slip, slipRate, normalTraction);
+  const PylithScalar frictionV = friction.calcFriction(slip, slipRate, normalTraction);
 
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   if (0.0 != frictionE)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, frictionV/frictionE, tolerance);
   else
@@ -313,10 +313,10 @@
     StaticFrictionData data;
     _initialize(&mesh, &fault, &friction, &data);
     
-    const double slip = 1.2;
-    const double slipRate = -2.3;
-    const double normalTraction = -2.4;
-    const double cohesion = 1000000;
+    const PylithScalar slip = 1.2;
+    const PylithScalar slipRate = -2.3;
+    const PylithScalar normalTraction = -2.4;
+    const PylithScalar cohesion = 1000000;
     const int vertex = 2;
     
     friction.timeStep(data.dt);
@@ -344,19 +344,19 @@
     friction.dbProperties(&db);
     fault.frictionModel(&friction);
     
-    const double upDir[] = { 0.0, 0.0, 1.0 };
+    const PylithScalar upDir[] = { 0.0, 0.0, 1.0 };
     fault.initialize(mesh, upDir);
     const int vertex = 2;
 
-    const double slip = 0.25;
-    const double slipRate = 0.64;
-    const double normalTraction = -2.3;
-    const double cohesion = 1000000;
-    const double dt = 0.01;
+    const PylithScalar slip = 0.25;
+    const PylithScalar slipRate = 0.64;
+    const PylithScalar normalTraction = -2.3;
+    const PylithScalar cohesion = 1000000;
+    const PylithScalar dt = 0.01;
 
     const int numStateVars = 2;
-    const double stateVars[2] = { 0.5, 0.1 };
-    const double stateVarsUpdatedE[2] = { 0.65, 0.5 };
+    const PylithScalar stateVars[2] = { 0.5, 0.1 };
+    const PylithScalar stateVarsUpdatedE[2] = { 0.65, 0.5 };
     
 
     // Set state variables to given values
@@ -368,13 +368,13 @@
     friction.timeStep(dt);
     friction.updateStateVars(slip, slipRate, normalTraction, vertex);
     
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     CPPUNIT_ASSERT(0 != friction._fieldsPropsStateVars);
     const ALE::Obj<SubRealUniformSection>& fieldsSection = 
       friction._fieldsPropsStateVars->section();
     CPPUNIT_ASSERT_EQUAL(friction._fieldsPropsStateVars->fiberDim(),
 			 fieldsSection->getFiberDimension(vertex));
-    const double* fieldsVertex = fieldsSection->restrictPoint(vertex);
+    const PylithScalar* fieldsVertex = fieldsSection->restrictPoint(vertex);
     CPPUNIT_ASSERT(fieldsVertex);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsUpdatedE[0],
 				 fieldsVertex[friction._propsFiberDim+0], 
@@ -424,10 +424,10 @@
 
   // Test _dbToProperties()
   const int numLocs = _data->numLocs;
-  double_array dbValues(numDBProperties);
+  scalar_array dbValues(numDBProperties);
 
   const int propertiesSize = _data->numPropsVertex;
-  double_array properties(propertiesSize);
+  scalar_array properties(propertiesSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < numDBProperties; ++i)
@@ -435,8 +435,8 @@
 
     _friction->_dbToProperties(&properties[0], dbValues);
     
-    const double* const propertiesE = &_data->properties[iLoc*propertiesSize];
-    const double tolerance = 1.0e-06;
+    const PylithScalar* const propertiesE = &_data->properties[iLoc*propertiesSize];
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < propertiesSize; ++i) {
       if (fabs(propertiesE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -459,19 +459,19 @@
   
   const int numLocs = _data->numLocs;
   const int propertiesSize = _data->numPropsVertex;
-  double_array propertiesNondim(propertiesSize);
-  double_array properties(propertiesSize);
+  scalar_array propertiesNondim(propertiesSize);
+  scalar_array properties(propertiesSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < propertiesSize; ++i)
       properties[i] = _data->properties[iLoc*propertiesSize+i];
     _friction->_nondimProperties(&properties[0], properties.size());
     
-    const double* const propertiesNondimE =
+    const PylithScalar* const propertiesNondimE =
       &_data->propertiesNondim[iLoc*propertiesSize];
     CPPUNIT_ASSERT(0 != propertiesNondimE);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < propertiesSize; ++i) {
       if (fabs(propertiesNondimE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -494,18 +494,18 @@
   
   const int numLocs = _data->numLocs;
   const int propertiesSize = _data->numPropsVertex;
-  double_array properties(propertiesSize);
+  scalar_array properties(propertiesSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < propertiesSize; ++i)
       properties[i] = _data->propertiesNondim[iLoc*propertiesSize+i];
     _friction->_dimProperties(&properties[0], properties.size());
     
-    const double* const propertiesE =
+    const PylithScalar* const propertiesE =
       &_data->properties[iLoc*propertiesSize];
     CPPUNIT_ASSERT(0 != propertiesE);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < propertiesSize; ++i) {
       if (fabs(propertiesE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -538,10 +538,10 @@
 
   // Test _dbToStateVars()
   const int numLocs = _data->numLocs;
-  double_array dbValues(numDBStateVars);
+  scalar_array dbValues(numDBStateVars);
 
   const int stateVarsSize = _data->numVarsVertex;
-  double_array stateVars(stateVarsSize);
+  scalar_array stateVars(stateVarsSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < numDBStateVars; ++i)
@@ -549,11 +549,11 @@
 
     _friction->_dbToStateVars(&stateVars[0], dbValues);
     
-    const double* const stateVarsE = 
+    const PylithScalar* const stateVarsE = 
       (stateVarsSize > 0) ? &_data->stateVars[iLoc*stateVarsSize] : 0;
     CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsE) ||
 		    (0 == stateVarsSize && 0 == stateVarsE) );
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < stateVarsSize; ++i) {
       if (fabs(stateVarsE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -576,19 +576,19 @@
   
   const int numLocs = _data->numLocs;
   const int stateVarsSize = _data->numVarsVertex;
-  double_array stateVars(stateVarsSize);
+  scalar_array stateVars(stateVarsSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < stateVarsSize; ++i)
       stateVars[i] = _data->dbStateVars[iLoc*stateVarsSize+i];
     _friction->_nondimStateVars(&stateVars[0], stateVars.size());
     
-    const double* const stateVarsNondimE =
+    const PylithScalar* const stateVarsNondimE =
       (stateVarsSize > 0) ? &_data->stateVarsNondim[iLoc*stateVarsSize] : 0;
     CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsNondimE) ||
 		    (0 == stateVarsSize && 0 == stateVarsNondimE) );
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < stateVarsSize; ++i) {
       if (fabs(stateVarsNondimE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -611,19 +611,19 @@
   
   const int numLocs = _data->numLocs;
   const int stateVarsSize = _data->numVarsVertex;
-  double_array stateVars(stateVarsSize);
+  scalar_array stateVars(stateVarsSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < stateVarsSize; ++i)
       stateVars[i] = _data->stateVarsNondim[iLoc*stateVarsSize+i];
     _friction->_dimStateVars(&stateVars[0], stateVars.size());
     
-    const double* const stateVarsE =
+    const PylithScalar* const stateVarsE =
       (stateVarsSize > 0) ? &_data->stateVars[iLoc*stateVarsSize] : 0;
     CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsE) ||
 		    (0 == stateVarsSize && 0 == stateVarsE) );
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < stateVarsSize; ++i) {
       if (fabs(stateVarsE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -648,27 +648,27 @@
   const int numPropsVertex = _data->numPropsVertex;
   const int numVarsVertex = _data->numVarsVertex;
   
-  double_array properties(numPropsVertex);
-  double_array stateVars(numVarsVertex);
+  scalar_array properties(numPropsVertex);
+  scalar_array stateVars(numVarsVertex);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < numPropsVertex; ++i)
       properties[i] = _data->properties[iLoc*numPropsVertex+i];
     for (int i=0; i < numVarsVertex; ++i)
       stateVars[i] = _data->stateVars[iLoc*numVarsVertex+i];
-    const double slip = _data->slip[iLoc];
-    const double slipRate = _data->slipRate[iLoc];
-    const double normalTraction = _data->normalTraction[iLoc];
+    const PylithScalar slip = _data->slip[iLoc];
+    const PylithScalar slipRate = _data->slipRate[iLoc];
+    const PylithScalar normalTraction = _data->normalTraction[iLoc];
 
     _friction->timeStep(_data->dt);
-    const double friction = _friction->_calcFriction(
+    const PylithScalar friction = _friction->_calcFriction(
 					slip, slipRate, normalTraction,
 					&properties[0], properties.size(),
 					&stateVars[0], stateVars.size());
     
-    const double frictionE = _data->friction[iLoc];
+    const PylithScalar frictionE = _data->friction[iLoc];
     
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
 
     if (0.0 != frictionE)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, friction/frictionE, tolerance);
@@ -691,13 +691,13 @@
   const int numPropsVertex = _data->numPropsVertex;
   const int numVarsVertex = _data->numVarsVertex;
   
-  double_array properties(numPropsVertex);
-  double_array stateVars(numVarsVertex);
+  scalar_array properties(numPropsVertex);
+  scalar_array stateVars(numVarsVertex);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
-    const double slip = _data->slip[iLoc];
-    const double slipRate = _data->slipRate[iLoc];
-    const double normalTraction = _data->normalTraction[iLoc];
+    const PylithScalar slip = _data->slip[iLoc];
+    const PylithScalar slipRate = _data->slipRate[iLoc];
+    const PylithScalar normalTraction = _data->normalTraction[iLoc];
     for (int i=0; i < numPropsVertex; ++i)
       properties[i] = _data->properties[iLoc*numPropsVertex+i];
     for (int i=0; i < numVarsVertex; ++i)
@@ -708,12 +708,12 @@
 				&stateVars[0], stateVars.size(),
 				&properties[0], properties.size());
     
-    const double* stateVarsE = 
+    const PylithScalar* stateVarsE = 
       (numVarsVertex > 0) ? &_data->stateVarsUpdated[iLoc*numVarsVertex] : 0;
     CPPUNIT_ASSERT( (0 < numVarsVertex && 0 != stateVarsE) ||
 		    (0 == numVarsVertex && 0 == stateVarsE) );
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < numVarsVertex; ++i) {
 #if 0 // DEBUGGING
       std::cout << "valE: " << stateVarsE[i] 
@@ -777,10 +777,10 @@
   const int numCorners = 2;
   const int numQuadPts = 2;
   const int spaceDim = 2;
-  const double basis[] = { 0.75, 0.25, 0.25, 0.75 };
-  const double basisDeriv[] = { -0.5, 0.5, -0.5, 0.5 };
-  const double quadPtsRef[] = { -0.5, 0.5 };
-  const double quadWts[] = { 1.0, 1.0  };
+  const PylithScalar basis[] = { 0.75, 0.25, 0.25, 0.75 };
+  const PylithScalar basisDeriv[] = { -0.5, 0.5, -0.5, 0.5 };
+  const PylithScalar quadPtsRef[] = { -0.5, 0.5 };
+  const PylithScalar quadWts[] = { 1.0, 1.0  };
   quadrature.initialize(basis, numQuadPts, numCorners,
 			basisDeriv, numQuadPts, numCorners, cellDim,
 			quadPtsRef, numQuadPts, cellDim,
@@ -811,7 +811,7 @@
   friction->normalizer(normalizer);
   fault->frictionModel(friction);
   
-  const double upDir[] = { 0.0, 0.0, 1.0 };
+  const PylithScalar upDir[] = { 0.0, 0.0, 1.0 };
   fault->initialize(*mesh, upDir);
 } // _initialize
 

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/FrictionModelData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/FrictionModelData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/FrictionModelData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_friction_frictionmodeldata_hh)
 #define pylith_friction_frictionmodeldata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace friction {
      class FrictionModelData;
@@ -55,25 +57,25 @@
   char** dbPropertyValues; ///< Names of db values for properties.
   char** dbStateVarValues; ///< Names of db values for state variables.
 
-  double dt; ///< Time step
-  double* dbProperties; ///< Database values for properties at locations.
-  double* dbStateVars; ///< Database values for state variables at locations.
-  double* properties; ///< Properties at locations.
-  double* stateVars; ///< State variables at locations.
-  double* propertiesNondim; ///< Nondimensional properties at locations.
-  double* stateVarsNondim; ///< Nondimensional state variables at locations.
+  PylithScalar dt; ///< Time step
+  PylithScalar* dbProperties; ///< Database values for properties at locations.
+  PylithScalar* dbStateVars; ///< Database values for state variables at locations.
+  PylithScalar* properties; ///< Properties at locations.
+  PylithScalar* stateVars; ///< State variables at locations.
+  PylithScalar* propertiesNondim; ///< Nondimensional properties at locations.
+  PylithScalar* stateVarsNondim; ///< Nondimensional state variables at locations.
 
-  double* friction; ///< Friction at locations.
-  double* slip; ///< Slip at locations.
-  double* slipRate; ///< Slip rate at locations.
-  double* normalTraction; ///< Normal traction at locations.
+  PylithScalar* friction; ///< Friction at locations.
+  PylithScalar* slip; ///< Slip at locations.
+  PylithScalar* slipRate; ///< Slip rate at locations.
+  PylithScalar* normalTraction; ///< Normal traction at locations.
 
-  double* stateVarsUpdated; ///< Updated state variables at location.
+  PylithScalar* stateVarsUpdated; ///< Updated state variables at location.
 
-  double lengthScale; ///< Length scale for nondimensionalization.
-  double timeScale; ///< Time scale for nondimensionalization.
-  double pressureScale; ///< Pressure scale for nondimensionalization.
-  double densityScale; ///< Density scale for nondimensionalization.
+  PylithScalar lengthScale; ///< Length scale for nondimensionalization.
+  PylithScalar timeScale; ///< Time scale for nondimensionalization.
+  PylithScalar pressureScale; ///< Pressure scale for nondimensionalization.
+  PylithScalar densityScale; ///< Density scale for nondimensionalization.
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/RateStateAgeingData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/RateStateAgeingData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/RateStateAgeingData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,15 +32,15 @@
 
 const int pylith::friction::RateStateAgeingData::_numVarsVertex = 1;
 
-const double pylith::friction::RateStateAgeingData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::friction::RateStateAgeingData::_lengthScale =   1.00000000e+03;
 
-const double pylith::friction::RateStateAgeingData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::friction::RateStateAgeingData::_timeScale =   1.00000000e+00;
 
-const double pylith::friction::RateStateAgeingData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::friction::RateStateAgeingData::_pressureScale =   2.25000000e+10;
 
-const double pylith::friction::RateStateAgeingData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::friction::RateStateAgeingData::_densityScale =   1.00000000e+03;
 
-const double pylith::friction::RateStateAgeingData::_dt = 0.01;
+const PylithScalar pylith::friction::RateStateAgeingData::_dt = 0.01;
 
 const int pylith::friction::RateStateAgeingData::_numPropertyValues[] = {
   1,
@@ -68,7 +68,7 @@
   "state-variable",
 };
 
-const double pylith::friction::RateStateAgeingData::_dbProperties[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_dbProperties[] = {
   0.6,
   0.000001,
   0.0370,
@@ -83,12 +83,12 @@
   1000000,
 };
 
-const double pylith::friction::RateStateAgeingData::_dbStateVars[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_dbStateVars[] = {
   92.7,
   93.7,
 };
 
-const double pylith::friction::RateStateAgeingData::_properties[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_properties[] = {
   0.6,
   0.000001,
   0.0370,
@@ -103,12 +103,12 @@
   1000000,
 };
 
-const double pylith::friction::RateStateAgeingData::_stateVars[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_stateVars[] = {
   92.7,
   93.7,
 };
 
-const double pylith::friction::RateStateAgeingData::_propertiesNondim[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_propertiesNondim[] = {
   0.6,
   0.000000001,
   0.0000370,
@@ -123,32 +123,32 @@
   0.000044444444,
 };
 
-const double pylith::friction::RateStateAgeingData::_stateVarsNondim[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_stateVarsNondim[] = {
   92.7,
   93.7,
 };
 
-const double pylith::friction::RateStateAgeingData::_friction[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_friction[] = {
   1000001.285949009547604,
   1000001.164378652801948,
 };
 
-const double pylith::friction::RateStateAgeingData::_slip[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_slip[] = {
   0.12,
   0.22,
 };
 
-const double pylith::friction::RateStateAgeingData::_slipRate[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_slipRate[] = {
   0.0011,
   0.0021,
 };
 
-const double pylith::friction::RateStateAgeingData::_normalTraction[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_normalTraction[] = {
   -2.2,
   -2.3,
 };
 
-const double pylith::friction::RateStateAgeingData::_stateVarsUpdated[] = {
+const PylithScalar pylith::friction::RateStateAgeingData::_stateVarsUpdated[] = {
   92.682443150471812,
   93.668141160483529,
 };
@@ -170,18 +170,18 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
   dt = _dt;
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  friction = const_cast<double*>(_friction);
-  slip = const_cast<double*>(_slip);
-  slipRate = const_cast<double*>(_slipRate);
-  normalTraction = const_cast<double*>(_normalTraction);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  friction = const_cast<PylithScalar*>(_friction);
+  slip = const_cast<PylithScalar*>(_slip);
+  slipRate = const_cast<PylithScalar*>(_slipRate);
+  normalTraction = const_cast<PylithScalar*>(_normalTraction);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::friction::RateStateAgeingData::~RateStateAgeingData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/RateStateAgeingData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/RateStateAgeingData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/RateStateAgeingData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,15 +54,15 @@
 
   static const int _numVarsVertex;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
   static const int _numPropertyValues[];
 
@@ -72,27 +72,27 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _friction[];
+  static const PylithScalar _friction[];
 
-  static const double _slip[];
+  static const PylithScalar _slip[];
 
-  static const double _slipRate[];
+  static const PylithScalar _slipRate[];
 
-  static const double _normalTraction[];
+  static const PylithScalar _normalTraction[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,15 +32,15 @@
 
 const int pylith::friction::SlipWeakeningData::_numVarsVertex = 2;
 
-const double pylith::friction::SlipWeakeningData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::friction::SlipWeakeningData::_lengthScale =   1.00000000e+03;
 
-const double pylith::friction::SlipWeakeningData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::friction::SlipWeakeningData::_timeScale =   1.00000000e+00;
 
-const double pylith::friction::SlipWeakeningData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::friction::SlipWeakeningData::_pressureScale =   2.25000000e+10;
 
-const double pylith::friction::SlipWeakeningData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::friction::SlipWeakeningData::_densityScale =   1.00000000e+03;
 
-const double pylith::friction::SlipWeakeningData::_dt = 0.01;
+const PylithScalar pylith::friction::SlipWeakeningData::_dt = 0.01;
 
 const int pylith::friction::SlipWeakeningData::_numPropertyValues[] = {
   1,
@@ -66,7 +66,7 @@
   "previous-slip",
 };
 
-const double pylith::friction::SlipWeakeningData::_dbProperties[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_dbProperties[] = {
   0.6,
   0.5,
   0.8,
@@ -77,14 +77,14 @@
   1000000,
 };
 
-const double pylith::friction::SlipWeakeningData::_dbStateVars[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_dbStateVars[] = {
   0.4,
   0.2,
   0.5,
   0.1,
 };
 
-const double pylith::friction::SlipWeakeningData::_properties[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_properties[] = {
   0.6,
   0.5,
   0.8,
@@ -95,14 +95,14 @@
   1000000,
 };
 
-const double pylith::friction::SlipWeakeningData::_stateVars[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_stateVars[] = {
   0.4,
   0.2,
   0.5,
   0.1,
 };
 
-const double pylith::friction::SlipWeakeningData::_propertiesNondim[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_propertiesNondim[] = {
   0.6,
   0.5,
   0.0008,
@@ -113,34 +113,34 @@
   0.000044444444,
 };
 
-const double pylith::friction::SlipWeakeningData::_stateVarsNondim[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_stateVarsNondim[] = {
   0.0004,
   0.0002,
   0.0005,
   0.0001,
 };
 
-const double pylith::friction::SlipWeakeningData::_friction[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_friction[] = {
   1000001.21,
   1000001.15,
 };
 
-const double pylith::friction::SlipWeakeningData::_slip[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_slip[] = {
   0.12,
   0.25,
 };
 
-const double pylith::friction::SlipWeakeningData::_slipRate[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_slipRate[] = {
   0.74,
   0.64,
 };
 
-const double pylith::friction::SlipWeakeningData::_normalTraction[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_normalTraction[] = {
   -2.2,
   -2.3,
 };
 
-const double pylith::friction::SlipWeakeningData::_stateVarsUpdated[] = {
+const PylithScalar pylith::friction::SlipWeakeningData::_stateVarsUpdated[] = {
   0.48,
   0.4,
   0.65,
@@ -164,18 +164,18 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
   dt = _dt;
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  friction = const_cast<double*>(_friction);
-  slip = const_cast<double*>(_slip);
-  slipRate = const_cast<double*>(_slipRate);
-  normalTraction = const_cast<double*>(_normalTraction);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  friction = const_cast<PylithScalar*>(_friction);
+  slip = const_cast<PylithScalar*>(_slip);
+  slipRate = const_cast<PylithScalar*>(_slipRate);
+  normalTraction = const_cast<PylithScalar*>(_normalTraction);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::friction::SlipWeakeningData::~SlipWeakeningData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,15 +54,15 @@
 
   static const int _numVarsVertex;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
   static const int _numPropertyValues[];
 
@@ -72,27 +72,27 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _friction[];
+  static const PylithScalar _friction[];
 
-  static const double _slip[];
+  static const PylithScalar _slip[];
 
-  static const double _slipRate[];
+  static const PylithScalar _slipRate[];
 
-  static const double _normalTraction[];
+  static const PylithScalar _normalTraction[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/StaticFrictionData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/StaticFrictionData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/StaticFrictionData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,15 +32,15 @@
 
 const int pylith::friction::StaticFrictionData::_numVarsVertex = 0;
 
-const double pylith::friction::StaticFrictionData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::friction::StaticFrictionData::_lengthScale =   1.00000000e+03;
 
-const double pylith::friction::StaticFrictionData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::friction::StaticFrictionData::_timeScale =   1.00000000e+00;
 
-const double pylith::friction::StaticFrictionData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::friction::StaticFrictionData::_pressureScale =   2.25000000e+10;
 
-const double pylith::friction::StaticFrictionData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::friction::StaticFrictionData::_densityScale =   1.00000000e+03;
 
-const double pylith::friction::StaticFrictionData::_dt = 0.01;
+const PylithScalar pylith::friction::StaticFrictionData::_dt = 0.01;
 
 const int pylith::friction::StaticFrictionData::_numPropertyValues[] = {
 1,
@@ -56,54 +56,54 @@
 
 const char** pylith::friction::StaticFrictionData::_dbStateVarValues = 0;
 
-const double pylith::friction::StaticFrictionData::_dbProperties[] = {
+const PylithScalar pylith::friction::StaticFrictionData::_dbProperties[] = {
   0.6,
   1000000,
   0.6,
   1000000,
 };
 
-const double* pylith::friction::StaticFrictionData::_dbStateVars = 0;
+const PylithScalar* pylith::friction::StaticFrictionData::_dbStateVars = 0;
 
-const double pylith::friction::StaticFrictionData::_properties[] = {
+const PylithScalar pylith::friction::StaticFrictionData::_properties[] = {
   0.6,
   1000000,
   0.6,
   1000000,
 };
 
-const double* pylith::friction::StaticFrictionData::_stateVars = 0;
+const PylithScalar* pylith::friction::StaticFrictionData::_stateVars = 0;
 
-const double pylith::friction::StaticFrictionData::_propertiesNondim[] = {
+const PylithScalar pylith::friction::StaticFrictionData::_propertiesNondim[] = {
    0.6,
    0.000044444444,
    0.6,
    0.000044444444,
 };
 
-const double* pylith::friction::StaticFrictionData::_stateVarsNondim = 0;
+const PylithScalar* pylith::friction::StaticFrictionData::_stateVarsNondim = 0;
 
-const double pylith::friction::StaticFrictionData::_friction[] = {
+const PylithScalar pylith::friction::StaticFrictionData::_friction[] = {
   1000001.32,
   0.0,
 };
 
-const double pylith::friction::StaticFrictionData::_slip[] = {
+const PylithScalar pylith::friction::StaticFrictionData::_slip[] = {
   0.12,
   0.25,
 };
 
-const double pylith::friction::StaticFrictionData::_slipRate[] = {
+const PylithScalar pylith::friction::StaticFrictionData::_slipRate[] = {
   0.74,
   0.64,
 };
 
-const double pylith::friction::StaticFrictionData::_normalTraction[] = {
+const PylithScalar pylith::friction::StaticFrictionData::_normalTraction[] = {
   -2.2,
   0.8,
 };
 
-const double* pylith::friction::StaticFrictionData::_stateVarsUpdated = 0;
+const PylithScalar* pylith::friction::StaticFrictionData::_stateVarsUpdated = 0;
 
 pylith::friction::StaticFrictionData::StaticFrictionData(void)
 { // constructor
@@ -122,18 +122,18 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
   dt = _dt;
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  friction = const_cast<double*>(_friction);
-  slip = const_cast<double*>(_slip);
-  slipRate = const_cast<double*>(_slipRate);
-  normalTraction = const_cast<double*>(_normalTraction);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  friction = const_cast<PylithScalar*>(_friction);
+  slip = const_cast<PylithScalar*>(_slip);
+  slipRate = const_cast<PylithScalar*>(_slipRate);
+  normalTraction = const_cast<PylithScalar*>(_normalTraction);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::friction::StaticFrictionData::~StaticFrictionData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/StaticFrictionData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/StaticFrictionData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/StaticFrictionData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,15 +54,15 @@
 
   static const int _numVarsVertex;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
   static const int _numPropertyValues[];
 
@@ -72,27 +72,27 @@
 
   static const char** _dbStateVarValues;
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double* _dbStateVars;
+  static const PylithScalar* _dbStateVars;
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double* _stateVars;
+  static const PylithScalar* _stateVars;
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double* _stateVarsNondim;
+  static const PylithScalar* _stateVarsNondim;
 
-  static const double _friction[];
+  static const PylithScalar _friction[];
 
-  static const double _slip[];
+  static const PylithScalar _slip[];
 
-  static const double _slipRate[];
+  static const PylithScalar _slipRate[];
 
-  static const double _normalTraction[];
+  static const PylithScalar _normalTraction[];
 
-  static const double* _stateVarsUpdated;
+  static const PylithScalar* _stateVarsUpdated;
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/TimeWeakeningData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/TimeWeakeningData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/TimeWeakeningData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,15 +32,15 @@
 
 const int pylith::friction::TimeWeakeningData::_numVarsVertex = 1;
 
-const double pylith::friction::TimeWeakeningData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::friction::TimeWeakeningData::_lengthScale =   1.00000000e+03;
 
-const double pylith::friction::TimeWeakeningData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::friction::TimeWeakeningData::_timeScale =   1.00000000e+00;
 
-const double pylith::friction::TimeWeakeningData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::friction::TimeWeakeningData::_pressureScale =   2.25000000e+10;
 
-const double pylith::friction::TimeWeakeningData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::friction::TimeWeakeningData::_densityScale =   1.00000000e+03;
 
-const double pylith::friction::TimeWeakeningData::_dt = 0.01;
+const PylithScalar pylith::friction::TimeWeakeningData::_dt = 0.01;
 
 const int pylith::friction::TimeWeakeningData::_numPropertyValues[] = {
   1,
@@ -64,7 +64,7 @@
   "elapsed-time",
 };
 
-const double pylith::friction::TimeWeakeningData::_dbProperties[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_dbProperties[] = {
   0.6,
   0.5,
   0.8,
@@ -75,12 +75,12 @@
   1000000,
 };
 
-const double pylith::friction::TimeWeakeningData::_dbStateVars[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_dbStateVars[] = {
   0.4,
   0.5,
 };
 
-const double pylith::friction::TimeWeakeningData::_properties[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_properties[] = {
   0.6,
   0.5,
   0.8,
@@ -91,12 +91,12 @@
   1000000,
 };
 
-const double pylith::friction::TimeWeakeningData::_stateVars[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_stateVars[] = {
   0.4,
   0.5,
 };
 
-const double pylith::friction::TimeWeakeningData::_propertiesNondim[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_propertiesNondim[] = {
   0.6,
   0.5,
   0.8,
@@ -107,32 +107,32 @@
   0.000044444444,
 };
 
-const double pylith::friction::TimeWeakeningData::_stateVarsNondim[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_stateVarsNondim[] = {
   0.4,
   0.5,
 };
 
-const double pylith::friction::TimeWeakeningData::_friction[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_friction[] = {
   1000001.21,
   1000001.15,
 };
 
-const double pylith::friction::TimeWeakeningData::_slip[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_slip[] = {
   0.12,
   0.25,
 };
 
-const double pylith::friction::TimeWeakeningData::_slipRate[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_slipRate[] = {
   0.74,
   0.64,
 };
 
-const double pylith::friction::TimeWeakeningData::_normalTraction[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_normalTraction[] = {
   -2.2,
   -2.3,
 };
 
-const double pylith::friction::TimeWeakeningData::_stateVarsUpdated[] = {
+const PylithScalar pylith::friction::TimeWeakeningData::_stateVarsUpdated[] = {
   0.41,
   0.51,
 };
@@ -154,18 +154,18 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
   dt = _dt;
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  friction = const_cast<double*>(_friction);
-  slip = const_cast<double*>(_slip);
-  slipRate = const_cast<double*>(_slipRate);
-  normalTraction = const_cast<double*>(_normalTraction);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  friction = const_cast<PylithScalar*>(_friction);
+  slip = const_cast<PylithScalar*>(_slip);
+  slipRate = const_cast<PylithScalar*>(_slipRate);
+  normalTraction = const_cast<PylithScalar*>(_normalTraction);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::friction::TimeWeakeningData::~TimeWeakeningData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/TimeWeakeningData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/TimeWeakeningData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/TimeWeakeningData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,15 +54,15 @@
 
   static const int _numVarsVertex;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dt;
+  static const PylithScalar _dt;
 
   static const int _numPropertyValues[];
 
@@ -72,27 +72,27 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _friction[];
+  static const PylithScalar _friction[];
 
-  static const double _slip[];
+  static const PylithScalar _slip[];
 
-  static const double _slipRate[];
+  static const PylithScalar _slipRate[];
 
-  static const double _normalTraction[];
+  static const PylithScalar _normalTraction[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestDruckerPrager3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestDruckerPrager3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestDruckerPrager3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -51,12 +51,12 @@
 
   CPPUNIT_ASSERT_EQUAL(false, material._needNewJacobian);
 
-  const double dt1 = 1.0;
+  const PylithScalar dt1 = 1.0;
   material.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
 
-  const double dt2 = 2.0;
+  const PylithScalar dt2 = 2.0;
   material.timeStep(dt2);
   CPPUNIT_ASSERT_EQUAL(dt2, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
@@ -143,7 +143,7 @@
 
   delete _dataElastic; _dataElastic = new DruckerPrager3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcStress();
 } // test_calcStressTimeDep
@@ -158,7 +158,7 @@
 
   delete _dataElastic; _dataElastic = new DruckerPrager3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcElasticConsts();
 } // test_calcElasticConstsTimeDep
@@ -173,7 +173,7 @@
 
   delete _dataElastic; _dataElastic = new DruckerPrager3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_updateStateVars();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestEffectiveStress.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestEffectiveStress.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestEffectiveStress.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -35,15 +35,15 @@
       public :
 	Linear(void) {};
 	~Linear(void) {};
-	double effStressFunc(const double x) {
+	PylithScalar effStressFunc(const PylithScalar x) {
 	  return x - 10.0;
 	};
-	double effStressDerivFunc(const double x) {
+	PylithScalar effStressDerivFunc(const PylithScalar x) {
 	  return 1.0;
 	};
-	double effStressFuncDerivFunc(double* f,
-				      double* df,
-				      const double x) {
+	PylithScalar effStressFuncDerivFunc(PylithScalar* f,
+				      PylithScalar* df,
+				      const PylithScalar x) {
 	  *f = effStressFunc(x);
 	  *df = effStressDerivFunc(x);
 	};
@@ -60,15 +60,15 @@
       public :
 	Quadratic(void) {};
 	~Quadratic(void) {};
-	double effStressFunc(const double x) {
+	PylithScalar effStressFunc(const PylithScalar x) {
 	  return 1.0e+5 - 1.0/9.0e+3 * pow(x + 2.0e+4, 2);
 	};
-	double effStressDerivFunc(const double x) {
+	PylithScalar effStressDerivFunc(const PylithScalar x) {
 	  return -2*1.0/9.0e+3*(x+2.0e+4);
 	};
-	double effStressFuncDerivFunc(double* f,
-				      double* df,
-				      const double x) {
+	PylithScalar effStressFuncDerivFunc(PylithScalar* f,
+				      PylithScalar* df,
+				      const PylithScalar x) {
 	  *f = effStressFunc(x);
 	  *df = effStressDerivFunc(x);
 	};
@@ -85,15 +85,15 @@
       public :
 	Cubic(void) {};
 	~Cubic(void) {};
-	double effStressFunc(const double x) {
+	PylithScalar effStressFunc(const PylithScalar x) {
 	  return pow(x - 4.0, 3) - 8.0;
 	};
-	double effStressDerivFunc(const double x) {
+	PylithScalar effStressDerivFunc(const PylithScalar x) {
 	  return 3.0*pow(x - 4.0, 2);
 	};
-	double effStressFuncDerivFunc(double* f,
-				      double* df,
-				      const double x) {
+	PylithScalar effStressFuncDerivFunc(PylithScalar* f,
+				      PylithScalar* df,
+				      const PylithScalar x) {
 	  *f = effStressFunc(x);
 	  *df = effStressDerivFunc(x);
 	};
@@ -107,16 +107,16 @@
 void
 pylith::materials::TestEffectiveStress::testCalculateLinear(void)
 { // testCalculateLinear
-  const double valueE = 10.0;
+  const PylithScalar valueE = 10.0;
   
   _EffectiveStress::Linear material;
 
   const int ntests = 4;
-  const double guesses[ntests] = { 0.0, 6.0, 14.0, 20.0 };
-  const double scale = 1.0;
-  const double tolerance = 1.0e-06;
+  const PylithScalar guesses[ntests] = { 0.0, 6.0, 14.0, 20.0 };
+  const PylithScalar scale = 1.0;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < ntests; ++i) {
-    const double value =
+    const PylithScalar value =
       EffectiveStress::calculate<_EffectiveStress::Linear>(guesses[i], scale,
 							   &material);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, value/valueE, tolerance);
@@ -128,16 +128,16 @@
 void
 pylith::materials::TestEffectiveStress::testCalculateQuadratic(void)
 { // testCalculateQuadratic
-  const double valueE = 1.0e+04;
+  const PylithScalar valueE = 1.0e+04;
   
   _EffectiveStress::Quadratic material;
 
   const int ntests = 4;
-  const double guesses[ntests] = { 1.0, 1.0e-1, 2.0e-2, 1.0e-2 };
-  const double scale = 1.0e-2;
-  const double tolerance = 1.0e-06;
+  const PylithScalar guesses[ntests] = { 1.0, 1.0e-1, 2.0e-2, 1.0e-2 };
+  const PylithScalar scale = 1.0e-2;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < ntests; ++i) {
-    const double value =
+    const PylithScalar value =
       EffectiveStress::calculate<_EffectiveStress::Quadratic>(guesses[i], scale,
 							   &material);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, value/valueE, tolerance);
@@ -149,16 +149,16 @@
 void
 pylith::materials::TestEffectiveStress::testCalculateCubic(void)
 { // testCalculateCubic
-  const double valueE = 6.0;
+  const PylithScalar valueE = 6.0;
   
   _EffectiveStress::Cubic material;
 
   const int ntests = 4;
-  const double guesses[ntests] = { 2.0, 4.0, 6.0, 8.0 };
-  const double scale = 1.0;
-  const double tolerance = 1.0e-06;
+  const PylithScalar guesses[ntests] = { 2.0, 4.0, 6.0, 8.0 };
+  const PylithScalar scale = 1.0;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < ntests; ++i) {
-    const double value =
+    const PylithScalar value =
       EffectiveStress::calculate<_EffectiveStress::Cubic>(guesses[i], scale,
 							   &material);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, value/valueE, tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestEffectiveStress.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestEffectiveStress.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestEffectiveStress.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,6 +27,8 @@
 #if !defined(pylith_materials_testeffectivestress_hh)
 #define pylith_materials_testeffectivestress_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 #include <cppunit/extensions/HelperMacros.h>
 
 /// Namespace for pylith package

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
 
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
+#include "pylith/utils/constdefs.h" // USES MAXSCALAR
 #include "pylith/topology/Mesh.hh" // USES Mesh
 
 // ----------------------------------------------------------------------
@@ -51,8 +51,8 @@
 
   topology::Mesh mesh;
 
-  const double dt = _matElastic->stableTimeStepImplicit(mesh);
-  CPPUNIT_ASSERT_EQUAL(1.0, dt/pylith::PYLITH_MAXDOUBLE);
+  const PylithScalar dt = _matElastic->stableTimeStepImplicit(mesh);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), dt/pylith::PYLITH_MAXSCALAR);
 } // testStableTimeStepImplicit
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,7 +31,7 @@
 #include "pylith/feassemble/Quadrature.hh" // USES Quadrature
 #include "pylith/feassemble/GeometryLine1D.hh" // USES GeometryLine1D
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
 #include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
@@ -99,7 +99,7 @@
     sieveMesh->getLabelStratum("material-id", materialId);
   SieveMesh::point_type cell = *cells->begin();
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int tensorSize = material._tensorSize;
   const int numQuadPts = data.numLocs;
 
@@ -110,9 +110,9 @@
   CPPUNIT_ASSERT(!stressSection.isNull());
   int fiberDim = numQuadPts * tensorSize;
   CPPUNIT_ASSERT_EQUAL(fiberDim, stressSection->getFiberDimension(cell));
-  const double* initialStress = stressSection->restrictPoint(cell);
+  const PylithScalar* initialStress = stressSection->restrictPoint(cell);
   CPPUNIT_ASSERT(0 != initialStress);
-  const double* initialStressE = data.initialStress;
+  const PylithScalar* initialStressE = data.initialStress;
   CPPUNIT_ASSERT(0 != initialStressE);
   for (int i=0; i < fiberDim; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, initialStress[i]/initialStressE[i],
@@ -125,9 +125,9 @@
   CPPUNIT_ASSERT(!strainSection.isNull());
   fiberDim = numQuadPts * tensorSize;
   CPPUNIT_ASSERT_EQUAL(fiberDim, strainSection->getFiberDimension(cell));
-  const double* initialStrain = strainSection->restrictPoint(cell);
+  const PylithScalar* initialStrain = strainSection->restrictPoint(cell);
   CPPUNIT_ASSERT(0 != initialStrain);
-  const double* initialStrainE = data.initialStrain;
+  const PylithScalar* initialStrainE = data.initialStrain;
   CPPUNIT_ASSERT(0 != initialStrainE);
   for (int i=0; i < fiberDim; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, initialStrain[i]/initialStrainE[i],
@@ -191,43 +191,43 @@
 
   material.retrievePropsAndVars(cell);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int tensorSize = material._tensorSize;
   const int numQuadPts = data.numLocs;
   const int numVarsQuadPt = data.numVarsQuadPt;
 
   // Test cell arrays
-  const double* propertiesE = data.properties;
+  const PylithScalar* propertiesE = data.properties;
   CPPUNIT_ASSERT(0 != propertiesE);
-  const double_array& properties = material._propertiesCell;
+  const scalar_array& properties = material._propertiesCell;
   size_t size = data.numLocs*data.numPropsQuadPt;
   CPPUNIT_ASSERT_EQUAL(size, properties.size());
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, properties[i]/propertiesE[i],
 				 tolerance);
 
-  const double* stateVarsE = data.stateVars;
+  const PylithScalar* stateVarsE = data.stateVars;
   CPPUNIT_ASSERT( (0 < numVarsQuadPt && 0 != stateVarsE) ||
 		  (0 == numVarsQuadPt && 0 == stateVarsE) );
-  const double_array& stateVars = material._stateVarsCell;
+  const scalar_array& stateVars = material._stateVarsCell;
   size = data.numLocs*numVarsQuadPt;
   CPPUNIT_ASSERT_EQUAL(size, stateVars.size());
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, stateVars[i]/stateVarsE[i],
 				 tolerance);
 
-  const double* initialStressE = data.initialStress;
+  const PylithScalar* initialStressE = data.initialStress;
   CPPUNIT_ASSERT(0 != initialStressE);
-  const double_array& initialStress = material._initialStressCell;
+  const scalar_array& initialStress = material._initialStressCell;
   size = data.numLocs*tensorSize;
   CPPUNIT_ASSERT_EQUAL(size, initialStress.size());
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, initialStress[i]/initialStressE[i],
 				 tolerance);
 
-  const double* initialStrainE = data.initialStrain;
+  const PylithScalar* initialStrainE = data.initialStrain;
   CPPUNIT_ASSERT(0 != initialStrainE);
-  const double_array& initialStrain = material._initialStrainCell;
+  const scalar_array& initialStrain = material._initialStrainCell;
   size = data.numLocs*tensorSize;
   CPPUNIT_ASSERT_EQUAL(size, initialStrain.size());
   for (size_t i=0; i < size; ++i)
@@ -254,16 +254,16 @@
   SieveMesh::point_type cell = *cells->begin();
 
   material.retrievePropsAndVars(cell);
-  const double_array& density = material.calcDensity();
+  const scalar_array& density = material.calcDensity();
 
   const int tensorSize = material._tensorSize;
   const int numQuadPts = data.numLocs;
 
-  const double* densityE = data.density;
+  const PylithScalar* densityE = data.density;
   CPPUNIT_ASSERT(0 != densityE);
   const size_t size = numQuadPts;
   CPPUNIT_ASSERT_EQUAL(size, density.size());
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, density[i]/densityE[i], tolerance);
 } // testCalcDensity
@@ -290,16 +290,16 @@
   const int numQuadPts = data.numLocs;
 
   // Setup total strain
-  double_array strain(data.strain, numQuadPts*tensorSize);
+  scalar_array strain(data.strain, numQuadPts*tensorSize);
 
   material.retrievePropsAndVars(cell);
-  const double_array& stress = material.calcStress(strain);
+  const scalar_array& stress = material.calcStress(strain);
 
-  const double* stressE = data.stress;
+  const PylithScalar* stressE = data.stress;
   CPPUNIT_ASSERT(0 != stressE);
   const size_t size = numQuadPts * tensorSize;
   CPPUNIT_ASSERT_EQUAL(size, stress.size());
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, stress[i]/stressE[i], tolerance);
 } // testCalcStress
@@ -326,10 +326,10 @@
   const int numQuadPts = data.numLocs;
 
   // Setup total strain
-  double_array strain(data.strain, numQuadPts*tensorSize);
+  scalar_array strain(data.strain, numQuadPts*tensorSize);
 
   material.retrievePropsAndVars(cell);
-  const double_array& elasticConsts = material.calcDerivElastic(strain);
+  const scalar_array& elasticConsts = material.calcDerivElastic(strain);
 
   int numElasticConsts = 0;
   switch (data.dimension)
@@ -347,11 +347,11 @@
       assert(0);
     } // switch
 
-  const double* elasticConstsE = data.elasticConsts;
+  const PylithScalar* elasticConstsE = data.elasticConsts;
   CPPUNIT_ASSERT(0 != elasticConstsE);
   const size_t size = numQuadPts * numElasticConsts;
   CPPUNIT_ASSERT_EQUAL(size, elasticConsts.size());
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (size_t i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, elasticConsts[i]/elasticConstsE[i],
 				 tolerance);
@@ -385,10 +385,10 @@
   SieveMesh::point_type cell = *cells->begin();
 
   material.retrievePropsAndVars(cell);
-  const double dt = material.stableTimeStepImplicit(mesh);
+  const PylithScalar dt = material.stableTimeStepImplicit(mesh);
 
-  const double tolerance = 1.0e-06;
-  const double dtE = data.dtStableImplicit;
+  const PylithScalar tolerance = 1.0e-06;
+  const PylithScalar dtE = data.dtStableImplicit;
   CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, dt/dtE, tolerance);
 } // testStableTimeStepImplicit
 
@@ -425,23 +425,23 @@
   const int numPropsQuadPt = data->numPropsQuadPt;
   const int numVarsQuadPt = data->numVarsQuadPt;
   
-  double density = 0;
-  double_array properties(numPropsQuadPt);
-  double_array stateVars(numVarsQuadPt);
+  PylithScalar density = 0;
+  scalar_array properties(numPropsQuadPt);
+  scalar_array stateVars(numVarsQuadPt);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     memcpy(&properties[0], &data->properties[iLoc*numPropsQuadPt],
-	   numPropsQuadPt*sizeof(double));
+	   numPropsQuadPt*sizeof(PylithScalar));
     memcpy(&stateVars[0], &data->stateVars[iLoc*numVarsQuadPt],
-	   numVarsQuadPt*sizeof(double));
+	   numVarsQuadPt*sizeof(PylithScalar));
 
     _matElastic->_calcDensity(&density, 
 			      &properties[0], properties.size(),
 			      &stateVars[0], stateVars.size());
     
-    const double densityE = data->density[iLoc];
+    const PylithScalar densityE = data->density[iLoc];
     
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, density/densityE, tolerance);
   } // for
 } // _testCalcDensity
@@ -462,24 +462,24 @@
   const int numVarsQuadPt = data->numVarsQuadPt;
   const int tensorSize = _matElastic->_tensorSize;
   
-  double_array stress(tensorSize);
-  double_array properties(numPropsQuadPt);
-  double_array stateVars(numVarsQuadPt);
-  double_array strain(tensorSize);
-  double_array initialStress(tensorSize);
-  double_array initialStrain(tensorSize);
+  scalar_array stress(tensorSize);
+  scalar_array properties(numPropsQuadPt);
+  scalar_array stateVars(numVarsQuadPt);
+  scalar_array strain(tensorSize);
+  scalar_array initialStress(tensorSize);
+  scalar_array initialStrain(tensorSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     memcpy(&properties[0], &data->properties[iLoc*numPropsQuadPt],
-	   properties.size()*sizeof(double));
+	   properties.size()*sizeof(PylithScalar));
     memcpy(&stateVars[0], &data->stateVars[iLoc*numVarsQuadPt],
-	   stateVars.size()*sizeof(double));
+	   stateVars.size()*sizeof(PylithScalar));
     memcpy(&strain[0], &data->strain[iLoc*tensorSize],
-	   strain.size()*sizeof(double));
+	   strain.size()*sizeof(PylithScalar));
     memcpy(&initialStress[0], &data->initialStress[iLoc*tensorSize],
-	   initialStress.size()*sizeof(double));
+	   initialStress.size()*sizeof(PylithScalar));
     memcpy(&initialStrain[0], &data->initialStrain[iLoc*tensorSize],
-	   initialStrain.size()*sizeof(double));
+	   initialStrain.size()*sizeof(PylithScalar));
 
     _matElastic->_calcStress(&stress[0], stress.size(),
 			     &properties[0], properties.size(),
@@ -489,10 +489,10 @@
 			     &initialStrain[0], initialStrain.size(),
 			     computeStateVars);
 
-    const double* stressE = &data->stress[iLoc*tensorSize];
+    const PylithScalar* stressE = &data->stress[iLoc*tensorSize];
     CPPUNIT_ASSERT(0 != stressE);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-04;
     for (int i=0; i < tensorSize; ++i)
       if (fabs(stressE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, stress[i]/stressE[i], 
@@ -533,24 +533,24 @@
   const int numPropsQuadPt = data->numPropsQuadPt;
   const int numVarsQuadPt = data->numVarsQuadPt;
   
-  double_array elasticConsts(numConsts);
-  double_array properties(numPropsQuadPt);
-  double_array stateVars(numVarsQuadPt);
-  double_array strain(tensorSize);
-  double_array initialStress(tensorSize);
-  double_array initialStrain(tensorSize);
+  scalar_array elasticConsts(numConsts);
+  scalar_array properties(numPropsQuadPt);
+  scalar_array stateVars(numVarsQuadPt);
+  scalar_array strain(tensorSize);
+  scalar_array initialStress(tensorSize);
+  scalar_array initialStrain(tensorSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     memcpy(&properties[0], &data->properties[iLoc*numPropsQuadPt],
-	   numPropsQuadPt*sizeof(double));
+	   numPropsQuadPt*sizeof(PylithScalar));
     memcpy(&stateVars[0], &data->stateVars[iLoc*numVarsQuadPt],
-	   numVarsQuadPt*sizeof(double));
+	   numVarsQuadPt*sizeof(PylithScalar));
     memcpy(&strain[0], &data->strain[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
     memcpy(&initialStress[0], &data->initialStress[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
     memcpy(&initialStrain[0], &data->initialStrain[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
 
     _matElastic->_calcElasticConsts(&elasticConsts[0], elasticConsts.size(),
 				    &properties[0], properties.size(),
@@ -559,10 +559,10 @@
 				    &initialStress[0], initialStress.size(),
 				    &initialStrain[0], initialStrain.size());
 
-    const double* elasticConstsE = &data->elasticConsts[iLoc*numConsts];
+    const PylithScalar* elasticConstsE = &data->elasticConsts[iLoc*numConsts];
     CPPUNIT_ASSERT(0 != elasticConstsE);
     
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-05;
     for (int i=0; i < numConsts; ++i)
       if (fabs(elasticConstsE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, elasticConsts[i]/elasticConstsE[i], 
@@ -589,23 +589,23 @@
   const int numVarsQuadPt = data->numVarsQuadPt;
   const int tensorSize = _matElastic->_tensorSize;
   
-  double_array properties(numPropsQuadPt);
-  double_array stateVars(numVarsQuadPt);
-  double_array strain(tensorSize);
-  double_array initialStress(tensorSize);
-  double_array initialStrain(tensorSize);
+  scalar_array properties(numPropsQuadPt);
+  scalar_array stateVars(numVarsQuadPt);
+  scalar_array strain(tensorSize);
+  scalar_array initialStress(tensorSize);
+  scalar_array initialStrain(tensorSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     memcpy(&properties[0], &data->properties[iLoc*numPropsQuadPt],
-	   numPropsQuadPt*sizeof(double));
+	   numPropsQuadPt*sizeof(PylithScalar));
     memcpy(&stateVars[0], &data->stateVars[iLoc*numVarsQuadPt],
-	   numVarsQuadPt*sizeof(double));
+	   numVarsQuadPt*sizeof(PylithScalar));
     memcpy(&strain[0], &data->strain[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
     memcpy(&initialStress[0], &data->initialStress[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
     memcpy(&initialStrain[0], &data->initialStrain[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
 
     _matElastic->_updateStateVars(&stateVars[0], stateVars.size(),
 				  &properties[0], properties.size(),
@@ -613,12 +613,12 @@
 				  &initialStress[0], initialStress.size(),
 				  &initialStrain[0], initialStrain.size());
     
-    const double* stateVarsE = 
+    const PylithScalar* stateVarsE = 
       (numVarsQuadPt > 0) ? &data->stateVarsUpdated[iLoc*numVarsQuadPt] : 0;
     CPPUNIT_ASSERT( (0 < numVarsQuadPt && 0 != stateVarsE) ||
 		    (0 == numVarsQuadPt && 0 == stateVarsE) );
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-05;
     for (int i=0; i < numVarsQuadPt; ++i)
       if (fabs(stateVarsE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, stateVars[i]/stateVarsE[i], 
@@ -638,13 +638,13 @@
   CPPUNIT_ASSERT(0 != _dataElastic);
   const ElasticMaterialData* data = _dataElastic;
 
-  const double dt =
+  const PylithScalar dt =
     _matElastic->_stableTimeStepImplicit(data->properties, data->numPropsQuadPt,
 					 data->stateVars, data->numVarsQuadPt);
 
-  const double dtE = data->dtStableImplicit;
+  const PylithScalar dtE = data->dtStableImplicit;
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, dt/dtE, tolerance);
 } // _testStableTimeStepImplicit
 
@@ -694,8 +694,8 @@
   const int numCorners = 3;
   const int numQuadPts = 2;
   const int spaceDim = 1;
-  const double basis[] = { 0.455, -0.122, 0.667, -0.122, 0.455, 0.667 };
-  const double basisDeriv[] = { 
+  const PylithScalar basis[] = { 0.455, -0.122, 0.667, -0.122, 0.455, 0.667 };
+  const PylithScalar basisDeriv[] = { 
     -1.07735027e+00,
     -7.73502692e-02,
     1.15470054e+00,
@@ -703,8 +703,8 @@
     1.07735027e+00,
     -1.15470054e+00,
   };
-  const double quadPtsRef[] = { -0.577350269, 0.577350269 };
-  const double quadWts[] = { 1.0, 1.0  };
+  const PylithScalar quadPtsRef[] = { -0.577350269, 0.577350269 };
+  const PylithScalar quadWts[] = { 1.0, 1.0  };
   quadrature.initialize(basis, numQuadPts, numCorners,
 			basisDeriv, numQuadPts, numCorners, cellDim,
 			quadPtsRef, numQuadPts, cellDim,

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "pylith/materials/ElasticPlaneStrain.hh" // USES ElasticPlaneStrain
 
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
+#include "pylith/utils/constdefs.h" // USES MAXSCALAR
 #include "pylith/topology/Mesh.hh" // USES Mesh
 
 // ----------------------------------------------------------------------
@@ -51,8 +51,8 @@
 
   topology::Mesh mesh;
 
-  const double dt = _matElastic->stableTimeStepImplicit(mesh);
-  CPPUNIT_ASSERT_EQUAL(1.0, dt/pylith::PYLITH_MAXDOUBLE);
+  const PylithScalar dt = _matElastic->stableTimeStepImplicit(mesh);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), dt/pylith::PYLITH_MAXSCALAR);
 } // testStableTimeStepImplicit
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "pylith/materials/ElasticPlaneStress.hh" // USES ElasticPlaneStress
 
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
+#include "pylith/utils/constdefs.h" // USES MAXSCALAR
 #include "pylith/topology/Mesh.hh" // USES Mesh
 
 // ----------------------------------------------------------------------
@@ -51,8 +51,8 @@
 
   topology::Mesh mesh;
 
-  const double dt = _matElastic->stableTimeStepImplicit(mesh);
-  CPPUNIT_ASSERT_EQUAL(1.0, dt/pylith::PYLITH_MAXDOUBLE);
+  const PylithScalar dt = _matElastic->stableTimeStepImplicit(mesh);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), dt/pylith::PYLITH_MAXSCALAR);
 } // testStableTimeStepImplicit
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "pylith/materials/ElasticStrain1D.hh" // USES ElasticStrain1D
 
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
+#include "pylith/utils/constdefs.h" // USES MAXSCALAR
 #include "pylith/topology/Mesh.hh" // USES Mesh
 
 // ----------------------------------------------------------------------
@@ -51,8 +51,8 @@
 
   topology::Mesh mesh;
 
-  const double dt = _matElastic->stableTimeStepImplicit(mesh);
-  CPPUNIT_ASSERT_EQUAL(1.0, dt/pylith::PYLITH_MAXDOUBLE);
+  const PylithScalar dt = _matElastic->stableTimeStepImplicit(mesh);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), dt/pylith::PYLITH_MAXSCALAR);
 } // testStableTimeStepImplicit
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -24,7 +24,7 @@
 
 #include "pylith/materials/ElasticStress1D.hh" // USES ElasticStress1D
 
-#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
+#include "pylith/utils/constdefs.h" // USES MAXSCALAR
 #include "pylith/topology/Mesh.hh" // USES Mesh
 
 // ----------------------------------------------------------------------
@@ -51,8 +51,8 @@
 
   topology::Mesh mesh;
 
-  const double dt = _matElastic->stableTimeStepImplicit(mesh);
-  CPPUNIT_ASSERT_EQUAL(1.0, dt/pylith::PYLITH_MAXDOUBLE);
+  const PylithScalar dt = _matElastic->stableTimeStepImplicit(mesh);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), dt/pylith::PYLITH_MAXSCALAR);
 } // testStableTimeStepImplicit
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,12 +52,12 @@
 
   CPPUNIT_ASSERT_EQUAL(false, material._needNewJacobian);
 
-  const double dt1 = 1.0;
+  const PylithScalar dt1 = 1.0;
   material.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(false, material.needNewJacobian());
 
-  const double dt2 = 2.0;
+  const PylithScalar dt2 = 2.0;
   material.timeStep(dt2);
   CPPUNIT_ASSERT_EQUAL(dt2, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
@@ -144,7 +144,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellIsotropic3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcStress();
 } // testCalcStressTimeDep
@@ -159,7 +159,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellIsotropic3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcElasticConsts();
 } // testElasticConstsTimeDep
@@ -174,7 +174,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellIsotropic3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_updateStateVars();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellPlaneStrain.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellPlaneStrain.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,12 +52,12 @@
 
   CPPUNIT_ASSERT_EQUAL(false, material._needNewJacobian);
 
-  const double dt1 = 1.0;
+  const PylithScalar dt1 = 1.0;
   material.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(false, material.needNewJacobian());
 
-  const double dt2 = 2.0;
+  const PylithScalar dt2 = 2.0;
   material.timeStep(dt2);
   CPPUNIT_ASSERT_EQUAL(dt2, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
@@ -144,7 +144,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellPlaneStrainTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcStress();
 } // testCalcStressTimeDep
@@ -159,7 +159,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellPlaneStrainTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcElasticConsts();
 } // testElasticConstsTimeDep
@@ -174,7 +174,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellPlaneStrainTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_updateStateVars();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellQpQsIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellQpQsIsotropic3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellQpQsIsotropic3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -52,12 +52,12 @@
 
   CPPUNIT_ASSERT_EQUAL(false, material._needNewJacobian);
 
-  const double dt1 = 1.0;
+  const PylithScalar dt1 = 1.0;
   material.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(false, material.needNewJacobian());
 
-  const double dt2 = 2.0;
+  const PylithScalar dt2 = 2.0;
   material.timeStep(dt2);
   CPPUNIT_ASSERT_EQUAL(dt2, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
@@ -143,32 +143,32 @@
   const int numVarsQuadPt = _dataElastic->numVarsQuadPt;
   const int tensorSize = material.tensorSize();
   
-  double_array stress(tensorSize);
-  double_array properties(numPropsQuadPt);
-  double_array stateVars(numVarsQuadPt);
-  double_array strain(tensorSize);
-  double_array initialStress(tensorSize);
-  double_array initialStrain(tensorSize);
+  scalar_array stress(tensorSize);
+  scalar_array properties(numPropsQuadPt);
+  scalar_array stateVars(numVarsQuadPt);
+  scalar_array strain(tensorSize);
+  scalar_array initialStress(tensorSize);
+  scalar_array initialStrain(tensorSize);
   
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     memcpy(&properties[0], &_dataElastic->properties[iLoc*numPropsQuadPt],
-	   numPropsQuadPt*sizeof(double));
+	   numPropsQuadPt*sizeof(PylithScalar));
     memcpy(&stateVars[0], &_dataElastic->stateVars[iLoc*numVarsQuadPt],
-	   numVarsQuadPt*sizeof(double));
+	   numVarsQuadPt*sizeof(PylithScalar));
     memcpy(&strain[0], &_dataElastic->strain[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
     memcpy(&initialStress[0], &_dataElastic->initialStress[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
     memcpy(&initialStrain[0], &_dataElastic->initialStrain[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
 
-    const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+    const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
     const int numMaxwellModels = 3;
 
-    const double meanStrain = (strain[0] + strain[1] + strain[2]) / 3.0;
+    const PylithScalar meanStrain = (strain[0] + strain[1] + strain[2]) / 3.0;
     
     // Compute expected state variables
-    double_array stateVarsE(numVarsQuadPt);
+    scalar_array stateVarsE(numVarsQuadPt);
     const int s_totalStrain = GenMaxwellQpQsIsotropic3D::s_totalStrain;
     const int s_viscousDevStrain = 
       GenMaxwellQpQsIsotropic3D::s_viscousDevStrain;
@@ -197,7 +197,7 @@
 			      &initialStress[0], initialStress.size(),
 			      &initialStrain[0], initialStrain.size());
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < numVarsQuadPt; ++i)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsE[i], stateVars[i], tolerance);
   } // for
@@ -213,7 +213,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellQpQsIsotropic3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcStress();
 } // testCalcStressTimeDep
@@ -228,7 +228,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellQpQsIsotropic3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcElasticConsts();
 } // testElasticConstsTimeDep
@@ -248,7 +248,7 @@
 
   delete _dataElastic; _dataElastic = new GenMaxwellQpQsIsotropic3DTimeDepData();
 
-  const double dt = 2.0e+5;
+  const PylithScalar dt = 2.0e+5;
   material.timeStep(dt);
 
   const bool computeStateVars = true;
@@ -258,27 +258,27 @@
   const int numVarsQuadPt = _dataElastic->numVarsQuadPt;
   const int tensorSize = material.tensorSize();
   
-  double_array stress(tensorSize);
-  double_array properties(numPropsQuadPt);
-  double_array stateVars(numVarsQuadPt);
-  double_array strain(tensorSize);
-  double_array initialStress(tensorSize);
-  double_array initialStrain(tensorSize);
+  scalar_array stress(tensorSize);
+  scalar_array properties(numPropsQuadPt);
+  scalar_array stateVars(numVarsQuadPt);
+  scalar_array strain(tensorSize);
+  scalar_array initialStress(tensorSize);
+  scalar_array initialStrain(tensorSize);
   
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     memcpy(&properties[0], &_dataElastic->properties[iLoc*numPropsQuadPt],
-	   numPropsQuadPt*sizeof(double));
+	   numPropsQuadPt*sizeof(PylithScalar));
     memcpy(&stateVars[0], &_dataElastic->stateVars[iLoc*numVarsQuadPt],
-	   numVarsQuadPt*sizeof(double));
+	   numVarsQuadPt*sizeof(PylithScalar));
     memcpy(&strain[0], &_dataElastic->strain[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
     memcpy(&initialStress[0], &_dataElastic->initialStress[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
     memcpy(&initialStrain[0], &_dataElastic->initialStrain[iLoc*tensorSize],
-	   tensorSize*sizeof(double));
+	   tensorSize*sizeof(PylithScalar));
 
     // Compute expected state variables
-    double_array stateVarsE(numVarsQuadPt);
+    scalar_array stateVarsE(numVarsQuadPt);
     const int numMaxwellModels = 3;
     const int s_totalStrain = GenMaxwellQpQsIsotropic3D::s_totalStrain;
     const int s_viscousDevStrain = 
@@ -296,10 +296,10 @@
       stateVarsE[s_totalStrain+i] = strain[i];
     
     // State variable 'viscous_strain'
-    double_array maxwellTime(numMaxwellModels);
-    double_array maxwellTimeBulk(numMaxwellModels);
-    double_array dq(numMaxwellModels);
-    double_array dqBulk(numMaxwellModels);
+    scalar_array maxwellTime(numMaxwellModels);
+    scalar_array maxwellTimeBulk(numMaxwellModels);
+    scalar_array dq(numMaxwellModels);
+    scalar_array dqBulk(numMaxwellModels);
     for (int i=0; i < numMaxwellModels; ++i) {
       maxwellTime[i] = properties[p_maxwellTimeShear+i];
       dq[i] = maxwellTime[i] * (1.0 - exp(-dt/maxwellTime[i]))/dt;
@@ -308,20 +308,20 @@
       maxwellTimeBulk[i] = properties[p_maxwellTimeBulk+i];
       dqBulk[i] = maxwellTimeBulk[i] * (1.0 - exp(-dt/maxwellTimeBulk[i]))/dt;
     } // for
-    double_array strainT(tensorSize);
+    scalar_array strainT(tensorSize);
     for (int i=0; i < tensorSize; ++i)
       strainT[i] = stateVars[s_totalStrain+i];
-    const double meanStrainT = 
+    const PylithScalar meanStrainT = 
       (stateVars[s_totalStrain+0] + 
        stateVars[s_totalStrain+1] + 
        stateVars[s_totalStrain+2]) / 3.0;
-    const double meanStrainTpdt = (strain[0] + strain[1] + strain[2]) / 3.0;
+    const PylithScalar meanStrainTpdt = (strain[0] + strain[1] + strain[2]) / 3.0;
 
-    double devStrainTpdt = 0.0;
-    double devStrainT = 0.0;
-    double deltaStrain = 0.0;
-    double visStrain = 0.0;
-    const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+    PylithScalar devStrainTpdt = 0.0;
+    PylithScalar devStrainT = 0.0;
+    PylithScalar deltaStrain = 0.0;
+    PylithScalar visStrain = 0.0;
+    const PylithScalar diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
     
     for (int iComp=0; iComp < tensorSize; ++iComp) {
       devStrainTpdt = strain[iComp] - diag[iComp]*meanStrainTpdt;
@@ -335,8 +335,8 @@
       } // for
     } // for
 
-    double volStrainTpdt = meanStrainTpdt;
-    double volStrainT = meanStrainT;
+    PylithScalar volStrainTpdt = meanStrainTpdt;
+    PylithScalar volStrainT = meanStrainT;
     deltaStrain = volStrainTpdt - volStrainT;
 
     for (int iModel=0; iModel < numMaxwellModels; ++iModel) {
@@ -352,7 +352,7 @@
 			      &initialStress[0], initialStress.size(),
 			      &initialStrain[0], initialStrain.size());
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < numVarsQuadPt; ++i)
       if (fabs(stateVarsE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, stateVars[i]/stateVarsE[i], tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "data/MaterialData.hh" // USES MaterialData
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Field.hh" // USES Field
@@ -79,7 +79,7 @@
 void
 pylith::materials::TestMaterial::testTimeStep(void) 
 { // testTimeStep
-  const double dt = 2.0;
+  const PylithScalar dt = 2.0;
   ElasticIsotropic3D material;
   material.timeStep(dt);
   
@@ -189,8 +189,8 @@
   const int numCorners = 3;
   const int numQuadPts = 2;
   const int spaceDim = 1;
-  const double basis[] = { 0.455, -0.122, 0.667, -0.122, 0.455, 0.667 };
-  const double basisDeriv[] = { 
+  const PylithScalar basis[] = { 0.455, -0.122, 0.667, -0.122, 0.455, 0.667 };
+  const PylithScalar basisDeriv[] = { 
     -1.07735027e+00,
     -7.73502692e-02,
     1.15470054e+00,
@@ -198,8 +198,8 @@
     1.07735027e+00,
     -1.15470054e+00,
   };
-  const double quadPtsRef[] = { -0.577350269, 0.577350269 };
-  const double quadWts[] = { 1.0, 1.0  };
+  const PylithScalar quadPtsRef[] = { -0.577350269, 0.577350269 };
+  const PylithScalar quadWts[] = { 1.0, 1.0  };
   quadrature.initialize(basis, numQuadPts, numCorners,
 			basisDeriv, numQuadPts, numCorners, cellDim,
 			quadPtsRef, numQuadPts, cellDim,
@@ -235,27 +235,27 @@
   material.normalizer(normalizer);
   material.initialize(mesh, &quadrature);
 
-  const double densityA = 2500.0;
-  const double vsA = 3000.0;
-  const double vpA = vsA*sqrt(3.0);
-  const double muA = vsA*vsA*densityA;
-  const double lambdaA = vpA*vpA*densityA - 2.0*muA;
-  const double densityB = 2000.0;
-  const double vsB = 1200.0;
-  const double vpB = vsB*sqrt(3.0);
-  const double muB = vsB*vsB*densityB;
-  const double lambdaB = vpB*vpB*densityB - 2.0*muB;
-  const double densityE[] = { densityA, densityB };
-  const double muE[] = { muA, muB };
-  const double lambdaE[] = { lambdaA, lambdaB };
+  const PylithScalar densityA = 2500.0;
+  const PylithScalar vsA = 3000.0;
+  const PylithScalar vpA = vsA*sqrt(3.0);
+  const PylithScalar muA = vsA*vsA*densityA;
+  const PylithScalar lambdaA = vpA*vpA*densityA - 2.0*muA;
+  const PylithScalar densityB = 2000.0;
+  const PylithScalar vsB = 1200.0;
+  const PylithScalar vpB = vsB*sqrt(3.0);
+  const PylithScalar muB = vsB*vsB*densityB;
+  const PylithScalar lambdaB = vpB*vpB*densityB - 2.0*muB;
+  const PylithScalar densityE[] = { densityA, densityB };
+  const PylithScalar muE[] = { muA, muB };
+  const PylithScalar lambdaE[] = { lambdaA, lambdaB };
 
   SieveMesh::point_type cell = *cells->begin();
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
 
   CPPUNIT_ASSERT(0 != material._properties);
   const Obj<RealSection>& propertiesSection = material._properties->section();
   CPPUNIT_ASSERT(!propertiesSection.isNull());
-  const double* propertiesCell = propertiesSection->restrictPoint(cell);
+  const PylithScalar* propertiesCell = propertiesSection->restrictPoint(cell);
   CPPUNIT_ASSERT(0 != propertiesCell);
 
   const int p_density = 0;
@@ -355,10 +355,10 @@
 
   // Test _dbToProperties()
   const int numLocs = _data->numLocs;
-  double_array dbValues(numDBProperties);
+  scalar_array dbValues(numDBProperties);
 
   const int propertiesSize = _data->numPropsQuadPt;
-  double_array properties(propertiesSize);
+  scalar_array properties(propertiesSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < numDBProperties; ++i)
@@ -366,8 +366,8 @@
 
     _material->_dbToProperties(&properties[0], dbValues);
     
-    const double* const propertiesE = &_data->properties[iLoc*propertiesSize];
-    const double tolerance = 1.0e-06;
+    const PylithScalar* const propertiesE = &_data->properties[iLoc*propertiesSize];
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < propertiesSize; ++i) {
       if (fabs(propertiesE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -390,20 +390,20 @@
   
   const int numLocs = _data->numLocs;
   const int propertiesSize = _data->numPropsQuadPt;
-  double_array propertiesNondim(propertiesSize);
-  double_array properties(propertiesSize);
+  scalar_array propertiesNondim(propertiesSize);
+  scalar_array properties(propertiesSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
 
     memcpy(&properties[0], &_data->properties[iLoc*propertiesSize],
-	   propertiesSize*sizeof(double));
+	   propertiesSize*sizeof(PylithScalar));
     _material->_nondimProperties(&properties[0], properties.size());
     
-    const double* const propertiesNondimE =
+    const PylithScalar* const propertiesNondimE =
       &_data->propertiesNondim[iLoc*propertiesSize];
     CPPUNIT_ASSERT(0 != propertiesNondimE);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < propertiesSize; ++i) {
       if (fabs(propertiesNondimE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -426,19 +426,19 @@
   
   const int numLocs = _data->numLocs;
   const int propertiesSize = _data->numPropsQuadPt;
-  double_array properties(propertiesSize);
+  scalar_array properties(propertiesSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
 
     memcpy(&properties[0], &_data->propertiesNondim[iLoc*propertiesSize], 
-	   propertiesSize*sizeof(double));
+	   propertiesSize*sizeof(PylithScalar));
     _material->_dimProperties(&properties[0], properties.size());
     
-    const double* const propertiesE =
+    const PylithScalar* const propertiesE =
       &_data->properties[iLoc*propertiesSize];
     CPPUNIT_ASSERT(0 != propertiesE);
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < propertiesSize; ++i) {
       if (fabs(propertiesE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -471,10 +471,10 @@
 
   // Test _dbToStateVars()
   const int numLocs = _data->numLocs;
-  double_array dbValues(numDBStateVars);
+  scalar_array dbValues(numDBStateVars);
 
   const int stateVarsSize = _data->numVarsQuadPt;
-  double_array stateVars(stateVarsSize);
+  scalar_array stateVars(stateVarsSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     for (int i=0; i < numDBStateVars; ++i)
@@ -482,11 +482,11 @@
 
     _material->_dbToStateVars(&stateVars[0], dbValues);
     
-    const double* const stateVarsE = 
+    const PylithScalar* const stateVarsE = 
       (stateVarsSize > 0) ? &_data->stateVars[iLoc*stateVarsSize] : 0;
     CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsE) ||
 		    (0 == stateVarsSize && 0 == stateVarsE) );
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < stateVarsSize; ++i) {
       if (fabs(stateVarsE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -509,20 +509,20 @@
   
   const int numLocs = _data->numLocs;
   const int stateVarsSize = _data->numVarsQuadPt;
-  double_array stateVars(stateVarsSize);
+  scalar_array stateVars(stateVarsSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
 
     memcpy(&stateVars[0], &_data->stateVars[iLoc*stateVarsSize],
-	   stateVarsSize*sizeof(double));
+	   stateVarsSize*sizeof(PylithScalar));
     _material->_nondimStateVars(&stateVars[0], stateVars.size());
     
-    const double* const stateVarsNondimE =
+    const PylithScalar* const stateVarsNondimE =
       (stateVarsSize > 0) ? &_data->stateVarsNondim[iLoc*stateVarsSize] : 0;
     CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsNondimE) ||
 		    (0 == stateVarsSize && 0 == stateVarsNondimE) );
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < stateVarsSize; ++i) {
       if (fabs(stateVarsNondimE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
@@ -545,20 +545,20 @@
   
   const int numLocs = _data->numLocs;
   const int stateVarsSize = _data->numVarsQuadPt;
-  double_array stateVars(stateVarsSize);
+  scalar_array stateVars(stateVarsSize);
 
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
 
     memcpy(&stateVars[0], &_data->stateVarsNondim[iLoc*stateVarsSize],
-	   stateVarsSize*sizeof(double));
+	   stateVarsSize*sizeof(PylithScalar));
     _material->_dimStateVars(&stateVars[0], stateVars.size());
     
-    const double* const stateVarsE =
+    const PylithScalar* const stateVarsE =
       (stateVarsSize > 0) ? &_data->stateVars[iLoc*stateVarsSize] : 0;
     CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsE) ||
 		    (0 == stateVarsSize && 0 == stateVarsE) );
 
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < stateVarsSize; ++i) {
       if (fabs(stateVarsE[i]) > tolerance)
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -51,12 +51,12 @@
 
   CPPUNIT_ASSERT_EQUAL(false, material._needNewJacobian);
 
-  const double dt1 = 1.0;
+  const PylithScalar dt1 = 1.0;
   material.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(false, material.needNewJacobian());
 
-  const double dt2 = 2.0;
+  const PylithScalar dt2 = 2.0;
   material.timeStep(dt2);
   CPPUNIT_ASSERT_EQUAL(dt2, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
@@ -144,7 +144,7 @@
 
   delete _dataElastic; _dataElastic = new MaxwellIsotropic3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcStress();
 } // test_calcStressTimeDep
@@ -159,7 +159,7 @@
 
   delete _dataElastic; _dataElastic = new MaxwellIsotropic3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcElasticConsts();
 } // test_calcElasticConstsTimeDep
@@ -174,7 +174,7 @@
 
   delete _dataElastic; _dataElastic = new MaxwellIsotropic3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_updateStateVars();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellPlaneStrain.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellPlaneStrain.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -51,12 +51,12 @@
 
   CPPUNIT_ASSERT_EQUAL(false, material._needNewJacobian);
 
-  const double dt1 = 1.0;
+  const PylithScalar dt1 = 1.0;
   material.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(false, material.needNewJacobian());
 
-  const double dt2 = 2.0;
+  const PylithScalar dt2 = 2.0;
   material.timeStep(dt2);
   CPPUNIT_ASSERT_EQUAL(dt2, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
@@ -144,7 +144,7 @@
 
   delete _dataElastic; _dataElastic = new MaxwellPlaneStrainTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcStress();
 } // test_calcStressTimeDep
@@ -159,7 +159,7 @@
 
   delete _dataElastic; _dataElastic = new MaxwellPlaneStrainTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcElasticConsts();
 } // test_calcElasticConstsTimeDep
@@ -174,7 +174,7 @@
 
   delete _dataElastic; _dataElastic = new MaxwellPlaneStrainTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_updateStateVars();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMetadata.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMetadata.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMetadata.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -21,7 +21,7 @@
 #include "TestMetadata.hh" // Implementation of class methods
 
 #include "pylith/materials/Metadata.hh" // USES Metadata
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include <cstring> // USES strcmp()
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestPowerLaw3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestPowerLaw3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestPowerLaw3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -51,12 +51,12 @@
 
   CPPUNIT_ASSERT_EQUAL(false, material._needNewJacobian);
 
-  const double dt1 = 1.0;
+  const PylithScalar dt1 = 1.0;
   material.timeStep(dt1);
   CPPUNIT_ASSERT_EQUAL(dt1, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
 
-  const double dt2 = 2.0;
+  const PylithScalar dt2 = 2.0;
   material.timeStep(dt2);
   CPPUNIT_ASSERT_EQUAL(dt2, material.Material::timeStep());
   CPPUNIT_ASSERT_EQUAL(true, material.needNewJacobian());
@@ -143,7 +143,7 @@
 
   delete _dataElastic; _dataElastic = new PowerLaw3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcStress();
 } // test_calcStressTimeDep
@@ -158,7 +158,7 @@
 
   delete _dataElastic; _dataElastic = new PowerLaw3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcElasticConsts();
 } // test_calcElasticConstsTimeDep
@@ -173,7 +173,7 @@
 
   delete _dataElastic; _dataElastic = new PowerLaw3DTimeDepData();
 
-  double dt = 2.0e+5;
+  PylithScalar dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_updateStateVars();
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::DruckerPrager3DElasticData::_numVarsQuadPt = 6;
 
-const double pylith::materials::DruckerPrager3DElasticData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::DruckerPrager3DElasticData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::DruckerPrager3DElasticData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::DruckerPrager3DElasticData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::DruckerPrager3DElasticData::_dtStableImplicit =   1.00000000e+10;
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_dtStableImplicit =   1.00000000e+10;
 
 const int pylith::materials::DruckerPrager3DElasticData::_numPropertyValues[] = {
 1,
@@ -78,7 +78,7 @@
 "plastic-strain-xz",
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_dbProperties[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -93,7 +93,7 @@
   4.36332313e-01,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_dbStateVars[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -108,7 +108,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_properties[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -123,7 +123,7 @@
   1.89338478e-01,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_stateVars[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_stateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -138,7 +138,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -153,7 +153,7 @@
   1.89338478e-01,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_stateVarsNondim[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -168,12 +168,12 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_density[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_strain[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -188,7 +188,7 @@
   4.60000000e-04,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_stress[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_stress[] = {
  -2.24790000e+07,
  -2.24780000e+07,
  -2.24770000e+07,
@@ -203,7 +203,7 @@
  -1.09600000e+06,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_elasticConsts[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   2.25000000e+10,
@@ -278,7 +278,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_initialStress[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -293,7 +293,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_initialStrain[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_initialStrain[] = {
   3.10000000e-04,
   3.20000000e-04,
   3.30000000e-04,
@@ -308,7 +308,7 @@
   6.60000000e-04,
 };
 
-const double pylith::materials::DruckerPrager3DElasticData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_stateVarsUpdated[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -342,19 +342,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::DruckerPrager3DElasticData::~DruckerPrager3DElasticData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::DruckerPrager3DTimeDepData::_numVarsQuadPt = 6;
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_dtStableImplicit =   1.00000000e+30;
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_dtStableImplicit =   1.00000000e+30;
 
 const int pylith::materials::DruckerPrager3DTimeDepData::_numPropertyValues[] = {
 1,
@@ -78,7 +78,7 @@
 "plastic-strain-xz",
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_dbProperties[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -93,7 +93,7 @@
   4.36332313e-01,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_dbStateVars[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -108,7 +108,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_properties[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -123,7 +123,7 @@
   1.89338478e-01,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_stateVars[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_stateVars[] = {
   4.10000000e-05,
   4.20000000e-05,
   4.30000000e-05,
@@ -138,7 +138,7 @@
   1.60000000e-05,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -153,7 +153,7 @@
   1.89338478e-01,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_stateVarsNondim[] = {
   4.10000000e-05,
   4.20000000e-05,
   4.30000000e-05,
@@ -168,12 +168,12 @@
   1.60000000e-05,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_density[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_strain[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -188,7 +188,7 @@
   4.60000000e-04,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_stress[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_stress[] = {
   5.55066469e+05,
   5.54377286e+05,
   5.53688104e+05,
@@ -203,7 +203,7 @@
  -3.01017164e+05,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_elasticConsts[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_elasticConsts[] = {
   2.69552119e+10,
   2.61171422e+10,
   2.52103070e+10,
@@ -278,7 +278,7 @@
   2.06328375e+08,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_initialStress[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -293,7 +293,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_initialStrain[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_initialStrain[] = {
   3.60000000e-05,
   3.50000000e-05,
   3.40000000e-05,
@@ -308,7 +308,7 @@
   6.40000000e-05,
 };
 
-const double pylith::materials::DruckerPrager3DTimeDepData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_stateVarsUpdated[] = {
   6.92302201e-05,
   8.02677575e-05,
   9.13052948e-05,
@@ -342,19 +342,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::DruckerPrager3DTimeDepData::~DruckerPrager3DTimeDepData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::ElasticIsotropic3DData::_numVarsQuadPt = 0;
 
-const double pylith::materials::ElasticIsotropic3DData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticIsotropic3DData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::ElasticIsotropic3DData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::ElasticIsotropic3DData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticIsotropic3DData::_dtStableImplicit =   1.00000000e+30;
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_dtStableImplicit =   1.00000000e+30;
 
 const int pylith::materials::ElasticIsotropic3DData::_numPropertyValues[] = {
 1,
@@ -63,7 +63,7 @@
 
 const char** pylith::materials::ElasticIsotropic3DData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticIsotropic3DData::_dbProperties[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -72,9 +72,9 @@
   2.07846097e+03,
 };
 
-const double* pylith::materials::ElasticIsotropic3DData::_dbStateVars = 0;
+const PylithScalar* pylith::materials::ElasticIsotropic3DData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticIsotropic3DData::_properties[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -83,9 +83,9 @@
   2.88000000e+09,
 };
 
-const double* pylith::materials::ElasticIsotropic3DData::_stateVars = 0;
+const PylithScalar* pylith::materials::ElasticIsotropic3DData::_stateVars = 0;
 
-const double pylith::materials::ElasticIsotropic3DData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -94,14 +94,14 @@
   1.28000000e-01,
 };
 
-const double* pylith::materials::ElasticIsotropic3DData::_stateVarsNondim = 0;
+const PylithScalar* pylith::materials::ElasticIsotropic3DData::_stateVarsNondim = 0;
 
-const double pylith::materials::ElasticIsotropic3DData::_density[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::ElasticIsotropic3DData::_strain[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -116,7 +116,7 @@
   4.60000000e-04,
 };
 
-const double pylith::materials::ElasticIsotropic3DData::_stress[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_stress[] = {
  -2.24790000e+07,
  -2.24780000e+07,
  -2.24770000e+07,
@@ -131,7 +131,7 @@
  -1.09600000e+06,
 };
 
-const double pylith::materials::ElasticIsotropic3DData::_elasticConsts[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   2.25000000e+10,
@@ -206,7 +206,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::ElasticIsotropic3DData::_initialStress[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -221,7 +221,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::ElasticIsotropic3DData::_initialStrain[] = {
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_initialStrain[] = {
   3.10000000e-04,
   3.20000000e-04,
   3.30000000e-04,
@@ -236,7 +236,7 @@
   6.60000000e-04,
 };
 
-const double* pylith::materials::ElasticIsotropic3DData::_stateVarsUpdated = 0;
+const PylithScalar* pylith::materials::ElasticIsotropic3DData::_stateVarsUpdated = 0;
 
 pylith::materials::ElasticIsotropic3DData::ElasticIsotropic3DData(void)
 { // constructor
@@ -257,19 +257,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::ElasticIsotropic3DData::~ElasticIsotropic3DData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char** _dbStateVarValues;
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double* _dbStateVars;
+  static const PylithScalar* _dbStateVars;
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double* _stateVars;
+  static const PylithScalar* _stateVars;
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double* _stateVarsNondim;
+  static const PylithScalar* _stateVarsNondim;
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double* _stateVarsUpdated;
+  static const PylithScalar* _stateVarsUpdated;
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -42,16 +42,16 @@
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public:
 
-  double dtStableImplicit; ///< Stable time step for implicit time stepping.
-  double* density; ///< Density at location.
-  double* strain; ///< Strain at location.
-  double* stress; ///< Stress at location.
-  double* elasticConsts; ///< Elastic constants at location.
+  PylithScalar dtStableImplicit; ///< Stable time step for implicit time stepping.
+  PylithScalar* density; ///< Density at location.
+  PylithScalar* strain; ///< Strain at location.
+  PylithScalar* stress; ///< Stress at location.
+  PylithScalar* elasticConsts; ///< Elastic constants at location.
 
-  double* initialStress; ///< Initial stress at location.
-  double* initialStrain; ///< Initial strain at location.
+  PylithScalar* initialStress; ///< Initial stress at location.
+  PylithScalar* initialStrain; ///< Initial strain at location.
 
-  double* stateVarsUpdated; ///< Updated state variables at location.
+  PylithScalar* stateVarsUpdated; ///< Updated state variables at location.
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::ElasticPlaneStrainData::_numVarsQuadPt = 0;
 
-const double pylith::materials::ElasticPlaneStrainData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticPlaneStrainData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::ElasticPlaneStrainData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::ElasticPlaneStrainData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticPlaneStrainData::_dtStableImplicit =   1.00000000e+30;
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_dtStableImplicit =   1.00000000e+30;
 
 const int pylith::materials::ElasticPlaneStrainData::_numPropertyValues[] = {
 1,
@@ -63,7 +63,7 @@
 
 const char** pylith::materials::ElasticPlaneStrainData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticPlaneStrainData::_dbProperties[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -72,9 +72,9 @@
   2.07846097e+03,
 };
 
-const double* pylith::materials::ElasticPlaneStrainData::_dbStateVars = 0;
+const PylithScalar* pylith::materials::ElasticPlaneStrainData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticPlaneStrainData::_properties[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -83,9 +83,9 @@
   2.88000000e+09,
 };
 
-const double* pylith::materials::ElasticPlaneStrainData::_stateVars = 0;
+const PylithScalar* pylith::materials::ElasticPlaneStrainData::_stateVars = 0;
 
-const double pylith::materials::ElasticPlaneStrainData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -94,14 +94,14 @@
   1.28000000e-01,
 };
 
-const double* pylith::materials::ElasticPlaneStrainData::_stateVarsNondim = 0;
+const PylithScalar* pylith::materials::ElasticPlaneStrainData::_stateVarsNondim = 0;
 
-const double pylith::materials::ElasticPlaneStrainData::_density[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::ElasticPlaneStrainData::_strain[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -110,7 +110,7 @@
   4.30000000e-04,
 };
 
-const double pylith::materials::ElasticPlaneStrainData::_stress[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_stress[] = {
  -1.79790000e+07,
  -1.79780000e+07,
  -8.97700000e+06,
@@ -119,7 +119,7 @@
  -1.09900000e+06,
 };
 
-const double pylith::materials::ElasticPlaneStrainData::_elasticConsts[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   0.00000000e+00,
@@ -140,7 +140,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::ElasticPlaneStrainData::_initialStress[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -149,7 +149,7 @@
   5.30000000e+04,
 };
 
-const double pylith::materials::ElasticPlaneStrainData::_initialStrain[] = {
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_initialStrain[] = {
   3.10000000e-04,
   3.20000000e-04,
   3.30000000e-04,
@@ -158,7 +158,7 @@
   6.30000000e-04,
 };
 
-const double* pylith::materials::ElasticPlaneStrainData::_stateVarsUpdated = 0;
+const PylithScalar* pylith::materials::ElasticPlaneStrainData::_stateVarsUpdated = 0;
 
 pylith::materials::ElasticPlaneStrainData::ElasticPlaneStrainData(void)
 { // constructor
@@ -179,19 +179,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::ElasticPlaneStrainData::~ElasticPlaneStrainData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char** _dbStateVarValues;
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double* _dbStateVars;
+  static const PylithScalar* _dbStateVars;
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double* _stateVars;
+  static const PylithScalar* _stateVars;
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double* _stateVarsNondim;
+  static const PylithScalar* _stateVarsNondim;
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double* _stateVarsUpdated;
+  static const PylithScalar* _stateVarsUpdated;
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::ElasticPlaneStressData::_numVarsQuadPt = 0;
 
-const double pylith::materials::ElasticPlaneStressData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticPlaneStressData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticPlaneStressData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::ElasticPlaneStressData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::ElasticPlaneStressData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::ElasticPlaneStressData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::ElasticPlaneStressData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticPlaneStressData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticPlaneStressData::_dtStableImplicit =   1.00000000e+30;
+const PylithScalar pylith::materials::ElasticPlaneStressData::_dtStableImplicit =   1.00000000e+30;
 
 const int pylith::materials::ElasticPlaneStressData::_numPropertyValues[] = {
 1,
@@ -63,7 +63,7 @@
 
 const char** pylith::materials::ElasticPlaneStressData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticPlaneStressData::_dbProperties[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -72,9 +72,9 @@
   2.07846097e+03,
 };
 
-const double* pylith::materials::ElasticPlaneStressData::_dbStateVars = 0;
+const PylithScalar* pylith::materials::ElasticPlaneStressData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticPlaneStressData::_properties[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -83,9 +83,9 @@
   2.88000000e+09,
 };
 
-const double* pylith::materials::ElasticPlaneStressData::_stateVars = 0;
+const PylithScalar* pylith::materials::ElasticPlaneStressData::_stateVars = 0;
 
-const double pylith::materials::ElasticPlaneStressData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -94,14 +94,14 @@
   1.28000000e-01,
 };
 
-const double* pylith::materials::ElasticPlaneStressData::_stateVarsNondim = 0;
+const PylithScalar* pylith::materials::ElasticPlaneStressData::_stateVarsNondim = 0;
 
-const double pylith::materials::ElasticPlaneStressData::_density[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::ElasticPlaneStressData::_strain[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -110,7 +110,7 @@
   4.30000000e-04,
 };
 
-const double pylith::materials::ElasticPlaneStressData::_stress[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_stress[] = {
  -1.49790000e+07,
  -1.49780000e+07,
  -8.97700000e+06,
@@ -119,7 +119,7 @@
  -1.09900000e+06,
 };
 
-const double pylith::materials::ElasticPlaneStressData::_elasticConsts[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_elasticConsts[] = {
   6.00000000e+10,
   1.50000000e+10,
   0.00000000e+00,
@@ -140,7 +140,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::ElasticPlaneStressData::_initialStress[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -149,7 +149,7 @@
   5.30000000e+04,
 };
 
-const double pylith::materials::ElasticPlaneStressData::_initialStrain[] = {
+const PylithScalar pylith::materials::ElasticPlaneStressData::_initialStrain[] = {
   3.10000000e-04,
   3.20000000e-04,
   3.30000000e-04,
@@ -158,7 +158,7 @@
   6.30000000e-04,
 };
 
-const double* pylith::materials::ElasticPlaneStressData::_stateVarsUpdated = 0;
+const PylithScalar* pylith::materials::ElasticPlaneStressData::_stateVarsUpdated = 0;
 
 pylith::materials::ElasticPlaneStressData::ElasticPlaneStressData(void)
 { // constructor
@@ -179,19 +179,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::ElasticPlaneStressData::~ElasticPlaneStressData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char** _dbStateVarValues;
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double* _dbStateVars;
+  static const PylithScalar* _dbStateVars;
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double* _stateVars;
+  static const PylithScalar* _stateVars;
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double* _stateVarsNondim;
+  static const PylithScalar* _stateVarsNondim;
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double* _stateVarsUpdated;
+  static const PylithScalar* _stateVarsUpdated;
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::ElasticStrain1DData::_numVarsQuadPt = 0;
 
-const double pylith::materials::ElasticStrain1DData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticStrain1DData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticStrain1DData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::ElasticStrain1DData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::ElasticStrain1DData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::ElasticStrain1DData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::ElasticStrain1DData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticStrain1DData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticStrain1DData::_dtStableImplicit =   1.00000000e+30;
+const PylithScalar pylith::materials::ElasticStrain1DData::_dtStableImplicit =   1.00000000e+30;
 
 const int pylith::materials::ElasticStrain1DData::_numPropertyValues[] = {
 1,
@@ -63,7 +63,7 @@
 
 const char** pylith::materials::ElasticStrain1DData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticStrain1DData::_dbProperties[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -72,9 +72,9 @@
   2.07846097e+03,
 };
 
-const double* pylith::materials::ElasticStrain1DData::_dbStateVars = 0;
+const PylithScalar* pylith::materials::ElasticStrain1DData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticStrain1DData::_properties[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -83,9 +83,9 @@
   2.88000000e+09,
 };
 
-const double* pylith::materials::ElasticStrain1DData::_stateVars = 0;
+const PylithScalar* pylith::materials::ElasticStrain1DData::_stateVars = 0;
 
-const double pylith::materials::ElasticStrain1DData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -94,39 +94,39 @@
   1.28000000e-01,
 };
 
-const double* pylith::materials::ElasticStrain1DData::_stateVarsNondim = 0;
+const PylithScalar* pylith::materials::ElasticStrain1DData::_stateVarsNondim = 0;
 
-const double pylith::materials::ElasticStrain1DData::_density[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::ElasticStrain1DData::_strain[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_strain[] = {
   1.10000000e-04,
   4.10000000e-04,
 };
 
-const double pylith::materials::ElasticStrain1DData::_stress[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_stress[] = {
  -1.34790000e+07,
  -1.67700000e+06,
 };
 
-const double pylith::materials::ElasticStrain1DData::_elasticConsts[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_elasticConsts[] = {
   6.75000000e+10,
   8.64000000e+09,
 };
 
-const double pylith::materials::ElasticStrain1DData::_initialStress[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_initialStress[] = {
   2.10000000e+04,
   5.10000000e+04,
 };
 
-const double pylith::materials::ElasticStrain1DData::_initialStrain[] = {
+const PylithScalar pylith::materials::ElasticStrain1DData::_initialStrain[] = {
   3.10000000e-04,
   6.10000000e-04,
 };
 
-const double* pylith::materials::ElasticStrain1DData::_stateVarsUpdated = 0;
+const PylithScalar* pylith::materials::ElasticStrain1DData::_stateVarsUpdated = 0;
 
 pylith::materials::ElasticStrain1DData::ElasticStrain1DData(void)
 { // constructor
@@ -147,19 +147,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::ElasticStrain1DData::~ElasticStrain1DData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char** _dbStateVarValues;
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double* _dbStateVars;
+  static const PylithScalar* _dbStateVars;
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double* _stateVars;
+  static const PylithScalar* _stateVars;
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double* _stateVarsNondim;
+  static const PylithScalar* _stateVarsNondim;
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double* _stateVarsUpdated;
+  static const PylithScalar* _stateVarsUpdated;
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::ElasticStress1DData::_numVarsQuadPt = 0;
 
-const double pylith::materials::ElasticStress1DData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticStress1DData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticStress1DData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::ElasticStress1DData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::ElasticStress1DData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::ElasticStress1DData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::ElasticStress1DData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::ElasticStress1DData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::ElasticStress1DData::_dtStableImplicit =   1.00000000e+30;
+const PylithScalar pylith::materials::ElasticStress1DData::_dtStableImplicit =   1.00000000e+30;
 
 const int pylith::materials::ElasticStress1DData::_numPropertyValues[] = {
 1,
@@ -63,7 +63,7 @@
 
 const char** pylith::materials::ElasticStress1DData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticStress1DData::_dbProperties[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -72,9 +72,9 @@
   2.07846097e+03,
 };
 
-const double* pylith::materials::ElasticStress1DData::_dbStateVars = 0;
+const PylithScalar* pylith::materials::ElasticStress1DData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticStress1DData::_properties[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -83,9 +83,9 @@
   2.88000000e+09,
 };
 
-const double* pylith::materials::ElasticStress1DData::_stateVars = 0;
+const PylithScalar* pylith::materials::ElasticStress1DData::_stateVars = 0;
 
-const double pylith::materials::ElasticStress1DData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -94,39 +94,39 @@
   1.28000000e-01,
 };
 
-const double* pylith::materials::ElasticStress1DData::_stateVarsNondim = 0;
+const PylithScalar* pylith::materials::ElasticStress1DData::_stateVarsNondim = 0;
 
-const double pylith::materials::ElasticStress1DData::_density[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::ElasticStress1DData::_strain[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_strain[] = {
   1.10000000e-04,
   4.10000000e-04,
 };
 
-const double pylith::materials::ElasticStress1DData::_stress[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_stress[] = {
  -1.12290000e+07,
  -1.38900000e+06,
 };
 
-const double pylith::materials::ElasticStress1DData::_elasticConsts[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_elasticConsts[] = {
   5.62500000e+10,
   7.20000000e+09,
 };
 
-const double pylith::materials::ElasticStress1DData::_initialStress[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_initialStress[] = {
   2.10000000e+04,
   5.10000000e+04,
 };
 
-const double pylith::materials::ElasticStress1DData::_initialStrain[] = {
+const PylithScalar pylith::materials::ElasticStress1DData::_initialStrain[] = {
   3.10000000e-04,
   6.10000000e-04,
 };
 
-const double* pylith::materials::ElasticStress1DData::_stateVarsUpdated = 0;
+const PylithScalar* pylith::materials::ElasticStress1DData::_stateVarsUpdated = 0;
 
 pylith::materials::ElasticStress1DData::ElasticStress1DData(void)
 { // constructor
@@ -147,19 +147,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::ElasticStress1DData::~ElasticStress1DData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char** _dbStateVarValues;
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double* _dbStateVars;
+  static const PylithScalar* _dbStateVars;
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double* _stateVars;
+  static const PylithScalar* _stateVars;
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double* _stateVarsNondim;
+  static const PylithScalar* _stateVarsNondim;
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double* _stateVarsUpdated;
+  static const PylithScalar* _stateVarsUpdated;
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numVarsQuadPt = 24;
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+06;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+06;
 
 const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numPropertyValues[] = {
 1,
@@ -105,7 +105,7 @@
 "viscous-strain-3-xz",
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_dbProperties[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -126,7 +126,7 @@
   1.00000000e+20,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_dbStateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -177,7 +177,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_properties[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -198,7 +198,7 @@
   1.73611111e+11,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -249,7 +249,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -270,7 +270,7 @@
   1.73611111e+11,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVarsNondim[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -321,12 +321,12 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_density[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_strain[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_strain[] = {
   1.10000000e-04,
   2.20000000e-04,
   3.30000000e-04,
@@ -341,7 +341,7 @@
   6.70000000e-04,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_stress[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_stress[] = {
   1.62660000e+07,
   2.11720000e+07,
   2.60780000e+07,
@@ -356,7 +356,7 @@
   3.53504000e+06,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_elasticConsts[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   2.25000000e+10,
@@ -431,7 +431,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_initialStress[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -446,7 +446,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_initialStrain[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_initialStrain[] = {
   3.10000000e-05,
   3.20000000e-05,
   3.30000000e-05,
@@ -461,7 +461,7 @@
   6.60000000e-05,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVarsUpdated[] = {
   1.10000000e-04,
   2.20000000e-04,
   3.30000000e-04,
@@ -531,19 +531,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::GenMaxwellIsotropic3DElasticData::~GenMaxwellIsotropic3DElasticData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::GenMaxwellIsotropic3DTimeDepData::_numVarsQuadPt = 24;
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+06;
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+06;
 
 const int pylith::materials::GenMaxwellIsotropic3DTimeDepData::_numPropertyValues[] = {
 1,
@@ -105,7 +105,7 @@
 "viscous-strain-3-xz",
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_dbProperties[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -126,7 +126,7 @@
   1.00000000e+20,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_dbStateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -177,7 +177,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_properties[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -198,7 +198,7 @@
   1.73611111e+11,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_stateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_stateVars[] = {
   1.10000000e-04,
   2.20000000e-04,
   3.30000000e-04,
@@ -249,7 +249,7 @@
   6.70000000e-04,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -270,7 +270,7 @@
   1.73611111e+11,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_stateVarsNondim[] = {
   1.10000000e-04,
   2.20000000e-04,
   3.30000000e-04,
@@ -321,12 +321,12 @@
   6.70000000e-04,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_density[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_strain[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_strain[] = {
   1.20000000e-04,
   2.30000000e-04,
   3.40000000e-04,
@@ -341,7 +341,7 @@
   6.80000000e-04,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_stress[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_stress[] = {
   1.73628741e+07,
   2.22970000e+07,
   2.72311259e+07,
@@ -356,7 +356,7 @@
   3.82063657e+06,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_elasticConsts[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_elasticConsts[] = {
   6.74761292e+10,
   2.25119367e+10,
   2.25119367e+10,
@@ -431,7 +431,7 @@
   5.75992605e+09,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_initialStress[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -446,7 +446,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_initialStrain[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_initialStrain[] = {
   3.10000000e-05,
   3.20000000e-05,
   3.30000000e-05,
@@ -461,7 +461,7 @@
   6.60000000e-05,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DTimeDepData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_stateVarsUpdated[] = {
   1.20000000e-04,
   2.30000000e-04,
   3.40000000e-04,
@@ -531,19 +531,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::GenMaxwellIsotropic3DTimeDepData::~GenMaxwellIsotropic3DTimeDepData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::GenMaxwellPlaneStrainElasticData::_numVarsQuadPt = 16;
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_dtStableImplicit =   8.88888889e+06;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_dtStableImplicit =   8.88888889e+06;
 
 const int pylith::materials::GenMaxwellPlaneStrainElasticData::_numPropertyValues[] = {
 1,
@@ -98,7 +98,7 @@
 "viscous-strain-3-xy",
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_dbProperties[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -119,7 +119,7 @@
   1.00000000e+20,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_dbStateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_dbStateVars[] = {
   1.50000000e+04,
   0.00000000e+00,
   0.00000000e+00,
@@ -154,7 +154,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_properties[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -175,7 +175,7 @@
   1.73611111e+11,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_stateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_stateVars[] = {
   1.50000000e+04,
   0.00000000e+00,
   0.00000000e+00,
@@ -210,7 +210,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -231,7 +231,7 @@
   1.73611111e+11,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_stateVarsNondim[] = {
   6.66666667e-07,
   0.00000000e+00,
   0.00000000e+00,
@@ -266,12 +266,12 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_density[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_strain[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.40000000e-04,
@@ -280,7 +280,7 @@
   4.40000000e-04,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_stress[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_stress[] = {
   7.33350000e+06,
   7.73950000e+06,
   4.79400000e+06,
@@ -289,7 +289,7 @@
   2.21976000e+06,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_elasticConsts[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   0.00000000e+00,
@@ -310,7 +310,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_initialStress[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.40000000e+04,
@@ -319,7 +319,7 @@
   5.40000000e+04,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_initialStrain[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_initialStrain[] = {
   3.10000000e-05,
   3.20000000e-05,
   3.40000000e-05,
@@ -328,7 +328,7 @@
   6.40000000e-05,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainElasticData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_stateVarsUpdated[] = {
   1.50000000e+04,
   1.10000000e-04,
   1.20000000e-04,
@@ -382,19 +382,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::GenMaxwellPlaneStrainElasticData::~GenMaxwellPlaneStrainElasticData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::GenMaxwellPlaneStrainTimeDepData::_numVarsQuadPt = 16;
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_dtStableImplicit =   8.88888889e+06;
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_dtStableImplicit =   8.88888889e+06;
 
 const int pylith::materials::GenMaxwellPlaneStrainTimeDepData::_numPropertyValues[] = {
 1,
@@ -98,7 +98,7 @@
 "viscous-strain-3-xy",
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_dbProperties[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -119,7 +119,7 @@
   1.00000000e+20,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_dbStateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_dbStateVars[] = {
   2.00000000e+04,
   0.00000000e+00,
   0.00000000e+00,
@@ -154,7 +154,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_properties[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -175,7 +175,7 @@
   1.73611111e+11,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_stateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_stateVars[] = {
   2.00000000e+04,
   1.10000000e-04,
   1.20000000e-04,
@@ -210,7 +210,7 @@
   4.40000000e-04,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -231,7 +231,7 @@
   1.73611111e+11,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_stateVarsNondim[] = {
   8.88888889e-07,
   1.10000000e-04,
   1.20000000e-04,
@@ -266,12 +266,12 @@
   4.40000000e-04,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_density[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_strain[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_strain[] = {
   1.20000000e-04,
   1.30000000e-04,
   1.50000000e-04,
@@ -280,7 +280,7 @@
   4.50000000e-04,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_stress[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_stress[] = {
   8.26999455e+06,
   8.72927873e+06,
   6.46662036e+06,
@@ -289,7 +289,7 @@
   2.49387045e+06,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_elasticConsts[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_elasticConsts[] = {
   6.74761273e+10,
   2.25119358e+10,
   0.00000000e+00,
@@ -310,7 +310,7 @@
   5.75992628e+09,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_initialStress[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.40000000e+04,
@@ -319,7 +319,7 @@
   5.40000000e+04,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_initialStrain[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_initialStrain[] = {
   3.60000000e-05,
   3.50000000e-05,
   3.30000000e-05,
@@ -328,7 +328,7 @@
   6.60000000e-05,
 };
 
-const double pylith::materials::GenMaxwellPlaneStrainTimeDepData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_stateVarsUpdated[] = {
   2.00000000e+04,
   1.20000000e-04,
   1.30000000e-04,
@@ -382,19 +382,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::GenMaxwellPlaneStrainTimeDepData::~GenMaxwellPlaneStrainTimeDepData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_numVarsQuadPt = 27;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+05;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+05;
 
 const int pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_numPropertyValues[] = {
 1,
@@ -143,7 +143,7 @@
 "viscous-mean-strain-3",
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_dbProperties[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -176,7 +176,7 @@
   2.00000000e+20,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_dbStateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -233,7 +233,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_properties[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   3.75000000e+10,
@@ -266,7 +266,7 @@
   4.16666667e+10,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_stateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_stateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -323,7 +323,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.66666667e+00,
@@ -356,7 +356,7 @@
   4.16666667e+10,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_stateVarsNondim[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -413,12 +413,12 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_density[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_strain[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_strain[] = {
   1.10000000e-04,
   2.20000000e-04,
   3.30000000e-04,
@@ -433,7 +433,7 @@
   6.70000000e-04,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_stress[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_stress[] = {
  -1.57290000e+07,
  -1.12280000e+07,
  -6.72700000e+06,
@@ -448,7 +448,7 @@
   1.13600000e+05,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_elasticConsts[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   2.25000000e+10,
@@ -523,7 +523,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_initialStress[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -538,7 +538,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_initialStrain[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_initialStrain[] = {
   3.10000000e-04,
   3.20000000e-04,
   3.30000000e-04,
@@ -553,7 +553,7 @@
   6.60000000e-04,
 };
 
-const double* pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_stateVarsUpdated = 0;
+const PylithScalar* pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_stateVarsUpdated = 0;
 
 pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::GenMaxwellQpQsIsotropic3DElasticData(void)
 { // constructor
@@ -574,19 +574,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::~GenMaxwellQpQsIsotropic3DElasticData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double* _stateVarsUpdated;
+  static const PylithScalar* _stateVarsUpdated;
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_numVarsQuadPt = 27;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+05;
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+05;
 
 const int pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_numPropertyValues[] = {
 1,
@@ -143,7 +143,7 @@
 "viscous-mean-strain-3",
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_dbProperties[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -176,7 +176,7 @@
   1.00000000e+20,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_dbStateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -233,7 +233,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_properties[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   3.75000000e+10,
@@ -266,7 +266,7 @@
   1.04166667e+11,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_stateVars[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_stateVars[] = {
   1.10000000e-04,
   2.20000000e-04,
   3.30000000e-04,
@@ -323,7 +323,7 @@
   2.30000000e-04,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.66666667e+00,
@@ -356,7 +356,7 @@
   1.04166667e+11,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_stateVarsNondim[] = {
   1.10000000e-04,
   2.20000000e-04,
   3.30000000e-04,
@@ -413,12 +413,12 @@
   2.30000000e-04,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_density[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_strain[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_strain[] = {
   1.10000000e-04,
   2.20000000e-04,
   3.30000000e-04,
@@ -433,7 +433,7 @@
   6.70000000e-04,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_stress[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_stress[] = {
   1.52472941e+07,
   3.08460297e+07,
   4.64447653e+07,
@@ -448,7 +448,7 @@
   1.31748132e+07,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_elasticConsts[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_elasticConsts[] = {
   6.73240927e+10,
   2.24764147e+10,
   2.24764147e+10,
@@ -523,7 +523,7 @@
   5.75963179e+09,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_initialStress[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -538,7 +538,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_initialStrain[] = {
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_initialStrain[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -553,7 +553,7 @@
   0.00000000e+00,
 };
 
-const double* pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_stateVarsUpdated = 0;
+const PylithScalar* pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_stateVarsUpdated = 0;
 
 pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::GenMaxwellQpQsIsotropic3DTimeDepData(void)
 { // constructor
@@ -574,19 +574,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::~GenMaxwellQpQsIsotropic3DTimeDepData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double* _stateVarsUpdated;
+  static const PylithScalar* _stateVarsUpdated;
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_materials_materialdata_hh)
 #define pylith_materials_materialdata_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace materials {
      class MaterialData;
@@ -57,17 +59,17 @@
   char** dbPropertyValues; ///< Names of db values for properties.
   char** dbStateVarValues; ///< Names of db values for state variables.
 
-  double* dbProperties; ///< Database values for properties at locations.
-  double* dbStateVars; ///< Database values for state variables at locations.
-  double* properties; ///< Properties at locations.
-  double* stateVars; ///< State variables at locations.
-  double* propertiesNondim; ///< Nondimensional properties at locations.
-  double* stateVarsNondim; ///< Nondimensional state variables at locations.
+  PylithScalar* dbProperties; ///< Database values for properties at locations.
+  PylithScalar* dbStateVars; ///< Database values for state variables at locations.
+  PylithScalar* properties; ///< Properties at locations.
+  PylithScalar* stateVars; ///< State variables at locations.
+  PylithScalar* propertiesNondim; ///< Nondimensional properties at locations.
+  PylithScalar* stateVarsNondim; ///< Nondimensional state variables at locations.
 
-  double lengthScale; ///< Length scale for nondimensionalization.
-  double timeScale; ///< Time scale for nondimensionalization.
-  double pressureScale; ///< Pressure scale for nondimensionalization.
-  double densityScale; ///< Density scale for nondimensionalization.
+  PylithScalar lengthScale; ///< Length scale for nondimensionalization.
+  PylithScalar timeScale; ///< Time scale for nondimensionalization.
+  PylithScalar pressureScale; ///< Pressure scale for nondimensionalization.
+  PylithScalar densityScale; ///< Density scale for nondimensionalization.
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::MaxwellIsotropic3DElasticData::_numVarsQuadPt = 12;
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+06;
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+06;
 
 const int pylith::materials::MaxwellIsotropic3DElasticData::_numPropertyValues[] = {
 1,
@@ -81,7 +81,7 @@
 "viscous-strain-xz",
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_dbProperties[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -92,7 +92,7 @@
   1.00000000e+18,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_dbStateVars[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -119,7 +119,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_properties[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -130,7 +130,7 @@
   3.47222222e+08,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_stateVars[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_stateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -157,7 +157,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -168,7 +168,7 @@
   3.47222222e+08,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_stateVarsNondim[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -195,12 +195,12 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_density[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_strain[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -215,7 +215,7 @@
   4.60000000e-04,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_stress[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_stress[] = {
   9.51600000e+06,
   9.92200000e+06,
   1.03280000e+07,
@@ -230,7 +230,7 @@
   2.32544000e+06,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_elasticConsts[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   2.25000000e+10,
@@ -305,7 +305,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_initialStress[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -320,7 +320,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_initialStrain[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_initialStrain[] = {
   3.10000000e-05,
   3.20000000e-05,
   3.30000000e-05,
@@ -335,7 +335,7 @@
   6.60000000e-05,
 };
 
-const double pylith::materials::MaxwellIsotropic3DElasticData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_stateVarsUpdated[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -381,19 +381,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::MaxwellIsotropic3DElasticData::~MaxwellIsotropic3DElasticData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::MaxwellIsotropic3DTimeDepData::_numVarsQuadPt = 12;
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+06;
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+06;
 
 const int pylith::materials::MaxwellIsotropic3DTimeDepData::_numPropertyValues[] = {
 1,
@@ -81,7 +81,7 @@
 "viscous-strain-xz",
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_dbProperties[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -92,7 +92,7 @@
   1.00000000e+19,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_dbStateVars[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -107,7 +107,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_properties[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -118,7 +118,7 @@
   3.47222222e+09,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_stateVars[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_stateVars[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -145,7 +145,7 @@
   4.60000000e-04,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -156,7 +156,7 @@
   3.47222222e+09,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_stateVarsNondim[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -183,12 +183,12 @@
   4.60000000e-04,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_density[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_strain[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_strain[] = {
   1.20000000e-04,
   1.30000000e-04,
   1.40000000e-04,
@@ -203,7 +203,7 @@
   4.70000000e-04,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_stress[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_stress[] = {
   1.02155205e+07,
   1.07095000e+07,
   1.12034795e+07,
@@ -218,7 +218,7 @@
   2.39440573e+06,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_elasticConsts[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_elasticConsts[] = {
   6.74326019e+10,
   2.25336999e+10,
   2.25336999e+10,
@@ -293,7 +293,7 @@
   5.75983408e+09,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_initialStress[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -308,7 +308,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_initialStrain[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_initialStrain[] = {
   3.60000000e-05,
   3.50000000e-05,
   3.40000000e-05,
@@ -323,7 +323,7 @@
   6.40000000e-05,
 };
 
-const double pylith::materials::MaxwellIsotropic3DTimeDepData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_stateVarsUpdated[] = {
   1.20000000e-04,
   1.30000000e-04,
   1.40000000e-04,
@@ -369,19 +369,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::MaxwellIsotropic3DTimeDepData::~MaxwellIsotropic3DTimeDepData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::MaxwellPlaneStrainElasticData::_numVarsQuadPt = 8;
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_dtStableImplicit =   8.88888889e+06;
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_dtStableImplicit =   8.88888889e+06;
 
 const int pylith::materials::MaxwellPlaneStrainElasticData::_numPropertyValues[] = {
 1,
@@ -78,7 +78,7 @@
 "viscous-strain-xy",
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_dbProperties[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -89,7 +89,7 @@
   1.00000000e+18,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_dbStateVars[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_dbStateVars[] = {
   1.50000000e+04,
   0.00000000e+00,
   0.00000000e+00,
@@ -108,7 +108,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_properties[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -119,7 +119,7 @@
   3.47222222e+08,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_stateVars[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_stateVars[] = {
   1.50000000e+04,
   0.00000000e+00,
   0.00000000e+00,
@@ -138,7 +138,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -149,7 +149,7 @@
   3.47222222e+08,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_stateVarsNondim[] = {
   6.66666667e-07,
   0.00000000e+00,
   0.00000000e+00,
@@ -168,12 +168,12 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_density[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_strain[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.40000000e-04,
@@ -182,7 +182,7 @@
   4.40000000e-04,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_stress[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_stress[] = {
   7.33350000e+06,
   7.73950000e+06,
   4.79400000e+06,
@@ -191,7 +191,7 @@
   2.21976000e+06,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_elasticConsts[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   0.00000000e+00,
@@ -212,7 +212,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_initialStress[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.40000000e+04,
@@ -221,7 +221,7 @@
   5.40000000e+04,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_initialStrain[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_initialStrain[] = {
   3.10000000e-05,
   3.20000000e-05,
   3.40000000e-05,
@@ -230,7 +230,7 @@
   6.40000000e-05,
 };
 
-const double pylith::materials::MaxwellPlaneStrainElasticData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_stateVarsUpdated[] = {
   1.50000000e+04,
   1.10000000e-04,
   1.20000000e-04,
@@ -268,19 +268,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::MaxwellPlaneStrainElasticData::~MaxwellPlaneStrainElasticData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::MaxwellPlaneStrainTimeDepData::_numVarsQuadPt = 8;
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_dtStableImplicit =   8.88888889e+06;
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_dtStableImplicit =   8.88888889e+06;
 
 const int pylith::materials::MaxwellPlaneStrainTimeDepData::_numPropertyValues[] = {
 1,
@@ -78,7 +78,7 @@
 "viscous-strain-xy",
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_dbProperties[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -89,7 +89,7 @@
   1.00000000e+19,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_dbStateVars[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_dbStateVars[] = {
   2.00000000e+04,
   0.00000000e+00,
   0.00000000e+00,
@@ -108,7 +108,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_properties[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -119,7 +119,7 @@
   3.47222222e+09,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_stateVars[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_stateVars[] = {
   2.00000000e+04,
   1.10000000e-04,
   1.20000000e-04,
@@ -138,7 +138,7 @@
   4.40000000e-04,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -149,7 +149,7 @@
   3.47222222e+09,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_stateVarsNondim[] = {
   8.88888889e-07,
   1.10000000e-04,
   1.20000000e-04,
@@ -168,12 +168,12 @@
   4.40000000e-04,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_density[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_strain[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_strain[] = {
   1.20000000e-04,
   1.30000000e-04,
   1.50000000e-04,
@@ -182,7 +182,7 @@
   4.50000000e-04,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_stress[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_stress[] = {
   7.82142817e+06,
   8.31540772e+06,
   5.25970271e+06,
@@ -191,7 +191,7 @@
   2.26569236e+06,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_elasticConsts[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_elasticConsts[] = {
   6.74326010e+10,
   2.25336994e+10,
   0.00000000e+00,
@@ -212,7 +212,7 @@
   5.75983408e+09,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_initialStress[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.40000000e+04,
@@ -221,7 +221,7 @@
   5.40000000e+04,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_initialStrain[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_initialStrain[] = {
   3.60000000e-05,
   3.50000000e-05,
   3.30000000e-05,
@@ -230,7 +230,7 @@
   6.60000000e-05,
 };
 
-const double pylith::materials::MaxwellPlaneStrainTimeDepData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_stateVarsUpdated[] = {
   2.00000000e+04,
   1.20000000e-04,
   1.30000000e-04,
@@ -268,19 +268,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::MaxwellPlaneStrainTimeDepData::~MaxwellPlaneStrainTimeDepData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::PowerLaw3DElasticData::_numVarsQuadPt = 12;
 
-const double pylith::materials::PowerLaw3DElasticData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::PowerLaw3DElasticData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::PowerLaw3DElasticData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::PowerLaw3DElasticData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::PowerLaw3DElasticData::_dtStableImplicit =   4.44444444e+06;
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_dtStableImplicit =   4.44444444e+06;
 
 const int pylith::materials::PowerLaw3DElasticData::_numPropertyValues[] = {
 1,
@@ -85,7 +85,7 @@
 "stress-xz",
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_dbProperties[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -100,7 +100,7 @@
   3.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_dbStateVars[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -127,7 +127,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_properties[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -142,7 +142,7 @@
   3.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_stateVars[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_stateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -169,7 +169,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -184,7 +184,7 @@
   3.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_stateVarsNondim[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -211,12 +211,12 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_density[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_strain[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -231,7 +231,7 @@
   4.60000000e-04,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_stress[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_stress[] = {
  -2.24790000e+07,
  -2.24780000e+07,
  -2.24770000e+07,
@@ -246,7 +246,7 @@
  -1.09600000e+06,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_elasticConsts[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_elasticConsts[] = {
   6.75000000e+10,
   2.25000000e+10,
   2.25000000e+10,
@@ -321,7 +321,7 @@
   5.76000000e+09,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_initialStress[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -336,7 +336,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_initialStrain[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_initialStrain[] = {
   3.10000000e-04,
   3.20000000e-04,
   3.30000000e-04,
@@ -351,7 +351,7 @@
   6.60000000e-04,
 };
 
-const double pylith::materials::PowerLaw3DElasticData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_stateVarsUpdated[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -397,19 +397,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::PowerLaw3DElasticData::~PowerLaw3DElasticData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -37,15 +37,15 @@
 
 const int pylith::materials::PowerLaw3DTimeDepData::_numVarsQuadPt = 12;
 
-const double pylith::materials::PowerLaw3DTimeDepData::_lengthScale =   1.00000000e+03;
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_lengthScale =   1.00000000e+03;
 
-const double pylith::materials::PowerLaw3DTimeDepData::_timeScale =   1.00000000e+00;
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_timeScale =   1.00000000e+00;
 
-const double pylith::materials::PowerLaw3DTimeDepData::_pressureScale =   2.25000000e+10;
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_pressureScale =   2.25000000e+10;
 
-const double pylith::materials::PowerLaw3DTimeDepData::_densityScale =   1.00000000e+03;
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_densityScale =   1.00000000e+03;
 
-const double pylith::materials::PowerLaw3DTimeDepData::_dtStableImplicit =   4.44444444e+06;
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_dtStableImplicit =   4.44444444e+06;
 
 const int pylith::materials::PowerLaw3DTimeDepData::_numPropertyValues[] = {
 1,
@@ -85,7 +85,7 @@
 "stress-xz",
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_dbProperties[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -100,7 +100,7 @@
   3.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_dbStateVars[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_dbStateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -115,7 +115,7 @@
   0.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_properties[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -130,7 +130,7 @@
   3.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_stateVars[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_stateVars[] = {
   4.10000000e-05,
   4.20000000e-05,
   4.30000000e-05,
@@ -157,7 +157,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_propertiesNondim[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_propertiesNondim[] = {
   2.50000000e+00,
   1.00000000e+00,
   1.00000000e+00,
@@ -172,7 +172,7 @@
   3.00000000e+00,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_stateVarsNondim[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_stateVarsNondim[] = {
   4.10000000e-05,
   4.20000000e-05,
   4.30000000e-05,
@@ -199,12 +199,12 @@
   2.48888889e-06,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_density[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_strain[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_strain[] = {
   1.10000000e-04,
   1.20000000e-04,
   1.30000000e-04,
@@ -219,7 +219,7 @@
   4.60000000e-04,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_stress[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_stress[] = {
   7.24875767e+06,
   7.69874295e+06,
   8.14872824e+06,
@@ -234,7 +234,7 @@
   2.24480000e+06,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_elasticConsts[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_elasticConsts[] = {
   6.74326518e+10,
   2.25336747e+10,
   2.25336747e+10,
@@ -309,7 +309,7 @@
   5.75999985e+09,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_initialStress[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_initialStress[] = {
   2.10000000e+04,
   2.20000000e+04,
   2.30000000e+04,
@@ -324,7 +324,7 @@
   5.60000000e+04,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_initialStrain[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_initialStrain[] = {
   3.60000000e-05,
   3.50000000e-05,
   3.40000000e-05,
@@ -339,7 +339,7 @@
   6.40000000e-05,
 };
 
-const double pylith::materials::PowerLaw3DTimeDepData::_stateVarsUpdated[] = {
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_stateVarsUpdated[] = {
   4.08831629e-05,
   4.19057121e-05,
   4.29282614e-05,
@@ -385,19 +385,19 @@
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);
   dbStateVarValues = const_cast<char**>(_dbStateVarValues);
-  dbProperties = const_cast<double*>(_dbProperties);
-  dbStateVars = const_cast<double*>(_dbStateVars);
-  properties = const_cast<double*>(_properties);
-  stateVars = const_cast<double*>(_stateVars);
-  propertiesNondim = const_cast<double*>(_propertiesNondim);
-  stateVarsNondim = const_cast<double*>(_stateVarsNondim);
-  density = const_cast<double*>(_density);
-  strain = const_cast<double*>(_strain);
-  stress = const_cast<double*>(_stress);
-  elasticConsts = const_cast<double*>(_elasticConsts);
-  initialStress = const_cast<double*>(_initialStress);
-  initialStrain = const_cast<double*>(_initialStrain);
-  stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
+  dbProperties = const_cast<PylithScalar*>(_dbProperties);
+  dbStateVars = const_cast<PylithScalar*>(_dbStateVars);
+  properties = const_cast<PylithScalar*>(_properties);
+  stateVars = const_cast<PylithScalar*>(_stateVars);
+  propertiesNondim = const_cast<PylithScalar*>(_propertiesNondim);
+  stateVarsNondim = const_cast<PylithScalar*>(_stateVarsNondim);
+  density = const_cast<PylithScalar*>(_density);
+  strain = const_cast<PylithScalar*>(_strain);
+  stress = const_cast<PylithScalar*>(_stress);
+  elasticConsts = const_cast<PylithScalar*>(_elasticConsts);
+  initialStress = const_cast<PylithScalar*>(_initialStress);
+  initialStrain = const_cast<PylithScalar*>(_initialStrain);
+  stateVarsUpdated = const_cast<PylithScalar*>(_stateVarsUpdated);
 } // constructor
 
 pylith::materials::PowerLaw3DTimeDepData::~PowerLaw3DTimeDepData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,15 +59,15 @@
 
   static const int _numVarsQuadPt;
 
-  static const double _lengthScale;
+  static const PylithScalar _lengthScale;
 
-  static const double _timeScale;
+  static const PylithScalar _timeScale;
 
-  static const double _pressureScale;
+  static const PylithScalar _pressureScale;
 
-  static const double _densityScale;
+  static const PylithScalar _densityScale;
 
-  static const double _dtStableImplicit;
+  static const PylithScalar _dtStableImplicit;
 
   static const int _numPropertyValues[];
 
@@ -77,31 +77,31 @@
 
   static const char* _dbStateVarValues[];
 
-  static const double _dbProperties[];
+  static const PylithScalar _dbProperties[];
 
-  static const double _dbStateVars[];
+  static const PylithScalar _dbStateVars[];
 
-  static const double _properties[];
+  static const PylithScalar _properties[];
 
-  static const double _stateVars[];
+  static const PylithScalar _stateVars[];
 
-  static const double _propertiesNondim[];
+  static const PylithScalar _propertiesNondim[];
 
-  static const double _stateVarsNondim[];
+  static const PylithScalar _stateVarsNondim[];
 
-  static const double _density[];
+  static const PylithScalar _density[];
 
-  static const double _strain[];
+  static const PylithScalar _strain[];
 
-  static const double _stress[];
+  static const PylithScalar _stress[];
 
-  static const double _elasticConsts[];
+  static const PylithScalar _elasticConsts[];
 
-  static const double _initialStress[];
+  static const PylithScalar _initialStress[];
 
-  static const double _initialStrain[];
+  static const PylithScalar _initialStrain[];
 
-  static const double _stateVarsUpdated[];
+  static const PylithScalar _stateVarsUpdated[];
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestCellFilterAvg.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
   const std::string label = "field data";
   const topology::FieldBase::VectorFieldEnum fieldType = 
     topology::FieldBase::MULTI_SCALAR;
-  const double fieldValues[] = {
+  const PylithScalar fieldValues[] = {
     1.1, 1.2,
     2.1, 2.2,
   };
@@ -62,28 +62,28 @@
   const int numBasis = 4;
   const int numQuadPts = 2;
   const int spaceDim = 2;
-  const double basis[] = {
+  const PylithScalar basis[] = {
     1.0, 1.0,
     1.0, 1.0,
     1.0, 1.0,
     1.0, 1.0,
   };
-  const double basisDerivRef[] = {
+  const PylithScalar basisDerivRef[] = {
     1.0, 1.0, 1.0, 1.0,
     1.0, 1.0, 1.0, 1.0,
     1.0, 1.0, 1.0, 1.0,
     1.0, 1.0, 1.0, 1.0,
   };
-  const double quadPtsRef[] = {
+  const PylithScalar quadPtsRef[] = {
     1.0, 0.0,
    -1.0, 0.0,};
-  const double quadWts[] = { 1.5, 0.5 };
-  const double minJacobian = 1.0;
+  const PylithScalar quadWts[] = { 1.5, 0.5 };
+  const PylithScalar minJacobian = 1.0;
 
   const topology::FieldBase::VectorFieldEnum fieldTypeE = 
     topology::FieldBase::SCALAR;
   const int fiberDimE = 1;
-  const double fieldValuesE[] = {
+  const PylithScalar fieldValuesE[] = {
     (1.5*1.1 + 0.5*1.2)/2.0,
     (1.5*2.1 + 0.5*2.2)/2.0,
   };
@@ -114,7 +114,7 @@
   for (SieveMesh::label_sequence::iterator c_iter=cells->begin();
        c_iter != cellsEnd;
        ++c_iter, ++ipt) {
-    const double* values = &fieldValues[ipt*fiberDim];
+    const PylithScalar* values = &fieldValues[ipt*fiberDim];
     section->updatePoint(*c_iter, values);
   } // for
 
@@ -140,9 +140,9 @@
        c_iter != cellsEnd;
        ++c_iter, ++ipt) {
     CPPUNIT_ASSERT_EQUAL(fiberDimE, sectionF->getFiberDimension(*c_iter));
-    const double* values = sectionF->restrictPoint(*c_iter);
+    const PylithScalar* values = sectionF->restrictPoint(*c_iter);
     CPPUNIT_ASSERT(0 != values);
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < fiberDimE; ++i)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
 				   values[i]/fieldValuesE[ipt*fiberDimE+i],

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -135,7 +135,7 @@
       for (topology::SubMesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	   v_iter != verticesEnd;
 	   ++v_iter, ++ipt) {
-	const double* values = &_data->vertexFields[i][ipt*fiberDim];
+	const PylithScalar* values = &_data->vertexFields[i][ipt*fiberDim];
 	section->updatePoint(*v_iter, values);
       } // for
       CPPUNIT_ASSERT_EQUAL(_data->numVertices, ipt);
@@ -185,7 +185,7 @@
       for (topology::SubMesh::SieveMesh::label_sequence::iterator c_iter=cellsBegin;
 	   c_iter != cellsEnd;
 	   ++c_iter, ++icell) {
-	const double* values = &_data->cellFields[i][icell*fiberDim];
+	const PylithScalar* values = &_data->cellFields[i][icell*fiberDim];
 	section->updatePoint(*c_iter, values);
       } // for
       CPPUNIT_ASSERT_EQUAL(_data->numCells, icell);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterFaultMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -130,7 +130,7 @@
       for (topology::SubMesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	   v_iter != verticesEnd;
 	   ++v_iter, ++ipt) {
-	const double* values = &_data->vertexFields[i][ipt*fiberDim];
+	const PylithScalar* values = &_data->vertexFields[i][ipt*fiberDim];
 	section->updatePoint(*v_iter, values);
       } // for
       CPPUNIT_ASSERT_EQUAL(_data->numVertices, ipt);
@@ -180,7 +180,7 @@
       for (topology::SubMesh::SieveMesh::label_sequence::iterator c_iter=cellsBegin;
 	   c_iter != cellsEnd;
 	   ++c_iter, ++icell) {
-	const double* values = &_data->cellFields[i][icell*fiberDim];
+	const PylithScalar* values = &_data->cellFields[i][icell*fiberDim];
 	section->updatePoint(*c_iter, values);
       } // for
       CPPUNIT_ASSERT_EQUAL(_data->numCells, icell);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -20,6 +20,8 @@
 
 #include "TestDataWriterHDF5.hh" // Implementation of class methods
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 #include <hdf5.h> // USES HDF5 API
 
 #if H5_VERS_MAJOR == 1 && H5_VERS_MINOR >= 8
@@ -63,7 +65,7 @@
     int sizeE = (ndimsE > 0 && dimsE[0] > 0) ? 1 : 0;
     for (int i=0; i < ndimsE; ++i)
       sizeE *= dimsE[i];
-    double* dataE = (sizeE > 0) ? new double[sizeE] : 0;
+    PylithScalar* dataE = (sizeE > 0) ? new PylithScalar[sizeE] : 0;
     CPPUNIT_ASSERT(sizeE > 0);
     err = H5Dread(datasetE, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, 
 		  H5P_DEFAULT, (void*) dataE);
@@ -88,7 +90,7 @@
     int size = (ndims > 0 && dims[0] > 0) ? 1 : 0;
     for (int i=0; i < ndims; ++i)
       size *= dims[i];
-    double* data = (size > 0) ? new double[size] : 0;
+    PylithScalar* data = (size > 0) ? new PylithScalar[size] : 0;
     CPPUNIT_ASSERT(size > 0);
     err = H5Dread(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, 
 		  H5P_DEFAULT, (void*) data);
@@ -105,7 +107,7 @@
       CPPUNIT_ASSERT_EQUAL(dimsE[i], dims[i]);
 
     // Compare data values.
-    const double tolerance = 1.0e-6;
+    const PylithScalar tolerance = 1.0e-6;
     CPPUNIT_ASSERT_EQUAL(sizeE, size);
     for (int i=0; i < size; ++i)
       if (dataE[i] != 0.0)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5BCMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -73,7 +73,7 @@
 
   writer.filename(_data->timestepFilename);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -108,7 +108,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -146,7 +146,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtBCMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -71,7 +71,7 @@
 
   writer.filename(_data->timestepFilename);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -106,7 +106,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -144,7 +144,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtFaultMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -74,7 +74,7 @@
 
   writer.filename(_data->timestepFilename);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);
@@ -109,7 +109,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);
@@ -147,7 +147,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,6 +22,8 @@
 
 #include "data/DataWriterData.hh" // USES DataWriterData
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 #include "pylith/topology/Mesh.hh" // USES Mesh
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Fields.hh" // USES Fields
@@ -83,7 +85,7 @@
 
   writer.filename(_data->timestepFilename);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);
@@ -115,7 +117,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);
@@ -153,7 +155,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5ExtSubMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -72,7 +72,7 @@
 
   writer.filename(_data->timestepFilename);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -104,7 +104,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -142,7 +142,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5FaultMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -76,7 +76,7 @@
 
   writer.filename(_data->timestepFilename);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);
@@ -111,7 +111,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);
@@ -149,7 +149,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5Mesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5Mesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5Mesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -83,7 +83,7 @@
 
   writer.filename(_data->timestepFilename);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);
@@ -115,7 +115,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);
@@ -153,7 +153,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterHDF5SubMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -74,7 +74,7 @@
 
   writer.filename(_data->timestepFilename);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -106,7 +106,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -144,7 +144,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -122,7 +122,7 @@
       for (topology::Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	   v_iter != verticesEnd;
 	   ++v_iter, ++ipt) {
-	const double* values = &_data->vertexFields[i][ipt*fiberDim];
+	const PylithScalar* values = &_data->vertexFields[i][ipt*fiberDim];
 	section->updatePoint(*v_iter, values);
       } // for
       CPPUNIT_ASSERT_EQUAL(_data->numVertices, ipt);
@@ -172,7 +172,7 @@
       for (topology::Mesh::SieveMesh::label_sequence::iterator c_iter=cells->begin();
 	   c_iter != cellsEnd;
 	   ++c_iter, ++icell) {
-	const double* values = &_data->cellFields[i][icell*fiberDim];
+	const PylithScalar* values = &_data->cellFields[i][icell*fiberDim];
 	section->updatePoint(*c_iter, values);
       } // for
       CPPUNIT_ASSERT_EQUAL(_data->numCells, icell);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -137,7 +137,7 @@
       for (topology::SubMesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	   v_iter != verticesEnd;
 	   ++v_iter, ++ipt) {
-	const double* values = &_data->vertexFields[i][ipt*fiberDim];
+	const PylithScalar* values = &_data->vertexFields[i][ipt*fiberDim];
 	section->updatePoint(*v_iter, values);
       } // for
       CPPUNIT_ASSERT_EQUAL(_data->numVertices, ipt);
@@ -189,7 +189,7 @@
       for (topology::SubMesh::SieveMesh::label_sequence::iterator c_iter=cellsBegin;
 	   c_iter != cellsEnd;
 	   ++c_iter, ++icell) {
-	const double* values = &_data->cellFields[i][icell*fiberDim];
+	const PylithScalar* values = &_data->cellFields[i][icell*fiberDim];
 	section->updatePoint(*c_iter, values);
       } // for
       CPPUNIT_ASSERT_EQUAL(_data->numCells, icell);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTK.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTK.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTK.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -31,7 +31,7 @@
 // Check VTK file against archived file.
 void
 pylith::meshio::TestDataWriterVTK::checkFile(const char* filenameRoot,
-					     const double t,
+					     const PylithScalar t,
 					     const char* timeFormat)
 { // checkFile
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTK.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTK.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTK.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -27,6 +27,8 @@
 #if !defined(pylith_meshio_testdatawritervtk_hh)
 #define pylith_meshio_testdatawritervtk_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 /// Namespace for pylith package
 namespace pylith {
   namespace meshio {
@@ -49,7 +51,7 @@
    */
   static
   void checkFile(const char* filename,
-		 const double t,
+		 const PylithScalar t,
 		 const char* timeFormat);
   
 }; // class TestDataWriterVTK

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -79,7 +79,7 @@
   CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
   CPPUNIT_ASSERT(false == writer._wroteCellHeader);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -121,7 +121,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -164,7 +164,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKFaultMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -82,7 +82,7 @@
   CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
   CPPUNIT_ASSERT(false == writer._wroteCellHeader);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);
@@ -124,7 +124,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);
@@ -167,7 +167,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_faultMesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -94,7 +94,7 @@
 { // testTimeConstant
   DataWriterVTK<topology::Mesh, MeshField> writer;
 
-  const double value = 4.5;
+  const PylithScalar value = 4.5;
   writer.timeConstant(value);
   CPPUNIT_ASSERT_EQUAL(value, writer._timeConstant);
 } // testTimeConstant
@@ -127,7 +127,7 @@
   CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
   CPPUNIT_ASSERT(false == writer._wroteCellHeader);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);
@@ -169,7 +169,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);
@@ -212,7 +212,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_mesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -80,7 +80,7 @@
   CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
   CPPUNIT_ASSERT(false == writer._wroteCellHeader);
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -122,7 +122,7 @@
 
   const int nfields = _data->numVertexFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);
@@ -165,7 +165,7 @@
 
   const int nfields = _data->numCellFields;
 
-  const double t = _data->time;
+  const PylithScalar t = _data->time;
   const int numTimeSteps = 1;
   if (0 == _data->cellsLabel) {
     writer.open(*_submesh, numTimeSteps);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestExodusII.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestExodusII.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestExodusII.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -22,7 +22,7 @@
 
 #include "pylith/meshio/ExodusII.hh"
 
-#include "pylith/utils/array.hh" // USES int_array, double_array, string_vector
+#include "pylith/utils/array.hh" // USES int_array, scalar_array, string_vector
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestExodusII );
@@ -93,11 +93,11 @@
 } // testHasVar
 
 // ----------------------------------------------------------------------
-// Test getVar(double*).
+// Test getVar(PylithScalar*).
 void
 pylith::meshio::TestExodusII::testGetVarDouble(void)
 { // testGetVarDouble
-  const double coordsE[8] = { -1.0, 0.0, 0.0, 1.0,
+  const PylithScalar coordsE[8] = { -1.0, 0.0, 0.0, 1.0,
 			      0.0, -1.0, 1.0, 0.0 };
 
   const int ndims = 2;
@@ -105,12 +105,12 @@
   dims[0] = 2;
   dims[1] = 4;
   const int size = dims[0]*dims[1];
-  double_array coords(size);
+  scalar_array coords(size);
 
   ExodusII exofile("data/twotri3_12.2.exo");
   exofile.getVar(&coords[0], dims, ndims, "coord");
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(coordsE[i], coords[i], tolerance);
 } // testGetVarDouble

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestExodusII.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestExodusII.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestExodusII.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -77,7 +77,7 @@
   /// Test hasVar()
   void testHasVar(void);
 
-  /// Test getVar(double*)
+  /// Test getVar(PylithScalar*)
   void testGetVarDouble(void);
 
   /// Test getVar(int*)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestHDF5.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestHDF5.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestHDF5.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -193,13 +193,13 @@
   const hsize_t dims[ndims] = { 2 };
   h5.createDataset("/", "data", dims, dims, ndims, H5T_NATIVE_INT);
 
-  const double scalarE = 2.5;
+  const PylithScalar scalarE = 2.5;
   h5.writeAttribute("/data", "myscalar", (void*)&scalarE, H5T_NATIVE_DOUBLE);
   h5.close();
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   h5.open("test.h5", H5F_ACC_RDONLY);
-  double scalar = 0;
+  PylithScalar scalar = 0;
   h5.readAttribute("/data", "myscalar", (void*)&scalar, H5T_NATIVE_DOUBLE);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(scalarE, scalar, tolerance);
   h5.close();

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -157,9 +157,9 @@
 	vertices->begin();
       v_iter != vertices->end();
       ++v_iter) {
-    const double* vertexCoords = coordsField->restrictPoint(*v_iter);
+    const PylithScalar* vertexCoords = coordsField->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vertexCoords);
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       if (data.vertices[i] < 1.0) {
         CPPUNIT_ASSERT_DOUBLES_EQUAL(data.vertices[i++], vertexCoords[iDim],

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -151,7 +151,7 @@
 
   spatialdata::geocoords::CSCart cs;
   const int numTimeSteps = 1;
-  const double t = 1.2;
+  const PylithScalar t = 1.2;
   const char* filenameRoot = "output.vtk";
   const char* timeFormat = "%3.1f";
 
@@ -179,13 +179,13 @@
   const char* label = "field data";
   const topology::FieldBase::VectorFieldEnum fieldType = 
     topology::FieldBase::VECTOR;
-  const double fieldValues[] = {
+  const PylithScalar fieldValues[] = {
     1.1, 1.2,
     2.1, 2.2,
     3.1, 3.2,
     4.1, 4.2
   };
-  const double scale = 2.0;
+  const PylithScalar scale = 2.0;
 
   topology::Mesh mesh;
   MeshIOAscii iohandler;
@@ -210,7 +210,7 @@
   CPPUNIT_ASSERT(!section.isNull());
 
   CPPUNIT_ASSERT_EQUAL(nvertices, int(vertices->size()));
-  double_array values(nvertices*fiberDim);
+  scalar_array values(nvertices*fiberDim);
   for (int i=0; i < nvertices*fiberDim; ++i)
     values[i] = fieldValues[i];
   values /= scale;
@@ -222,7 +222,7 @@
 
   spatialdata::geocoords::CSCart cs;
   const int numTimeSteps = 1;
-  const double t = 1.2;
+  const PylithScalar t = 1.2;
   const char* filenameRoot = "output_vertex.vtk";
   const char* filenameRootF = "output_vertex_filter.vtk";
   const char* timeFormat = "%3.1f";
@@ -267,11 +267,11 @@
   const char* label = "field data";
   const topology::FieldBase::VectorFieldEnum fieldType = 
     topology::FieldBase::MULTI_SCALAR;
-  const double fieldValues[] = {
+  const PylithScalar fieldValues[] = {
     1.1, 1.2,
     2.1, 2.2,
   };
-  const double scale = 4.0;
+  const PylithScalar scale = 4.0;
 
   topology::Mesh mesh;
   MeshIOAscii iohandler;
@@ -296,7 +296,7 @@
   CPPUNIT_ASSERT(!section.isNull());
 
   CPPUNIT_ASSERT_EQUAL(ncells, int(cells->size()));
-  double_array values(ncells*fiberDim);
+  scalar_array values(ncells*fiberDim);
   for (int i=0; i < ncells*fiberDim; ++i)
     values[i] = fieldValues[i];
   values /= scale;
@@ -308,7 +308,7 @@
 
   spatialdata::geocoords::CSCart cs;
   const int numTimeSteps = 1;
-  const double t = 1.2;
+  const PylithScalar t = 1.2;
   const char* filenameRoot = "output_cell.vtk";
   const char* filenameRootF = "output_cell_filter.vtk";
   const char* timeFormat = "%3.1f";
@@ -331,23 +331,23 @@
   const int numBasis = 4;
   const int numQuadPts = 2;
   const int spaceDim = 2;
-  const double basis[] = {
+  const PylithScalar basis[] = {
     1.0, 1.0,
     1.0, 1.0,
     1.0, 1.0,
     1.0, 1.0,
   };
-  const double basisDerivRef[] = {
+  const PylithScalar basisDerivRef[] = {
     1.0, 1.0, 1.0, 1.0,
     1.0, 1.0, 1.0, 1.0,
     1.0, 1.0, 1.0, 1.0,
     1.0, 1.0, 1.0, 1.0,
   };
-  const double quadPtsRef[] = {
+  const PylithScalar quadPtsRef[] = {
     1.0, 0.0,
    -1.0, 0.0,};
-  const double quadWts[] = { 1.5, 0.5 };
-  const double minJacobian = 1.0;
+  const PylithScalar quadWts[] = { 1.5, 0.5 };
+  const PylithScalar minJacobian = 1.0;
 
   feassemble::Quadrature<topology::Mesh> quadrature;
   quadrature.initialize(basis, numQuadPts, numBasis, 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestVertexFilterVecNorm.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestVertexFilterVecNorm.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestVertexFilterVecNorm.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -54,7 +54,7 @@
   const std::string label = "field data";
   const topology::FieldBase::VectorFieldEnum fieldType = 
     topology::FieldBase::VECTOR;
-  const double fieldValues[] = {
+  const PylithScalar fieldValues[] = {
     1.1, 1.2,
     2.1, 2.2,
     3.1, 3.2,
@@ -63,7 +63,7 @@
   const topology::FieldBase::VectorFieldEnum fieldTypeE = 
     topology::FieldBase::SCALAR;
   const int fiberDimE = 1;
-  const double fieldValuesE[] = {
+  const PylithScalar fieldValuesE[] = {
     sqrt(pow(1.1, 2) + pow(1.2, 2)),
     sqrt(pow(2.1, 2) + pow(2.2, 2)),
     sqrt(pow(3.1, 2) + pow(3.2, 2)),
@@ -96,7 +96,7 @@
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != verticesEnd;
        ++v_iter, ++ipt) {
-    const double* values = &fieldValues[ipt*fiberDim];
+    const PylithScalar* values = &fieldValues[ipt*fiberDim];
     section->updatePoint(*v_iter, values);
   } // for
 
@@ -113,9 +113,9 @@
        v_iter != verticesEnd;
        ++v_iter, ++ipt) {
     CPPUNIT_ASSERT_EQUAL(fiberDimE, sectionF->getFiberDimension(*v_iter));
-    const double* values = sectionF->restrictPoint(*v_iter);
+    const PylithScalar* values = sectionF->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != values);
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int i=0; i < fiberDimE; ++i)
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 
 				   values[i]/fieldValuesE[ipt*fiberDimE+i],

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -61,7 +61,7 @@
   char* vertexFilename; ///< Name of file for vertex fields.
   char* cellFilename; ///< Name of file for cell fields.
 
-  double time; ///< Time for fields.
+  PylithScalar time; ///< Time for fields.
   char* timeFormat; ///< Format for time stamp.
 
   char* cellsLabel; ///< Name of label for mesh cells (if using subset or boundary).
@@ -72,7 +72,7 @@
   int numVertexFields; ///< Number of vertex fields.
   int numVertices; ///< Number of vertices.
   FieldStruct* vertexFieldsInfo; ///< Array of vertex field information.
-  double* vertexFields[3]; ///< Array of vertex field values.
+  PylithScalar* vertexFields[3]; ///< Array of vertex field values.
   //@}
 
   /// @name Cell field information.
@@ -80,7 +80,7 @@
   int numCellFields; ///< Number of cell fields.
   int numCells; ///< Number of vertices.
   FieldStruct* cellFieldsInfo; ///< Array of cell fields information.
-  double* cellFields[3]; /// Array of cell field values.
+  PylithScalar* cellFields[3]; /// Array of cell field values.
   //@}
 
 }; // DataWriterData

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterHDF5DataBCMeshHex8::_cellFilename = 
   "hex8_bc_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataBCMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataBCMeshHex8::_timeFormat = 
   "%3.1f";
@@ -53,7 +53,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -63,10 +63,10 @@
   7.8, 8.9, 9.0,
   10.2, 11.3, 12.4,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -86,14 +86,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshHex8::_cellField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3
 };
@@ -116,17 +116,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataBCMeshHex8::~DataWriterHDF5DataBCMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataBCMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -35,7 +35,7 @@
 const char* pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_cellFilename = 
   "quad4_bc_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -49,15 +49,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_vertexField1[] = {
   2.1, 3.2, 4.3,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -72,14 +72,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_cellField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_cellField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
   4.5, 5.6, 6.7,
 };
@@ -100,17 +100,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataBCMeshQuad4::~DataWriterHDF5DataBCMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -56,9 +56,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -67,9 +67,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataBCMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterHDF5DataBCMeshTet4::_cellFilename = 
   "tet4_bc_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataBCMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataBCMeshTet4::_timeFormat = 
   "%3.1f";
@@ -53,7 +53,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -61,10 +61,10 @@
   13.3, 14.4, 15.5,
   16.6, 17.7, 18.8,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -82,14 +82,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTet4::_cellField1[] = {
   2.1, 3.2
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3,
 };
@@ -112,17 +112,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataBCMeshTet4::~DataWriterHDF5DataBCMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataBCMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterHDF5DataBCMeshTri3::_cellFilename = 
   "tri3_bc_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataBCMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataBCMeshTri3::_timeFormat = 
   "%3.1f";
@@ -53,14 +53,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTri3::_vertexField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
 };
@@ -74,13 +74,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTri3::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTri3::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataBCMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataBCMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -102,17 +102,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataBCMeshTri3::~DataWriterHDF5DataBCMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataBCMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataBCMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_cellFilename = 
   "hex8_fault_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_timeFormat = 
   "%3.1f";
@@ -50,16 +50,16 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
   10.1, 11.2, 12.3,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -75,13 +75,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
 };
 
@@ -102,17 +102,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataFaultMeshHex8::~DataWriterHDF5DataFaultMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataFaultMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_cellFilename = 
   "quad4_fault_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -50,14 +50,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_vertexField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
 };
@@ -71,13 +71,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -98,17 +98,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataFaultMeshQuad4::~DataWriterHDF5DataFaultMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataFaultMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_cellFilename = 
   "tet4_fault_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_timeFormat = 
   "%3.1f";
@@ -50,15 +50,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -73,13 +73,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
 };
 
@@ -100,17 +100,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataFaultMeshTet4::~DataWriterHDF5DataFaultMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataFaultMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_cellFilename = 
   "tri3_fault_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_timeFormat = 
   "%3.1f";
@@ -50,14 +50,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_vertexField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
 };
@@ -71,13 +71,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataFaultMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -98,17 +98,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataFaultMeshTri3::~DataWriterHDF5DataFaultMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataFaultMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataFaultMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMatMeshHex8::_cellFilename = 
   "hex8_mat_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMatMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMatMeshHex8::_timeFormat = 
   "%3.1f";
@@ -54,7 +54,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -76,12 +76,12 @@
   31.1, 32.2, 33.3,
   34.4, 35.5, 36.6
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8,
   10.0, 12.1, 11.1, 13.1, 14.1, 15.1, 16.1, 17.1,
   18.1, 19.1, 20.1, 21.1
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -113,13 +113,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshHex8::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
 };
 
@@ -142,17 +142,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMatMeshHex8::~DataWriterHDF5DataMatMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -59,9 +59,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -70,9 +70,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMatMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMatMeshLine2::_cellFilename = 
   "line2_mat_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMatMeshLine2::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshLine2::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMatMeshLine2::_timeFormat = 
   "%3.1f";
@@ -54,13 +54,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshLine2::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshLine2::_vertexField0[] = {
   1.1, 2.2, 3.3, 4.4, 5.5
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshLine2::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshLine2::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshLine2::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshLine2::_vertexField2[] = {
   1.2, 2.3, 
   3.4, 4.5,
   5.6, 6.7,
@@ -77,13 +77,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 1 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshLine2::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshLine2::_cellField0[] = {
   1.1,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshLine2::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshLine2::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshLine2::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshLine2::_cellField2[] = {
   1.2,
 };
 
@@ -106,17 +106,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMatMeshLine2::~DataWriterHDF5DataMatMeshLine2(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -59,9 +59,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -70,9 +70,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMatMeshLine2

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_cellFilename = 
   "quad4_mat_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -50,7 +50,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -58,10 +58,10 @@
   9.9, 10.1,
   11.2, 12.3,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -79,13 +79,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -106,17 +106,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMatMeshQuad4::~DataWriterHDF5DataMatMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMatMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMatMeshTet4::_cellFilename = 
   "tet4_mat_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMatMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMatMeshTet4::_timeFormat = 
   "%3.1f";
@@ -54,7 +54,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -67,10 +67,10 @@
   28.8, 29.9, 30.0,
   31.1, 32.2, 33.3,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8, 10.9, 11.0, 12.1
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -93,14 +93,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTet4::_cellField1[] = {
   2.1, 3.2
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3,
 };
@@ -124,17 +124,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMatMeshTet4::~DataWriterHDF5DataMatMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -59,9 +59,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -70,9 +70,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMatMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMatMeshTri3::_cellFilename = 
   "tri3_mat_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMatMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMatMeshTri3::_timeFormat = 
   "%3.1f";
@@ -54,7 +54,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -64,10 +64,10 @@
   13.3, 14.4,
   15.5, 16.6,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTri3::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -87,13 +87,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTri3::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTri3::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataMatMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMatMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -116,17 +116,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMatMeshTri3::~DataWriterHDF5DataMatMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMatMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -59,9 +59,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -70,9 +70,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMatMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMeshHex8::_cellFilename = 
   "hex8_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMeshHex8::_timeFormat = 
   "%3.1f";
@@ -50,7 +50,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -72,12 +72,12 @@
   31.8, 32.9, 33.1,
   34.8, 35.9, 36.1,
 };
-const double pylith::meshio::DataWriterHDF5DataMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8,
   10.0, 12.1, 11.1, 13.1, 14.1, 15.1, 16.1, 17.1,
   18.1, 19.1, 20.1, 21.2
 };
-const double pylith::meshio::DataWriterHDF5DataMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -109,15 +109,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9
 };
-const double pylith::meshio::DataWriterHDF5DataMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshHex8::_cellField1[] = {
   2.1, 3.2, 4.3
 };
-const double pylith::meshio::DataWriterHDF5DataMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   1.1, 2.2, 3.3, 4.4, 5.5, 6.6,
   1.3, 2.4, 3.5, 4.6, 5.7, 6.8
@@ -140,17 +140,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMeshHex8::~DataWriterHDF5DataMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMeshLine2::_cellFilename = 
   "line2_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMeshLine2::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshLine2::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMeshLine2::_timeFormat = 
   "%3.1f";
@@ -50,13 +50,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshLine2::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshLine2::_vertexField0[] = {
   1.1, 2.2, 3.3, 4.4, 5.5
 };
-const double pylith::meshio::DataWriterHDF5DataMeshLine2::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshLine2::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5
 };
-const double pylith::meshio::DataWriterHDF5DataMeshLine2::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshLine2::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -73,13 +73,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 1 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshLine2::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshLine2::_cellField0[] = {
   1.1, 2.2, 3.3
 };
-const double pylith::meshio::DataWriterHDF5DataMeshLine2::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshLine2::_cellField1[] = {
   2.1, 2.2, 2.3
 };
-const double pylith::meshio::DataWriterHDF5DataMeshLine2::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshLine2::_cellField2[] = {
   1.2, 2.3, 3.4
 };
 
@@ -100,17 +100,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMeshLine2::~DataWriterHDF5DataMeshLine2(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMeshLine2

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,7 +32,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMeshQuad4::_cellFilename = 
   "quad4_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -46,7 +46,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -54,10 +54,10 @@
   9.9, 10.1,
   11.2, 12.3,
 };
-const double pylith::meshio::DataWriterHDF5DataMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshQuad4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6
 };
-const double pylith::meshio::DataWriterHDF5DataMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -75,14 +75,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshQuad4::_cellField0[] = {
   1.1, 2.2,
   3.3, 4.4
 };
-const double pylith::meshio::DataWriterHDF5DataMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshQuad4::_cellField1[] = {
   2.1, 2.2,
 };
-const double pylith::meshio::DataWriterHDF5DataMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
   4.5, 5.6, 6.7,
 };
@@ -102,17 +102,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMeshQuad4::~DataWriterHDF5DataMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -55,9 +55,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -66,9 +66,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMeshTet4::_cellFilename = 
   "tet4_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMeshTet4::_timeFormat = 
   "%3.1f";
@@ -50,7 +50,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -63,10 +63,10 @@
   28.8, 29.9, 30.0,
   31.1, 32.2, 33.3,
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8, 10.9, 11.0, 12.1,
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -89,15 +89,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTet4::_cellField1[] = {
   2.1, 3.2, 4.3
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3,
   13.4, 14.5, 15.6, 16.7, 17.8, 18.9
@@ -120,17 +120,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMeshTet4::~DataWriterHDF5DataMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterHDF5DataMeshTri3::_cellFilename = 
   "tri3_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataMeshTri3::_timeFormat = 
   "%3.1f";
@@ -50,7 +50,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -59,10 +59,10 @@
   11.1, 12.2,
   13.3, 14.4
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTri3::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -81,15 +81,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTri3::_cellField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTri3::_cellField1[] = {
   2.1, 2.2, 2.3
 };
-const double pylith::meshio::DataWriterHDF5DataMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
   4.5, 5.6, 6.7,
   7.8, 8.9, 9.0
@@ -112,17 +112,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataMeshTri3::~DataWriterHDF5DataMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -38,7 +38,7 @@
 const char* pylith::meshio::DataWriterHDF5DataSubMeshHex8::_cellFilename = 
   "hex8_surf_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataSubMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataSubMeshHex8::_timeFormat = 
   "%3.1f";
@@ -52,7 +52,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -66,10 +66,10 @@
   7.9, 8.1, 9.2,
   10.3, 11.4, 12.5,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8, 10.9, 11.8, 12.7, 13.6
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -93,14 +93,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshHex8::_cellField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3
 };
@@ -123,17 +123,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataSubMeshHex8::~DataWriterHDF5DataSubMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataSubMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterHDF5DataSubMeshLine2::_cellFilename = 
   "line2_surf_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataSubMeshLine2::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshLine2::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataSubMeshLine2::_timeFormat = 
   "%3.1f";
@@ -53,17 +53,17 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshLine2::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshLine2::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
   7.7, 8.8,
   9.9, 10.0,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshLine2::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshLine2::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshLine2::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshLine2::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -80,13 +80,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshLine2::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshLine2::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshLine2::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshLine2::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshLine2::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshLine2::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -108,17 +108,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataSubMeshLine2::~DataWriterHDF5DataSubMeshLine2(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataSubMeshLine2

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -35,7 +35,7 @@
 const char* pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_cellFilename = 
   "quad4_surf_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -49,7 +49,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -57,10 +57,10 @@
   9.9, 10.0,
   11.1, 12.2,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -78,14 +78,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_cellField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_cellField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
   4.5, 5.6, 6.7,
 };
@@ -106,17 +106,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataSubMeshQuad4::~DataWriterHDF5DataSubMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -56,9 +56,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -67,9 +67,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataSubMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -38,7 +38,7 @@
 const char* pylith::meshio::DataWriterHDF5DataSubMeshTet4::_cellFilename = 
   "tet4_surf_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataSubMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataSubMeshTet4::_timeFormat = 
   "%3.1f";
@@ -52,17 +52,17 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
   10.0, 11.1, 12.2,
   13.3, 14.4, 15.5,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -79,14 +79,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTet4::_cellField1[] = {
   2.1, 3.2
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3,
 };
@@ -109,17 +109,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataSubMeshTet4::~DataWriterHDF5DataSubMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataSubMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterHDF5DataSubMeshTri3::_cellFilename = 
   "tri3_surf_cell.h5";
 
-const double pylith::meshio::DataWriterHDF5DataSubMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterHDF5DataSubMeshTri3::_timeFormat = 
   "%3.1f";
@@ -53,7 +53,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -63,10 +63,10 @@
   13.3, 14.4,
   15.5, 16.6,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTri3::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -86,13 +86,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTri3::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTri3::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterHDF5DataSubMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterHDF5DataSubMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -114,17 +114,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterHDF5DataSubMeshTri3::~DataWriterHDF5DataSubMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterHDF5DataSubMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of HDF5 file for vertex fields.
   static const char* _cellFilename; ///< Name of HDF5 file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterHDF5DataSubMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterVTKDataBCMeshHex8::_cellFilename = 
   "hex8_bc_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataBCMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataBCMeshHex8::_timeFormat = 
   "%3.1f";
@@ -53,7 +53,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -63,10 +63,10 @@
   7.8, 8.9, 9.0,
   10.2, 11.3, 12.4,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -86,14 +86,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshHex8::_cellField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3
 };
@@ -116,17 +116,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataBCMeshHex8::~DataWriterVTKDataBCMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataBCMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -35,7 +35,7 @@
 const char* pylith::meshio::DataWriterVTKDataBCMeshQuad4::_cellFilename = 
   "quad4_bc_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataBCMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataBCMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -49,15 +49,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshQuad4::_vertexField1[] = {
   2.1, 3.2, 4.3,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -72,14 +72,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshQuad4::_cellField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshQuad4::_cellField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
   4.5, 5.6, 6.7,
 };
@@ -100,17 +100,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataBCMeshQuad4::~DataWriterVTKDataBCMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -56,9 +56,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -67,9 +67,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataBCMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterVTKDataBCMeshTet4::_cellFilename = 
   "tet4_bc_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataBCMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataBCMeshTet4::_timeFormat = 
   "%3.1f";
@@ -53,7 +53,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -61,10 +61,10 @@
   13.3, 14.4, 15.5,
   16.6, 17.7, 18.8,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -82,14 +82,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTet4::_cellField1[] = {
   2.1, 3.2
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3,
 };
@@ -112,17 +112,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataBCMeshTet4::~DataWriterVTKDataBCMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataBCMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterVTKDataBCMeshTri3::_cellFilename = 
   "tri3_bc_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataBCMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataBCMeshTri3::_timeFormat = 
   "%3.1f";
@@ -53,14 +53,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTri3::_vertexField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
 };
@@ -74,13 +74,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTri3::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTri3::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataBCMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataBCMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -102,17 +102,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataBCMeshTri3::~DataWriterVTKDataBCMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataBCMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataBCMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataFaultMeshHex8::_cellFilename = 
   "hex8_fault_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataFaultMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataFaultMeshHex8::_timeFormat = 
   "%3.1f";
@@ -50,16 +50,16 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
   10.1, 11.2, 12.3,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -75,13 +75,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshHex8::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
 };
 
@@ -102,17 +102,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataFaultMeshHex8::~DataWriterVTKDataFaultMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataFaultMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_cellFilename = 
   "quad4_fault_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -50,14 +50,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_vertexField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
 };
@@ -71,13 +71,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -98,17 +98,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataFaultMeshQuad4::~DataWriterVTKDataFaultMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataFaultMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataFaultMeshTet4::_cellFilename = 
   "tet4_fault_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataFaultMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataFaultMeshTet4::_timeFormat = 
   "%3.1f";
@@ -50,15 +50,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -73,13 +73,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTet4::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
 };
 
@@ -100,17 +100,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataFaultMeshTet4::~DataWriterVTKDataFaultMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataFaultMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataFaultMeshTri3::_cellFilename = 
   "tri3_fault_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataFaultMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataFaultMeshTri3::_timeFormat = 
   "%3.1f";
@@ -50,14 +50,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTri3::_vertexField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
 };
@@ -71,13 +71,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTri3::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTri3::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataFaultMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataFaultMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -98,17 +98,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataFaultMeshTri3::~DataWriterVTKDataFaultMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataFaultMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataFaultMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 const char* pylith::meshio::DataWriterVTKDataMatMeshHex8::_cellFilename = 
   "hex8_mat_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMatMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMatMeshHex8::_timeFormat = 
   "%3.1f";
@@ -54,7 +54,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -76,12 +76,12 @@
   31.1, 32.2, 33.3,
   34.4, 35.5, 36.6
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8,
   10.0, 12.1, 11.1, 13.1, 14.1, 15.1, 16.1, 17.1,
   18.1, 19.1, 20.1, 21.1
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -113,13 +113,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshHex8::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
 };
 
@@ -142,17 +142,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMatMeshHex8::~DataWriterVTKDataMatMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -59,9 +59,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -70,9 +70,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMatMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 const char* pylith::meshio::DataWriterVTKDataMatMeshLine2::_cellFilename = 
   "line2_mat_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMatMeshLine2::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshLine2::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMatMeshLine2::_timeFormat = 
   "%3.1f";
@@ -54,13 +54,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshLine2::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshLine2::_vertexField0[] = {
   1.1, 2.2, 3.3, 4.4, 5.5
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshLine2::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshLine2::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshLine2::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshLine2::_vertexField2[] = {
   1.2, 2.3, 
   3.4, 4.5,
   5.6, 6.7,
@@ -77,13 +77,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 1 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshLine2::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshLine2::_cellField0[] = {
   1.1,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshLine2::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshLine2::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshLine2::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshLine2::_cellField2[] = {
   1.2,
 };
 
@@ -106,17 +106,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMatMeshLine2::~DataWriterVTKDataMatMeshLine2(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -59,9 +59,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -70,9 +70,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMatMeshLine2

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataMatMeshQuad4::_cellFilename = 
   "quad4_mat_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMatMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMatMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -50,7 +50,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -58,10 +58,10 @@
   9.9, 10.1,
   11.2, 12.3,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshQuad4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -79,13 +79,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshQuad4::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshQuad4::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -106,17 +106,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMatMeshQuad4::~DataWriterVTKDataMatMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMatMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 const char* pylith::meshio::DataWriterVTKDataMatMeshTet4::_cellFilename = 
   "tet4_mat_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMatMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMatMeshTet4::_timeFormat = 
   "%3.1f";
@@ -54,7 +54,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -67,10 +67,10 @@
   28.8, 29.9, 30.0,
   31.1, 32.2, 33.3,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8, 10.9, 11.0, 12.1
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -93,14 +93,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTet4::_cellField1[] = {
   2.1, 3.2
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3,
 };
@@ -124,17 +124,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMatMeshTet4::~DataWriterVTKDataMatMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -59,9 +59,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -70,9 +70,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMatMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 const char* pylith::meshio::DataWriterVTKDataMatMeshTri3::_cellFilename = 
   "tri3_mat_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMatMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMatMeshTri3::_timeFormat = 
   "%3.1f";
@@ -54,7 +54,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -64,10 +64,10 @@
   13.3, 14.4,
   15.5, 16.6,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTri3::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -87,13 +87,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTri3::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTri3::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataMatMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMatMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -116,17 +116,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMatMeshTri3::~DataWriterVTKDataMatMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMatMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -50,7 +50,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -59,9 +59,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -70,9 +70,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMatMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataMeshHex8::_cellFilename = 
   "hex8_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMeshHex8::_timeFormat = 
   "%3.1f";
@@ -50,7 +50,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -72,12 +72,12 @@
   31.8, 32.9, 33.1,
   34.8, 35.9, 36.1,
 };
-const double pylith::meshio::DataWriterVTKDataMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8,
   10.0, 12.1, 11.1, 13.1, 14.1, 15.1, 16.1, 17.1,
   18.1, 19.1, 20.1, 21.2
 };
-const double pylith::meshio::DataWriterVTKDataMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -109,15 +109,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9
 };
-const double pylith::meshio::DataWriterVTKDataMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshHex8::_cellField1[] = {
   2.1, 3.2, 4.3
 };
-const double pylith::meshio::DataWriterVTKDataMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   1.1, 2.2, 3.3, 4.4, 5.5, 6.6,
   1.3, 2.4, 3.5, 4.6, 5.7, 6.8
@@ -140,17 +140,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMeshHex8::~DataWriterVTKDataMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataMeshLine2::_cellFilename = 
   "line2_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMeshLine2::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshLine2::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMeshLine2::_timeFormat = 
   "%3.1f";
@@ -50,13 +50,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshLine2::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshLine2::_vertexField0[] = {
   1.1, 2.2, 3.3, 4.4, 5.5
 };
-const double pylith::meshio::DataWriterVTKDataMeshLine2::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshLine2::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5
 };
-const double pylith::meshio::DataWriterVTKDataMeshLine2::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshLine2::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -73,13 +73,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 1 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshLine2::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshLine2::_cellField0[] = {
   1.1, 2.2, 3.3
 };
-const double pylith::meshio::DataWriterVTKDataMeshLine2::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshLine2::_cellField1[] = {
   2.1, 2.2, 2.3
 };
-const double pylith::meshio::DataWriterVTKDataMeshLine2::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshLine2::_cellField2[] = {
   1.2, 2.3, 3.4
 };
 
@@ -100,17 +100,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMeshLine2::~DataWriterVTKDataMeshLine2(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMeshLine2

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -32,7 +32,7 @@
 const char* pylith::meshio::DataWriterVTKDataMeshQuad4::_cellFilename = 
   "quad4_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -46,7 +46,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -54,10 +54,10 @@
   9.9, 10.1,
   11.2, 12.3,
 };
-const double pylith::meshio::DataWriterVTKDataMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshQuad4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6
 };
-const double pylith::meshio::DataWriterVTKDataMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -75,14 +75,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshQuad4::_cellField0[] = {
   1.1, 2.2,
   3.3, 4.4
 };
-const double pylith::meshio::DataWriterVTKDataMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshQuad4::_cellField1[] = {
   2.1, 2.2,
 };
-const double pylith::meshio::DataWriterVTKDataMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
   4.5, 5.6, 6.7,
 };
@@ -102,17 +102,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMeshQuad4::~DataWriterVTKDataMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -46,7 +46,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -55,9 +55,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -66,9 +66,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataMeshTet4::_cellFilename = 
   "tet4_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMeshTet4::_timeFormat = 
   "%3.1f";
@@ -50,7 +50,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -63,10 +63,10 @@
   28.8, 29.9, 30.0,
   31.1, 32.2, 33.3,
 };
-const double pylith::meshio::DataWriterVTKDataMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8, 10.9, 11.0, 12.1,
 };
-const double pylith::meshio::DataWriterVTKDataMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -89,15 +89,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9
 };
-const double pylith::meshio::DataWriterVTKDataMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTet4::_cellField1[] = {
   2.1, 3.2, 4.3
 };
-const double pylith::meshio::DataWriterVTKDataMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3,
   13.4, 14.5, 15.6, 16.7, 17.8, 18.9
@@ -120,17 +120,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMeshTet4::~DataWriterVTKDataMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -36,7 +36,7 @@
 const char* pylith::meshio::DataWriterVTKDataMeshTri3::_cellFilename = 
   "tri3_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataMeshTri3::_timeFormat = 
   "%3.1f";
@@ -50,7 +50,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -59,10 +59,10 @@
   11.1, 12.2,
   13.3, 14.4
 };
-const double pylith::meshio::DataWriterVTKDataMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTri3::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8
 };
-const double pylith::meshio::DataWriterVTKDataMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -81,15 +81,15 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTri3::_cellField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
 };
-const double pylith::meshio::DataWriterVTKDataMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTri3::_cellField1[] = {
   2.1, 2.2, 2.3
 };
-const double pylith::meshio::DataWriterVTKDataMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
   4.5, 5.6, 6.7,
   7.8, 8.9, 9.0
@@ -112,17 +112,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataMeshTri3::~DataWriterVTKDataMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -57,9 +57,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -68,9 +68,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshHex8.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshHex8.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -38,7 +38,7 @@
 const char* pylith::meshio::DataWriterVTKDataSubMeshHex8::_cellFilename = 
   "hex8_surf_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataSubMeshHex8::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshHex8::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataSubMeshHex8::_timeFormat = 
   "%3.1f";
@@ -52,7 +52,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshHex8::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshHex8::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
@@ -66,10 +66,10 @@
   7.9, 8.1, 9.2,
   10.3, 11.4, 12.5,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshHex8::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshHex8::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8, 10.9, 11.8, 12.7, 13.6
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshHex8::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshHex8::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -93,14 +93,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshHex8::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshHex8::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshHex8::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshHex8::_cellField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshHex8::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshHex8::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3
 };
@@ -123,17 +123,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataSubMeshHex8::~DataWriterVTKDataSubMeshHex8(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshHex8.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshHex8.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataSubMeshHex8

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshLine2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshLine2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterVTKDataSubMeshLine2::_cellFilename = 
   "line2_surf_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataSubMeshLine2::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshLine2::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataSubMeshLine2::_timeFormat = 
   "%3.1f";
@@ -53,17 +53,17 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshLine2::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshLine2::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
   7.7, 8.8,
   9.9, 10.0,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshLine2::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshLine2::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshLine2::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshLine2::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -80,13 +80,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshLine2::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshLine2::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshLine2::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshLine2::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshLine2::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshLine2::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -108,17 +108,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataSubMeshLine2::~DataWriterVTKDataSubMeshLine2(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshLine2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshLine2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataSubMeshLine2

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshQuad4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshQuad4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -35,7 +35,7 @@
 const char* pylith::meshio::DataWriterVTKDataSubMeshQuad4::_cellFilename = 
   "quad4_surf_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataSubMeshQuad4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshQuad4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataSubMeshQuad4::_timeFormat = 
   "%3.1f";
@@ -49,7 +49,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshQuad4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshQuad4::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -57,10 +57,10 @@
   9.9, 10.0,
   11.1, 12.2,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshQuad4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshQuad4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshQuad4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshQuad4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -78,14 +78,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshQuad4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshQuad4::_cellField0[] = {
   1.1, 2.2,
   3.3, 4.4,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshQuad4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshQuad4::_cellField1[] = {
   2.1, 3.2,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshQuad4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshQuad4::_cellField2[] = {
   1.2, 2.3, 3.4,
   4.5, 5.6, 6.7,
 };
@@ -106,17 +106,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataSubMeshQuad4::~DataWriterVTKDataSubMeshQuad4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshQuad4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshQuad4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -47,7 +47,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -56,9 +56,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -67,9 +67,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataSubMeshQuad4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTet4.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTet4.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -38,7 +38,7 @@
 const char* pylith::meshio::DataWriterVTKDataSubMeshTet4::_cellFilename = 
   "tet4_surf_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataSubMeshTet4::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTet4::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataSubMeshTet4::_timeFormat = 
   "%3.1f";
@@ -52,17 +52,17 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTet4::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTet4::_vertexField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
   7.7, 8.8, 9.9,
   10.0, 11.1, 12.2,
   13.3, 14.4, 15.5,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTet4::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTet4::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTet4::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTet4::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -79,14 +79,14 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 6 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTet4::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTet4::_cellField0[] = {
   1.1, 2.2, 3.3,
   4.4, 5.5, 6.6,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTet4::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTet4::_cellField1[] = {
   2.1, 3.2
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTet4::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTet4::_cellField2[] = {
   1.2, 2.3, 3.4, 4.5, 5.6, 6.7,
   7.8, 8.9, 9.0, 10.1, 11.2, 12.3,
 };
@@ -109,17 +109,17 @@
   assert(3 == numVertexFields);
   numVertices = _numVertices;
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   assert(3 == numCellFields);
   numCells = _numCells;
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataSubMeshTet4::~DataWriterVTKDataSubMeshTet4(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTet4.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTet4.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataSubMeshTet4

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTri3.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTri3.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 const char* pylith::meshio::DataWriterVTKDataSubMeshTri3::_cellFilename = 
   "tri3_surf_cell.vtk";
 
-const double pylith::meshio::DataWriterVTKDataSubMeshTri3::_time = 1.0;
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTri3::_time = 1.0;
 
 const char* pylith::meshio::DataWriterVTKDataSubMeshTri3::_timeFormat = 
   "%3.1f";
@@ -53,7 +53,7 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::OTHER, 2 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTri3::_vertexField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTri3::_vertexField0[] = {
   1.1, 2.2,
   3.3, 4.4,
   5.5, 6.6,
@@ -63,10 +63,10 @@
   13.3, 14.4,
   15.5, 16.6,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTri3::_vertexField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTri3::_vertexField1[] = {
   2.1, 3.2, 4.3, 5.4, 6.5, 7.6, 8.7, 9.8,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTri3::_vertexField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTri3::_vertexField2[] = {
   1.2, 2.3,
   3.4, 4.5,
   5.6, 6.7,
@@ -86,13 +86,13 @@
   { "pressure", topology::FieldBase::SCALAR, 1 },
   { "other", topology::FieldBase::TENSOR, 3 },
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTri3::_cellField0[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTri3::_cellField0[] = {
   1.1, 2.2,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTri3::_cellField1[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTri3::_cellField1[] = {
   2.1,
 };
-const double pylith::meshio::DataWriterVTKDataSubMeshTri3::_cellField2[] = {
+const PylithScalar pylith::meshio::DataWriterVTKDataSubMeshTri3::_cellField2[] = {
   1.2, 2.3, 3.4,
 };
 
@@ -114,17 +114,17 @@
   numVertices = _numVertices;
   assert(3 == numVertexFields);
   vertexFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_vertexFields);
-  vertexFields[0] = const_cast<double*>(_vertexField0);
-  vertexFields[1] = const_cast<double*>(_vertexField1);
-  vertexFields[2] = const_cast<double*>(_vertexField2);
+  vertexFields[0] = const_cast<PylithScalar*>(_vertexField0);
+  vertexFields[1] = const_cast<PylithScalar*>(_vertexField1);
+  vertexFields[2] = const_cast<PylithScalar*>(_vertexField2);
 
   numCellFields = _numCellFields;
   numCells = _numCells;
   assert(3 == numCellFields);
   cellFieldsInfo = const_cast<DataWriterData::FieldStruct*>(_cellFields);
-  cellFields[0] = const_cast<double*>(_cellField0);
-  cellFields[1] = const_cast<double*>(_cellField1);
-  cellFields[2] = const_cast<double*>(_cellField2);
+  cellFields[0] = const_cast<PylithScalar*>(_cellField0);
+  cellFields[1] = const_cast<PylithScalar*>(_cellField1);
+  cellFields[2] = const_cast<PylithScalar*>(_cellField2);
 } // constructor
 
 pylith::meshio::DataWriterVTKDataSubMeshTri3::~DataWriterVTKDataSubMeshTri3(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTri3.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/DataWriterVTKDataSubMeshTri3.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -49,7 +49,7 @@
   static const char* _vertexFilename; ///< Name of VTK file for vertex fields.
   static const char* _cellFilename; ///< Name of VTK file for cell fields.
 
-  static const double _time; ///< Time for fields.
+  static const PylithScalar _time; ///< Time for fields.
   static const char* _timeFormat; ///< Format for time stamp.
 
   /// @name Vertex field information.
@@ -58,9 +58,9 @@
   static const int _numVertices; ///< Number of vertices.
   static const FieldStruct _vertexFields[]; ///< Array of vertex fields.
 
-  static const double _vertexField0[]; ///< Values for vertex field 0.
-  static const double _vertexField1[]; ///< Values for vertex field 1.
-  static const double _vertexField2[]; ///< Values for vertex field 2.
+  static const PylithScalar _vertexField0[]; ///< Values for vertex field 0.
+  static const PylithScalar _vertexField1[]; ///< Values for vertex field 1.
+  static const PylithScalar _vertexField2[]; ///< Values for vertex field 2.
   //@}
 
   /// @name Cell field information.
@@ -69,9 +69,9 @@
   static const int _numCells; ///< Number of cells.
   static const FieldStruct _cellFields[]; ///< Array of cell fields.
 
-  static const double _cellField0[]; ///< Values for cell field 0.
-  static const double _cellField1[]; ///< Values for cell field 1.
-  static const double _cellField2[]; ///< Values for cell field 2.
+  static const PylithScalar _cellField0[]; ///< Values for cell field 0.
+  static const PylithScalar _cellField1[]; ///< Values for cell field 1.
+  static const PylithScalar _cellField2[]; ///< Values for cell field 2.
   //@}
 
 }; // DataWriterVTKDataSubMeshTri3

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_meshio_meshdata_hh)
 #define pylith_meshio_meshdata_hh
 
+#include "pylith/utils/types.hh" // USES PylithScalar
+
 namespace pylith {
   namespace meshio {
      class MeshData;
@@ -46,7 +48,7 @@
   int cellDim; ///< Number of dimensions associated with cell
   int numCorners; ///< Number of vertices in cell
 
-  double* vertices; ///< Pointer to coordinates of vertices
+  PylithScalar* vertices; ///< Pointer to coordinates of vertices
   int* cells; ///< Pointer to indices of vertices in cells
   int* materialIds; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshData1D::_numCorners = 2;
 
-const double pylith::meshio::MeshData1D::_vertices[] = {
+const PylithScalar pylith::meshio::MeshData1D::_vertices[] = {
   -1.2,
    2.1,
    0.3
@@ -71,7 +71,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshData1Din2D::_numCorners = 2;
 
-const double pylith::meshio::MeshData1Din2D::_vertices[] = {
+const PylithScalar pylith::meshio::MeshData1Din2D::_vertices[] = {
   -3.0, -1.2,
    1.0, -1.0,
    2.6,  3.1,
@@ -71,7 +71,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshData1Din3D::_numCorners = 2;
 
-const double pylith::meshio::MeshData1Din3D::_vertices[] = {
+const PylithScalar pylith::meshio::MeshData1Din3D::_vertices[] = {
   -3.0, -1.2,  0.3,
    1.0, -1.0,  0.0,
    2.6,  3.1, -0.5,
@@ -71,7 +71,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshData2D::_numCorners = 4;
 
-const double pylith::meshio::MeshData2D::_vertices[] = {
+const PylithScalar pylith::meshio::MeshData2D::_vertices[] = {
   -1.0,  3.0,
    1.0,  3.3,
   -1.2,  0.9,
@@ -77,7 +77,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshData2Din3D::_numCorners = 4;
 
-const double pylith::meshio::MeshData2Din3D::_vertices[] = {
+const PylithScalar pylith::meshio::MeshData2Din3D::_vertices[] = {
   -1.0,  3.0,  0.2,
    1.0,  3.3,  0.5,
   -1.2,  0.9,  0.3,
@@ -75,7 +75,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshData3D::_numCorners = 8;
 
-const double pylith::meshio::MeshData3D::_vertices[] = {
+const PylithScalar pylith::meshio::MeshData3D::_vertices[] = {
   -3.0, -1.0,  0.2,
   -3.0, -1.0,  1.3,
   -1.0, -1.2,  0.1,
@@ -81,7 +81,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3DIndexOne.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3DIndexOne.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3DIndexOne.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshData3DIndexOne::_numCorners = 8;
 
-const double pylith::meshio::MeshData3DIndexOne::_vertices[] = {
+const PylithScalar pylith::meshio::MeshData3DIndexOne::_vertices[] = {
   -3.0, -1.0,  0.2,
   -3.0, -1.0,  1.3,
   -1.0, -1.2,  0.1,
@@ -81,7 +81,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3DIndexOne.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3DIndexOne.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3DIndexOne.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshDataCubitHex::_numCorners = 8;
 
-const double pylith::meshio::MeshDataCubitHex::_vertices[] = {
+const PylithScalar pylith::meshio::MeshDataCubitHex::_vertices[] = {
   -2.0, -1.0,  1.0,
   -2.0, -1.0, -1.0,
   -2.0,  1.0, -1.0,
@@ -79,7 +79,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshDataCubitQuad::_numCorners = 4;
 
-const double pylith::meshio::MeshDataCubitQuad::_vertices[] = {
+const PylithScalar pylith::meshio::MeshDataCubitQuad::_vertices[] = {
    0.0,  0.0,
    1.0,  0.0,
    1.0,  1.0,
@@ -72,7 +72,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTet.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTet.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTet.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshDataCubitTet::_numCorners = 4;
 
-const double pylith::meshio::MeshDataCubitTet::_vertices[] = {
+const PylithScalar pylith::meshio::MeshDataCubitTet::_vertices[] = {
   -2.0,  0.0,  0.0,
    0.0, -1.0,  0.0,
    0.0,  1.0,  0.0,
@@ -72,7 +72,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTet.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTet.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTet.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTri.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTri.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTri.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshDataCubitTri::_numCorners = 3;
 
-const double pylith::meshio::MeshDataCubitTri::_vertices[] = {
+const PylithScalar pylith::meshio::MeshDataCubitTri::_vertices[] = {
   -1.0,  0.0,
    0.0, -1.0,
    0.0,  1.0,
@@ -70,7 +70,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTri.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTri.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitTri.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataLagritTet.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataLagritTet.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataLagritTet.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -28,7 +28,7 @@
 
 const int pylith::meshio::MeshDataLagritTet::_numCorners = 4;
 
-const double pylith::meshio::MeshDataLagritTet::_vertices[] = {
+const PylithScalar pylith::meshio::MeshDataLagritTet::_vertices[] = {
   0.00000E+000,  -5.00000E-001,  -5.00000E-001,
   0.00000E+000,  -5.00000E-001,   5.00000E-001,
   1.00000E+000,  -5.00000E-001,  -5.00000E-001,
@@ -93,7 +93,7 @@
   numCells = _numCells;
   cellDim = _cellDim;
   numCorners = _numCorners;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
   groups = const_cast<int*>(_groups);

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataLagritTet.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataLagritTet.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataLagritTet.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -48,7 +48,7 @@
   static const int _cellDim; ///< Number of dimensions associated with cell
   static const int _numCorners; ///< Number of vertices in cell
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/Mesh.hh" // USES Mesh
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 
@@ -39,7 +39,7 @@
       const int ncells = 1;
       const int ncorners = 4;
       const int cells[] = { 0, 1, 2, 3 };
-      const double coordinates[] = {
+      const PylithScalar coordinates[] = {
 	0.0, 0.0,
 	1.0, 0.0,
 	0.0, 1.0,
@@ -388,7 +388,7 @@
   
   field.clear();
 
-  CPPUNIT_ASSERT_EQUAL(1.0, field._metadata.scale);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), field._metadata.scale);
   CPPUNIT_ASSERT_EQUAL(Field<Mesh>::OTHER, field._metadata.vectorFieldType);
   CPPUNIT_ASSERT_EQUAL(false, field._metadata.dimsOkay);
 } // testClear
@@ -399,8 +399,8 @@
 pylith::topology::TestFieldMesh::testAllocate(void)
 { // testAllocate
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -421,7 +421,7 @@
   const ALE::Obj<Mesh::RealSection>& section = field.section();
   CPPUNIT_ASSERT(!section.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -431,7 +431,7 @@
     section->updatePoint(*v_iter, &values[0]);
   } // for
 
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -449,8 +449,8 @@
 pylith::topology::TestFieldMesh::testZero(void)
 { // testZero
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -471,7 +471,7 @@
   const ALE::Obj<Mesh::RealSection>& section = field.section();
   CPPUNIT_ASSERT(!section.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -483,7 +483,7 @@
 
   field.zero();
 
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
@@ -500,8 +500,8 @@
 pylith::topology::TestFieldMesh::testZeroAll(void)
 { // testZeroAll
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -542,7 +542,7 @@
     section->setConstraintDof(*v_iter, &constraints[index]);
   field.zero();
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -554,7 +554,7 @@
   
   field.zeroAll();
   
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
@@ -571,8 +571,8 @@
 pylith::topology::TestFieldMesh::testComplete(void)
 { // testComplete
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -593,7 +593,7 @@
   const ALE::Obj<Mesh::RealSection>& section = field.section();
   CPPUNIT_ASSERT(!section.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -607,7 +607,7 @@
 
   // Expect no change for this serial test
   i = 0;
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
@@ -624,8 +624,8 @@
 pylith::topology::TestFieldMesh::testCopy(void)
 { // testCopy
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -647,7 +647,7 @@
     const ALE::Obj<Mesh::RealSection>& section = fieldSrc.section();
     CPPUNIT_ASSERT(!section.isNull());
     
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
     int i = 0;
     for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	 v_iter != vertices->end();
@@ -667,8 +667,8 @@
   field.copy(fieldSrc);
 
   int i = 0;
-  double_array values(fiberDim);
-  const double tolerance = 1.0e-6;
+  scalar_array values(fiberDim);
+  const PylithScalar tolerance = 1.0e-6;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
@@ -685,14 +685,14 @@
 pylith::topology::TestFieldMesh::testOperatorAdd(void)
 { // testOperateAdd
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesA[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesA[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
     1.4, 2.5, 3.6,
   };
-  const double valuesB[] = {
+  const PylithScalar valuesB[] = {
     10.1, 20.2, 30.3,
     10.2, 20.3, 30.4,
     10.3, 20.4, 30.5,
@@ -714,7 +714,7 @@
     const ALE::Obj<Mesh::RealSection>& section = fieldSrc.section();
     CPPUNIT_ASSERT(!section.isNull());
     
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
     int i = 0;
     for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	 v_iter != vertices->end();
@@ -732,7 +732,7 @@
   CPPUNIT_ASSERT(!section.isNull());
   { // Setup destination field
 
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
     int i = 0;
     for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	 v_iter != vertices->end();
@@ -746,14 +746,14 @@
   field += fieldSrc;
 
   int i = 0;
-  double_array values(fiberDim);
-  const double tolerance = 1.0e-6;
+  scalar_array values(fiberDim);
+  const PylithScalar tolerance = 1.0e-6;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
     section->restrictPoint(*v_iter, &values[0], values.size());
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double valueE = valuesA[i] + valuesB[i];
+      const PylithScalar valueE = valuesA[i] + valuesB[i];
       ++i;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(valueE, values[iDim], tolerance);
     } // for
@@ -766,8 +766,8 @@
 pylith::topology::TestFieldMesh::testDimensionalize(void)
 { // testDimensionalize
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -787,7 +787,7 @@
     sieveMesh->depthStratum(0);
   CPPUNIT_ASSERT(!vertices.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -802,13 +802,13 @@
   field.dimensionalize();
 
   i = 0;
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
     section->restrictPoint(*v_iter, &values[0], values.size());
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double valueE = valuesNondim[i++]*scale;
+      const PylithScalar valueE = valuesNondim[i++]*scale;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(valueE, values[iDim], tolerance);
     } // for
   } // for
@@ -821,8 +821,8 @@
 pylith::topology::TestFieldMesh::testView(void)
 { // testView
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -842,7 +842,7 @@
     sieveMesh->depthStratum(0);
   CPPUNIT_ASSERT(!vertices.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -1031,7 +1031,7 @@
 { // testScatterSectionToVector
   const char* context = "abc";
   const int fiberDim = 3;
-  const double valuesE[] = {
+  const PylithScalar valuesE[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -1051,7 +1051,7 @@
     sieveMesh->depthStratum(0);
   CPPUNIT_ASSERT(!vertices.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -1067,10 +1067,10 @@
   CPPUNIT_ASSERT(0 != vec);
   int size = 0;
   VecGetSize(vec, &size);
-  double* valuesVec = 0;
+  PylithScalar* valuesVec = 0;
   VecGetArray(vec, &valuesVec);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int sizeE = vertices->size() * fiberDim;
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
   for (int i=0; i < sizeE; ++i)
@@ -1085,7 +1085,7 @@
 { // testScatterVectorToSection
   const char* context = "abcd";
   const int fiberDim = 3;
-  const double valuesE[] = {
+  const PylithScalar valuesE[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -1107,10 +1107,10 @@
   CPPUNIT_ASSERT(0 != vec);
   int size = 0;
   VecGetSize(vec, &size);
-  double* valuesVec = 0;
+  PylithScalar* valuesVec = 0;
   VecGetArray(vec, &valuesVec);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int sizeE = vertices->size() * fiberDim;
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
   for (int i=0; i < sizeE; ++i)
@@ -1120,7 +1120,7 @@
   field.createScatter(mesh, context);
   field.scatterVectorToSection(context);
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (Mesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -1330,7 +1330,7 @@
   const int nvertices = _TestFieldMesh::nvertices;
   const int ncorners = _TestFieldMesh::ncorners;
   const int spaceDim = _TestFieldMesh::cellDim;
-  const double* coordinates = _TestFieldMesh::coordinates;
+  const PylithScalar* coordinates = _TestFieldMesh::coordinates;
   const bool interpolate = false;
   ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, cellDim, ncells, (int*) cells,
 					      nvertices, interpolate, 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldSubMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 #include "pylith/topology/Field.hh" // USES Field
 #include "pylith/topology/SubMesh.hh" // USES SubMesh
 
-#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/array.hh" // USES scalar_array
 
 #include "spatialdata/geocoords/CSCart.hh" // USES CSCart
 
@@ -45,7 +45,7 @@
 	0, 1, 3,
 	0, 3, 2,
       };
-      const double coordinates[] = {
+      const PylithScalar coordinates[] = {
 	0.0, 0.0,
 	1.0, 0.0,
 	0.0, 1.0,
@@ -296,7 +296,7 @@
   
   field.clear();
 
-  CPPUNIT_ASSERT_EQUAL(1.0, field._metadata.scale);
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), field._metadata.scale);
   CPPUNIT_ASSERT_EQUAL(Field<SubMesh>::OTHER, field._metadata.vectorFieldType);
   CPPUNIT_ASSERT_EQUAL(false, field._metadata.dimsOkay);
 } // testClear
@@ -307,8 +307,8 @@
 pylith::topology::TestFieldSubMesh::testAllocate(void)
 { // testAllocate
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -329,7 +329,7 @@
   const ALE::Obj<SubMesh::RealSection>& section = field.section();
   CPPUNIT_ASSERT(!section.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -339,7 +339,7 @@
     section->updatePoint(*v_iter, &values[0]);
   } // for
 
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   i = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -357,8 +357,8 @@
 pylith::topology::TestFieldSubMesh::testZero(void)
 { // testZero
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -379,7 +379,7 @@
   const ALE::Obj<SubMesh::RealSection>& section = field.section();
   CPPUNIT_ASSERT(!section.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -391,7 +391,7 @@
 
   field.zero();
 
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
@@ -408,8 +408,8 @@
 pylith::topology::TestFieldSubMesh::testComplete(void)
 { // testComplete
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -430,7 +430,7 @@
   const ALE::Obj<SubMesh::RealSection>& section = field.section();
   CPPUNIT_ASSERT(!section.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -444,7 +444,7 @@
 
   // Expect no change for this serial test
   i = 0;
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
@@ -461,8 +461,8 @@
 pylith::topology::TestFieldSubMesh::testCopy(void)
 { // testCopy
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -484,7 +484,7 @@
     const ALE::Obj<SubMesh::RealSection>& section = fieldSrc.section();
     CPPUNIT_ASSERT(!section.isNull());
     
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
     int i = 0;
     for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	 v_iter != vertices->end();
@@ -504,8 +504,8 @@
   field.copy(fieldSrc);
 
   int i = 0;
-  double_array values(fiberDim);
-  const double tolerance = 1.0e-6;
+  scalar_array values(fiberDim);
+  const PylithScalar tolerance = 1.0e-6;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
@@ -522,13 +522,13 @@
 pylith::topology::TestFieldSubMesh::testOperatorAdd(void)
 { // testOperateAdd
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesA[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesA[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
   };
-  const double valuesB[] = {
+  const PylithScalar valuesB[] = {
     10.1, 20.2, 30.3,
     10.2, 20.3, 30.4,
     10.3, 20.4, 30.5,
@@ -550,7 +550,7 @@
     const ALE::Obj<SubMesh::RealSection>& section = fieldSrc.section();
     CPPUNIT_ASSERT(!section.isNull());
     
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
     int i = 0;
     for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	 v_iter != vertices->end();
@@ -568,7 +568,7 @@
   CPPUNIT_ASSERT(!section.isNull());
   { // Setup destination field
 
-    double_array values(fiberDim);
+    scalar_array values(fiberDim);
     int i = 0;
     for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
 	 v_iter != vertices->end();
@@ -582,14 +582,14 @@
   field += fieldSrc;
 
   int i = 0;
-  double_array values(fiberDim);
-  const double tolerance = 1.0e-6;
+  scalar_array values(fiberDim);
+  const PylithScalar tolerance = 1.0e-6;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
     section->restrictPoint(*v_iter, &values[0], values.size());
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double valueE = valuesA[i] + valuesB[i];
+      const PylithScalar valueE = valuesA[i] + valuesB[i];
       ++i;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(valueE, values[iDim], tolerance);
     } // for
@@ -602,8 +602,8 @@
 pylith::topology::TestFieldSubMesh::testDimensionalize(void)
 { // testDimensionalize
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -624,7 +624,7 @@
     sieveMesh->depthStratum(0);
   CPPUNIT_ASSERT(!vertices.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -639,13 +639,13 @@
   field.dimensionalize();
 
   i = 0;
-  const double tolerance = 1.0e-6;
+  const PylithScalar tolerance = 1.0e-6;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
        ++v_iter) {
     section->restrictPoint(*v_iter, &values[0], values.size());
     for (int iDim=0; iDim < fiberDim; ++iDim) {
-      const double valueE = valuesNondim[i++]*scale;
+      const PylithScalar valueE = valuesNondim[i++]*scale;
       CPPUNIT_ASSERT_DOUBLES_EQUAL(valueE, values[iDim], tolerance);
     } // for
   } // for
@@ -658,8 +658,8 @@
 pylith::topology::TestFieldSubMesh::testView(void)
 { // testView
   const int fiberDim = 3;
-  const double scale = 2.0;
-  const double valuesNondim[] = {
+  const PylithScalar scale = 2.0;
+  const PylithScalar valuesNondim[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -679,7 +679,7 @@
     sieveMesh->depthStratum(0);
   CPPUNIT_ASSERT(!vertices.isNull());
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -856,7 +856,7 @@
 { // testScatterSectionToVector
   const char* context = "abc";
   const int fiberDim = 3;
-  const double valuesE[] = {
+  const PylithScalar valuesE[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -873,7 +873,7 @@
   const ALE::Obj<SubMesh::SieveMesh::label_sequence>& vertices = 
     sieveMesh->depthStratum(0);
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   for (SubMesh::SieveMesh::label_sequence::iterator v_iter=vertices->begin();
        v_iter != vertices->end();
@@ -889,10 +889,10 @@
   CPPUNIT_ASSERT(0 != vec);
   int size = 0;
   VecGetSize(vec, &size);
-  double* valuesVec = 0;
+  PylithScalar* valuesVec = 0;
   VecGetArray(vec, &valuesVec);
 
-  const double tolerance = 1.0e-06;
+  const PylithScalar tolerance = 1.0e-06;
   const int sizeE = vertices->size() * fiberDim;
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
   for (int i=0; i < sizeE; ++i)
@@ -907,7 +907,7 @@
 { // testScatterVectorToSection
   const char* context = "abcd";
   const int fiberDim = 3;
-  const double valuesE[] = {
+  const PylithScalar valuesE[] = {
     1.1, 2.2, 3.3,
     1.2, 2.3, 3.4,
     1.3, 2.4, 3.5,
@@ -934,8 +934,8 @@
   const int sizeE = vertices->size() * fiberDim;
   CPPUNIT_ASSERT_EQUAL(sizeE, size);
 
-  const double tolerance = 1.0e-06;
-  double* valuesVec = 0;
+  const PylithScalar tolerance = 1.0e-06;
+  PylithScalar* valuesVec = 0;
   VecGetArray(vec, &valuesVec);
   for (int i=0; i < sizeE; ++i)
     valuesVec[i] = valuesE[i];
@@ -943,7 +943,7 @@
 
   field.scatterVectorToSection(context);
 
-  double_array values(fiberDim);
+  scalar_array values(fiberDim);
   int i = 0;
   const ALE::Obj<SubMesh::RealSection>& section = field.section();
   CPPUNIT_ASSERT(!section.isNull());
@@ -982,7 +982,7 @@
   const int nvertices = _TestFieldSubMesh::nvertices;
   const int ncorners = _TestFieldSubMesh::ncorners;
   const int spaceDim = _TestFieldSubMesh::cellDim;
-  const double* coordinates = _TestFieldSubMesh::coordinates;
+  const PylithScalar* coordinates = _TestFieldSubMesh::coordinates;
   const bool interpolate = false;
   ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, cellDim, ncells, (int*) cells,
 					      nvertices, interpolate, 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsNewMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsNewMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsNewMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -228,7 +228,7 @@
   CPPUNIT_ASSERT_EQUAL(std::string("velocity"), std::string(fieldA.label()));
   CPPUNIT_ASSERT_EQUAL(FieldBase::VECTOR,
 		       fieldA.vectorFieldType());
-  CPPUNIT_ASSERT_EQUAL(1.0, fieldA.scale());
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), fieldA.scale());
   CPPUNIT_ASSERT_EQUAL(false, fieldA.addDimensionOkay());
 
   const ALE::Obj<Mesh::RealSection>& sectionA = fieldA.section();
@@ -238,7 +238,7 @@
       ++v_iter) {
     const int fiberDim = sectionA->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(3, fiberDim);
-    const double* values = sectionA->restrictPoint(*v_iter);
+    const PylithScalar* values = sectionA->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(values);
   } // for
 
@@ -249,7 +249,7 @@
 		       std::string(fieldB.label()));
   CPPUNIT_ASSERT_EQUAL(FieldBase::OTHER,
 		       fieldB.vectorFieldType());
-  CPPUNIT_ASSERT_EQUAL(2.0, fieldB.scale());
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(2.0), fieldB.scale());
   CPPUNIT_ASSERT_EQUAL(true, fieldB.addDimensionOkay());
 
   const ALE::Obj<Mesh::RealSection>& sectionB = fieldB.section();
@@ -259,7 +259,7 @@
       ++v_iter) {
     const int fiberDim = sectionB->getFiberDimension(*v_iter);
     CPPUNIT_ASSERT_EQUAL(4, fiberDim);
-    const double* values = sectionB->restrictPoint(*v_iter);
+    const PylithScalar* values = sectionB->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(values);
   } // for
 
@@ -296,7 +296,7 @@
   CPPUNIT_ASSERT_EQUAL(std::string("velocity"), std::string(fieldA.label()));
   CPPUNIT_ASSERT_EQUAL(FieldBase::VECTOR,
 		       fieldA.vectorFieldType());
-  CPPUNIT_ASSERT_EQUAL(1.0, fieldA.scale());
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), fieldA.scale());
   CPPUNIT_ASSERT_EQUAL(false, fieldA.addDimensionOkay());
 
   const ALE::Obj<Mesh::RealSection>& sectionA = fieldA.section();
@@ -315,7 +315,7 @@
 		       std::string(fieldB.label()));
   CPPUNIT_ASSERT_EQUAL(FieldBase::OTHER,
 		       fieldB.vectorFieldType());
-  CPPUNIT_ASSERT_EQUAL(2.0, fieldB.scale());
+  CPPUNIT_ASSERT_EQUAL(PylithScalar(2.0), fieldB.scale());
   CPPUNIT_ASSERT_EQUAL(true, fieldB.addDimensionOkay());
 
   const ALE::Obj<Mesh::RealSection>& sectionB = fieldB.section();

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -140,7 +140,7 @@
 void
 pylith::topology::TestMesh::testNondimensionalize(void)
 { // testNondimensionalizer
-  const double lengthScale = 2.0;
+  const PylithScalar lengthScale = 2.0;
   const int spaceDim = 2;
   const int numVertices = 4;
   const int coordinates[] = { 
@@ -183,11 +183,11 @@
   for(Mesh::SieveMesh::label_sequence::iterator v_iter = verticesBegin;
       v_iter != verticesEnd;
       ++v_iter) {
-    const double* coordsVertex = coordsField->restrictPoint(*v_iter);
+    const PylithScalar* coordsVertex = coordsField->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != coordsVertex);
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int iDim=0; iDim < spaceDim; ++iDim) {
-      const double coordE = coordinates[i++] / lengthScale;
+      const PylithScalar coordE = coordinates[i++] / lengthScale;
       if (coordE < 1.0)
         CPPUNIT_ASSERT_DOUBLES_EQUAL(coordE, coordsVertex[iDim],
 				     tolerance);
@@ -207,11 +207,11 @@
   for(Mesh::SieveMesh::label_sequence::iterator v_iter = verticesBegin;
       v_iter != verticesEnd;
       ++v_iter) {
-    const double* coordsVertex = coordsDimField->restrictPoint(*v_iter);
+    const PylithScalar* coordsVertex = coordsDimField->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != coordsVertex);
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int iDim=0; iDim < spaceDim; ++iDim) {
-      const double coordE = coordinates[i++];
+      const PylithScalar coordE = coordinates[i++];
       if (coordE < 1.0)
         CPPUNIT_ASSERT_DOUBLES_EQUAL(coordE, coordsVertex[iDim],
 				     tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestRefineUniform.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestRefineUniform.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestRefineUniform.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -209,9 +209,9 @@
 	vertices->begin();
       v_iter != vertices->end();
       ++v_iter) {
-    const double* vertexCoords = coordinates->restrictPoint(*v_iter);
+    const PylithScalar* vertexCoords = coordinates->restrictPoint(*v_iter);
     CPPUNIT_ASSERT(0 != vertexCoords);
-    const double tolerance = 1.0e-06;
+    const PylithScalar tolerance = 1.0e-06;
     for (int iDim=0; iDim < spaceDim; ++iDim)
       if (data.vertices[i] < 1.0) {
         CPPUNIT_ASSERT_DOUBLES_EQUAL(data.vertices[i++], vertexCoords[iDim],

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestSubMesh.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 	0, 1, 3,
 	0, 3, 2,
       };
-      const double coordinates[] = {
+      const PylithScalar coordinates[] = {
 	0.0, 0.0,
 	1.0, 0.0,
 	0.0, 1.0,
@@ -224,7 +224,7 @@
   const int nvertices = _TestSubMesh::nvertices;
   const int ncorners = _TestSubMesh::ncorners;
   const int spaceDim = _TestSubMesh::cellDim;
-  const double* coordinates = _TestSubMesh::coordinates;
+  const PylithScalar* coordinates = _TestSubMesh::coordinates;
   const bool interpolate = false;
   ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, cellDim, ncells, (int*) cells,
 					      nvertices, interpolate, 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesive.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesive.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesive.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -19,6 +19,8 @@
 #if !defined(pylith_topology_meshdatacohesive_hh)
 #define pylith_topology_meshdatacohesive_hh
 
+#include "pylith/utils/types.hh" // HASA PylithScalar
+
 namespace pylith {
   namespace topology {
      class MeshDataCohesive;
@@ -55,7 +57,7 @@
   int numCellsCohesive; ///< Number of cohesive cells.
   int numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  double* vertices; ///< Pointer to coordinates of vertices
+  PylithScalar* vertices; ///< Pointer to coordinates of vertices
   int* cells; ///< Pointer to indices of vertices in cells
   int* cellsCohesive; ///< Pointer to indices of vertices in cells
   int* materialIds; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 
 const int pylith::topology::MeshDataCohesiveHex8Level2::_numCornersCohesive = 6;
 
-const double pylith::topology::MeshDataCohesiveHex8Level2::_vertices[] = {
+const PylithScalar pylith::topology::MeshDataCohesiveHex8Level2::_vertices[] = {
   -2.0, -1.0, -1.0, // 26
   -2.0, +1.0, -1.0,
   -2.0, -1.0, +1.0,
@@ -153,7 +153,7 @@
   numCorners = _numCorners;
   numCellsCohesive = _numCellsCohesive;
   numCornersCohesive = _numCornersCohesive;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   cellsCohesive = const_cast<int*>(_cellsCohesive);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
   static const int _numCellsCohesive; ///< Number of cohesive cells.
   static const int _numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _cellsCohesive[]; ///< Pointer to indices of vertices in cohseive cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2Fault1.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2Fault1.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2Fault1.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 
 const int pylith::topology::MeshDataCohesiveHex8Level2Fault1::_numCornersCohesive = 12;
 
-const double pylith::topology::MeshDataCohesiveHex8Level2Fault1::_vertices[] = {
+const PylithScalar pylith::topology::MeshDataCohesiveHex8Level2Fault1::_vertices[] = {
   -2.0, -1.0, -1.0, // 16
   -2.0, +1.0, -1.0,
   -2.0, -1.0, +1.0,
@@ -178,7 +178,7 @@
   numCorners = _numCorners;
   numCellsCohesive = _numCellsCohesive;
   numCornersCohesive = _numCornersCohesive;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   cellsCohesive = const_cast<int*>(_cellsCohesive);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2Fault1.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2Fault1.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveHex8Level2Fault1.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
   static const int _numCellsCohesive; ///< Number of cohesive cells.
   static const int _numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _cellsCohesive[]; ///< Pointer to indices of vertices in cohseive cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 
 const int pylith::topology::MeshDataCohesiveQuad4Level2::_numCornersCohesive = 6;
 
-const double pylith::topology::MeshDataCohesiveQuad4Level2::_vertices[] = {
+const PylithScalar pylith::topology::MeshDataCohesiveQuad4Level2::_vertices[] = {
   -1.0, -1.0,
   -1.0,  0.0,
   -1.0,  1.0,
@@ -130,7 +130,7 @@
   numCorners = _numCorners;
   numCellsCohesive = _numCellsCohesive;
   numCornersCohesive = _numCornersCohesive;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   cellsCohesive = const_cast<int*>(_cellsCohesive);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
   static const int _numCellsCohesive; ///< Number of cohesive cells.
   static const int _numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _cellsCohesive[]; ///< Pointer to indices of vertices in cohseive cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2Fault1.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2Fault1.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2Fault1.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 
 const int pylith::topology::MeshDataCohesiveQuad4Level2Fault1::_numCornersCohesive = 6;
 
-const double pylith::topology::MeshDataCohesiveQuad4Level2Fault1::_vertices[] = {
+const PylithScalar pylith::topology::MeshDataCohesiveQuad4Level2Fault1::_vertices[] = {
   -1.0, -1.0,
   -1.0,  0.0,
   -1.0,  1.0,
@@ -145,7 +145,7 @@
   numCorners = _numCorners;
   numCellsCohesive = _numCellsCohesive;
   numCornersCohesive = _numCornersCohesive;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   cellsCohesive = const_cast<int*>(_cellsCohesive);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2Fault1.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2Fault1.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveQuad4Level2Fault1.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
   static const int _numCellsCohesive; ///< Number of cohesive cells.
   static const int _numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _cellsCohesive[]; ///< Pointer to indices of vertices in cohseive cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 
 const int pylith::topology::MeshDataCohesiveTet4Level2::_numCornersCohesive = 9;
 
-const double pylith::topology::MeshDataCohesiveTet4Level2::_vertices[] = {
+const PylithScalar pylith::topology::MeshDataCohesiveTet4Level2::_vertices[] = {
   -1.000000e+00,      0.000000e+00,      0.000000e+00,
    0.000000e+00,     -1.000000e+00,      0.000000e+00,
    0.000000e+00,      0.000000e+00,      1.000000e+00,
@@ -122,7 +122,7 @@
   numCorners = _numCorners;
   numCellsCohesive = _numCellsCohesive;
   numCornersCohesive = _numCornersCohesive;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   cellsCohesive = const_cast<int*>(_cellsCohesive);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
   static const int _numCellsCohesive; ///< Number of cohesive cells.
   static const int _numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _cellsCohesive[]; ///< Pointer to indices of vertices in cohseive cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2Fault1.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2Fault1.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2Fault1.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 
 const int pylith::topology::MeshDataCohesiveTet4Level2Fault1::_numCornersCohesive = 9;
 
-const double pylith::topology::MeshDataCohesiveTet4Level2Fault1::_vertices[] = {
+const PylithScalar pylith::topology::MeshDataCohesiveTet4Level2Fault1::_vertices[] = {
   -1.0,  0.0, 0.0,
    0.0, -1.0, 0.0,
    0.0,  0.0, 1.0,
@@ -140,7 +140,7 @@
   numCorners = _numCorners;
   numCellsCohesive = _numCellsCohesive;
   numCornersCohesive = _numCornersCohesive;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   cellsCohesive = const_cast<int*>(_cellsCohesive);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2Fault1.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2Fault1.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTet4Level2Fault1.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
   static const int _numCellsCohesive; ///< Number of cohesive cells.
   static const int _numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _cellsCohesive[]; ///< Pointer to indices of vertices in cohseive cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -39,7 +39,7 @@
 
 const int pylith::topology::MeshDataCohesiveTri3Level2::_numCornersCohesive = 6;
 
-const double pylith::topology::MeshDataCohesiveTri3Level2::_vertices[] = {
+const PylithScalar pylith::topology::MeshDataCohesiveTri3Level2::_vertices[] = {
   -1.0,  0.0,
    0.0, -1.0,
    0.0,  0.0,
@@ -121,7 +121,7 @@
   numCorners = _numCorners;
   numCellsCohesive = _numCellsCohesive;
   numCornersCohesive = _numCornersCohesive;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   cellsCohesive = const_cast<int*>(_cellsCohesive);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
   static const int _numCellsCohesive; ///< Number of cohesive cells.
   static const int _numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _cellsCohesive[]; ///< Pointer to indices of vertices in cohseive cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2Fault1.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2Fault1.cc	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2Fault1.cc	2011-09-17 18:48:29 UTC (rev 18927)
@@ -40,7 +40,7 @@
 
 const int pylith::topology::MeshDataCohesiveTri3Level2Fault1::_numCornersCohesive = 6;
 
-const double pylith::topology::MeshDataCohesiveTri3Level2Fault1::_vertices[] = {
+const PylithScalar pylith::topology::MeshDataCohesiveTri3Level2Fault1::_vertices[] = {
   -1.0,  0.0,
    0.0, -1.0,
    0.0,  0.0,
@@ -137,7 +137,7 @@
   numCorners = _numCorners;
   numCellsCohesive = _numCellsCohesive;
   numCornersCohesive = _numCornersCohesive;
-  vertices = const_cast<double*>(_vertices);
+  vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);
   cellsCohesive = const_cast<int*>(_cellsCohesive);
   materialIds = const_cast<int*>(_materialIds);

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2Fault1.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2Fault1.hh	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/MeshDataCohesiveTri3Level2Fault1.hh	2011-09-17 18:48:29 UTC (rev 18927)
@@ -55,7 +55,7 @@
   static const int _numCellsCohesive; ///< Number of cohesive cells.
   static const int _numCornersCohesive; ///< Number of vertices in cohesive cell.
 
-  static const double _vertices[]; ///< Pointer to coordinates of vertices
+  static const PylithScalar _vertices[]; ///< Pointer to coordinates of vertices
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _cellsCohesive[]; ///< Pointer to indices of vertices in cohseive cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/TestAbsorbingDampers.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/TestAbsorbingDampers.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/TestAbsorbingDampers.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -80,7 +80,7 @@
     """
     (mesh, bc, fields) = self._initialize()
 
-    self.assertEqual(1.0e+30, bc.stableTimeStep(mesh))
+    self.assertAlmostEqual(1.0, bc.stableTimeStep(mesh)/1.0e+30, 5)
     return
 
   

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -80,7 +80,7 @@
     """
     (mesh, bc, fields) = self._initialize()
 
-    self.assertEqual(1.0e+30, bc.stableTimeStep(mesh))
+    self.assertAlmostEqual(1.0, bc.stableTimeStep(mesh)/1.0e+30, 5)
     return
 
   

Modified: short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveDyn.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -132,7 +132,7 @@
     """
     (mesh, fault, fields) = self._initialize()
 
-    self.assertEqual(1.0e+30, fault.stableTimeStep(mesh))
+    self.assertAlmostEqual(1.0, fault.stableTimeStep(mesh)/1.0e+30, 5)
     return
 
   

Modified: short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestFaultCohesiveKin.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -161,7 +161,7 @@
     """
     (mesh, fault, fields) = self._initialize()
 
-    self.assertEqual(1.0e+30, fault.stableTimeStep(mesh))
+    self.assertAlmostEqual(1.0, fault.stableTimeStep(mesh)/1.0e+30, 5)
     return
 
   

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -121,7 +121,7 @@
     (mesh, integrator) = self._preinitialize()
     fields = self._initialize(mesh, integrator)
 
-    self.assertEqual(1.0e+30, integrator.stableTimeStep(mesh))
+    self.assertAlmostEqual(1.0, integrator.stableTimeStep(mesh)/1.0e+30, places=5)
     return
 
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -121,7 +121,7 @@
     (mesh, integrator) = self._preinitialize()
     fields = self._initialize(mesh, integrator)
 
-    self.assertEqual(1.0e+30, integrator.stableTimeStep(mesh))
+    self.assertAlmostEqual(1.0, integrator.stableTimeStep(mesh)/1.0e+30, places=5)
     return
 
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicit.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicit.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -105,7 +105,7 @@
     (mesh, integrator) = self._preinitialize()
     fields = self._initialize(mesh, integrator)
 
-    self.assertEqual(1.0e+30, integrator.stableTimeStep(mesh))
+    self.assertAlmostEqual(1.0, integrator.stableTimeStep(mesh)/1.0e+30, places=5)
     return
 
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -105,7 +105,7 @@
     (mesh, integrator) = self._preinitialize()
     fields = self._initialize(mesh, integrator)
 
-    self.assertEqual(1.0e+30, integrator.stableTimeStep(mesh))
+    self.assertAlmostEqual(1.0, integrator.stableTimeStep(mesh)/1.0e+30, places=5)
     return
 
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATLagrange.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATLagrange.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATLagrange.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 import unittest
 import numpy
 from pylith.feassemble.FIATLagrange import FIATLagrange
-from pylith.utils.testarray import test_double
+from pylith.utils.testarray import test_scalararray
 
 # ----------------------------------------------------------------------
 class Line2(object):
@@ -1124,11 +1124,11 @@
     self.assertEqual(cellE.numQuadPts, cell.numQuadPts)
 
     # Check arrays
-    test_double(self, cellE.vertices, cell.vertices)
-    test_double(self, cellE.quadPts, cell.quadPts)
-    test_double(self, cellE.quadWts, cell.quadWts)
-    test_double(self, cellE.basis, cell.basis)
-    test_double(self, cellE.basisDeriv, cell.basisDeriv)
+    test_scalararray(self, cellE.vertices, cell.vertices)
+    test_scalararray(self, cellE.quadPts, cell.quadPts)
+    test_scalararray(self, cellE.quadWts, cell.quadWts)
+    test_scalararray(self, cellE.basis, cell.basis)
+    test_scalararray(self, cellE.basisDeriv, cell.basisDeriv)
     return
 
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATSimplex.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATSimplex.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATSimplex.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -23,7 +23,7 @@
 import unittest
 import numpy
 from pylith.feassemble.FIATSimplex import FIATSimplex
-from pylith.utils.testarray import test_double
+from pylith.utils.testarray import test_scalararray
 
 # ----------------------------------------------------------------------
 class Line2(object):
@@ -526,11 +526,11 @@
     self.assertEqual(cellE.numQuadPts, cell.numQuadPts)
 
     # Check arrays
-    test_double(self, cellE.vertices, cell.vertices)
-    test_double(self, cellE.quadPts, cell.quadPts)
-    test_double(self, cellE.quadWts, cell.quadWts)
-    test_double(self, cellE.basis, cell.basis)
-    test_double(self, cellE.basisDeriv, cell.basisDeriv)
+    test_scalararray(self, cellE.vertices, cell.vertices)
+    test_scalararray(self, cellE.quadPts, cell.quadPts)
+    test_scalararray(self, cellE.quadWts, cell.quadWts)
+    test_scalararray(self, cellE.basis, cell.basis)
+    test_scalararray(self, cellE.basisDeriv, cell.basisDeriv)
     return
 
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestMeshQuadrature.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestMeshQuadrature.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestMeshQuadrature.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,7 +59,7 @@
     minJacobian = 4.0e-02;
     q = MeshQuadrature()
     q.minJacobian(minJacobian)
-    self.assertEqual(minJacobian, q.minJacobian())
+    self.assertAlmostEqual(minJacobian, q.minJacobian(), places=5)
     return
     
 
@@ -93,21 +93,30 @@
     cell.inventory.order = 2
     cell._configure()
 
+    scalarType = None
+    from pylith.utils.utils import sizeofPylithScalar
+    if 8 == sizeofPylithScalar():
+      scalarType = numpy.float64
+    elif 4 == sizeofPylithScalar():
+      scalarType = numpy.float32
+    else:
+      raise ValueError("Unknown size for PylithScalar.")
+
     verticesE = numpy.array([ [-1.0], [1.0], [0.0] ])
     quadPtsE = numpy.array( [[-1.0/3**0.5],
                              [+1.0/3**0.5]],
-                            dtype=numpy.float64 )
-    quadWtsE = numpy.array( [1.0, 1.0], dtype=numpy.float64 )
+                            dtype=scalarType )
+    quadWtsE = numpy.array( [1.0, 1.0], dtype=scalarType )
 
     # Compute basis functions and derivatives at quadrature points
-    basisE = numpy.zeros( (2, 3), dtype=numpy.float64)
-    basisDerivE = numpy.zeros( (2, 3, 1), dtype=numpy.float64)
+    basisE = numpy.zeros( (2, 3), dtype=scalarType)
+    basisDerivE = numpy.zeros( (2, 3, 1), dtype=scalarType)
     iQuad = 0
     for q in quadPtsE:
       basisE[iQuad] = numpy.array([N0(q), N1(q), N2(q)],
-                                  dtype=numpy.float64).reshape( (3,) )
+                                  dtype=scalarType).reshape( (3,) )
       deriv = numpy.array([[N0p(q)], [N1p(q)], [N2p(q)]],
-                          dtype=numpy.float64)      
+                          dtype=scalarType)      
       basisDerivE[iQuad] = deriv.reshape((3, 1))
       iQuad += 1
 
@@ -123,16 +132,15 @@
     self.assertEqual(3, quadrature.numBasis())
     self.assertEqual(2, quadrature.numQuadPts())
 
-    from pylith.utils.testarray import test_double
-    from pylith.utils.utils import TestArray_checkDouble
+    from pylith.utils.utils import TestArray_checkScalar
 
-    self.failUnless(TestArray_checkDouble(basisE.ravel(),
+    self.failUnless(TestArray_checkScalar(basisE.ravel(),
                                           quadrature.basis()))
-    self.failUnless(TestArray_checkDouble(basisDerivE.ravel(),
+    self.failUnless(TestArray_checkScalar(basisDerivE.ravel(),
                                           quadrature.basisDerivRef()))
-    self.failUnless(TestArray_checkDouble(quadPtsE.ravel(),
+    self.failUnless(TestArray_checkScalar(quadPtsE.ravel(),
                                           quadrature.quadPtsRef()))
-    self.failUnless(TestArray_checkDouble(quadWtsE.ravel(),
+    self.failUnless(TestArray_checkScalar(quadWtsE.ravel(),
                                           quadrature.quadWts()))
 
     quadrature.initializeGeometry()

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestSubMeshQuadrature.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestSubMeshQuadrature.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestSubMeshQuadrature.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -59,7 +59,7 @@
     minJacobian = 4.0e-02;
     q = SubMeshQuadrature()
     q.minJacobian(minJacobian)
-    self.assertEqual(minJacobian, q.minJacobian())
+    self.assertAlmostEqual(minJacobian, q.minJacobian(), places=5)
     return
     
 
@@ -93,21 +93,30 @@
     cell.inventory.order = 2
     cell._configure()
 
+    scalarType = None
+    from pylith.utils.utils import sizeofPylithScalar
+    if 8 == sizeofPylithScalar():
+      scalarType = numpy.float64
+    elif 4 == sizeofPylithScalar():
+      scalarType = numpy.float32
+    else:
+      raise ValueError("Unknown size for PylithScalar.")
+
     verticesE = numpy.array([ [-1.0], [1.0], [0.0] ])
     quadPtsE = numpy.array( [[-1.0/3**0.5],
                              [+1.0/3**0.5]],
-                            dtype=numpy.float64 )
-    quadWtsE = numpy.array( [1.0, 1.0], dtype=numpy.float64 )
+                            dtype=scalarType )
+    quadWtsE = numpy.array( [1.0, 1.0], dtype=scalarType )
 
     # Compute basis functions and derivatives at quadrature points
-    basisE = numpy.zeros( (2, 3), dtype=numpy.float64)
-    basisDerivE = numpy.zeros( (2, 3, 1), dtype=numpy.float64)
+    basisE = numpy.zeros( (2, 3), dtype=scalarType)
+    basisDerivE = numpy.zeros( (2, 3, 1), dtype=scalarType)
     iQuad = 0
     for q in quadPtsE:
       basisE[iQuad] = numpy.array([N0(q), N1(q), N2(q)],
-                                  dtype=numpy.float64).reshape( (3,) )
+                                  dtype=scalarType).reshape( (3,) )
       deriv = numpy.array([[N0p(q)], [N1p(q)], [N2p(q)]],
-                          dtype=numpy.float64)      
+                          dtype=scalarType)      
       basisDerivE[iQuad] = deriv.reshape((3, 1))
       iQuad += 1
 
@@ -123,16 +132,15 @@
     self.assertEqual(3, quadrature.numBasis())
     self.assertEqual(2, quadrature.numQuadPts())
 
-    from pylith.utils.testarray import test_double
-    from pylith.utils.utils import TestArray_checkDouble
+    from pylith.utils.utils import TestArray_checkScalar
 
-    self.failUnless(TestArray_checkDouble(basisE.ravel(),
+    self.failUnless(TestArray_checkScalar(basisE.ravel(),
                                           quadrature.basis()))
-    self.failUnless(TestArray_checkDouble(basisDerivE.ravel(),
+    self.failUnless(TestArray_checkScalar(basisDerivE.ravel(),
                                           quadrature.basisDerivRef()))
-    self.failUnless(TestArray_checkDouble(quadPtsE.ravel(),
+    self.failUnless(TestArray_checkScalar(quadPtsE.ravel(),
                                           quadrature.quadPtsRef()))
-    self.failUnless(TestArray_checkDouble(quadWtsE.ravel(),
+    self.failUnless(TestArray_checkScalar(quadWtsE.ravel(),
                                           quadrature.quadWts()))
 
     quadrature.initializeGeometry()

Added: short/3D/PyLith/trunk/unittests/pytests/utils/TestPylith.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/utils/TestPylith.py	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/pytests/utils/TestPylith.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -0,0 +1,43 @@
+#!/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-2011 University of California, Davis
+#
+# See COPYING for license information.
+#
+# ======================================================================
+#
+
+## @file unittests/pytests/utils/TestPylith.py
+
+## @brief Unit testing of Pylith module.
+
+import unittest
+
+
+# ----------------------------------------------------------------------
+class TestPylith(unittest.TestCase):
+  """
+  Unit testing of Pylith object.
+  """
+  
+
+  def test_sizeofPylithScalar(self):
+    """
+    Test constructor.
+    """
+    from pylith.utils.utils import sizeofPylithScalar
+    size = sizeofPylithScalar()
+    self.failUnless(4 == size or 8 == size)
+    return
+
+
+# End of file 

Modified: short/3D/PyLith/trunk/unittests/pytests/utils/testutils.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/utils/testutils.py	2011-09-17 05:24:14 UTC (rev 18926)
+++ short/3D/PyLith/trunk/unittests/pytests/utils/testutils.py	2011-09-17 18:48:29 UTC (rev 18927)
@@ -62,6 +62,9 @@
 
     suite = unittest.TestSuite()
 
+    from TestPylith import TestPylith
+    suite.addTest(unittest.makeSuite(TestPylith))
+
     from TestEventLogger import TestEventLogger
     suite.addTest(unittest.makeSuite(TestEventLogger))
 



More information about the CIG-COMMITS mailing list