[cig-commits] r9344 - in short/3D/PyLith/trunk: modulesrc/bc pylith pylith/bc pylith/meshio unittests/libtests/bc unittests/libtests/bc/data unittests/pytests/bc

brad at geodynamics.org brad at geodynamics.org
Thu Feb 14 13:52:11 PST 2008


Author: brad
Date: 2008-02-14 13:52:10 -0800 (Thu, 14 Feb 2008)
New Revision: 9344

Added:
   short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py
   short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMulti.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMulti.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMultiTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMultiTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.cc
   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.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.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
Removed:
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.hh
Modified:
   short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src
   short/3D/PyLith/trunk/pylith/Makefile.am
   short/3D/PyLith/trunk/pylith/bc/DirichletBoundary.py
   short/3D/PyLith/trunk/pylith/bc/Neumann.py
   short/3D/PyLith/trunk/pylith/meshio/OutputMatElastic.py
   short/3D/PyLith/trunk/pylith/meshio/__init__.py
   short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPoints.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPoints.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsLine2b.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMulti.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMulti.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMultiTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/quad4.spatialdb
   short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3.mesh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3_b.spatialdb
   short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3_b_rate.spatialdb
   short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py
   short/3D/PyLith/trunk/unittests/pytests/bc/testbc.py
Log:
Added testing of DirichletBoundary. Fixed bugs in some other unit tests.

Modified: short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src	2008-02-14 21:52:10 UTC (rev 9344)
@@ -16,6 +16,7 @@
 #include "pylith/feassemble/Integrator.hh"
 #include "pylith/bc/AbsorbingDampers.hh"
 #include "pylith/bc/DirichletPoints.hh"
+#include "pylith/bc/DirichletBoundary.hh"
 #include "pylith/bc/Neumann.hh"
 
 #include "pylith/utils/array.hh"
@@ -402,6 +403,311 @@
 
 
 # ----------------------------------------------------------------------
+cdef class DirichletBoundary(BoundaryCondition):
+
+  def __init__(self):
+    """
+    Constructor.
+    """
+    # create shim for constructor
+    #embed{ void* DirichletBoundary_constructor()
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::bc::DirichletBoundary);
+      assert(0 != result);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (const ALE::Exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.msg().c_str()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
+    #}embed
+
+    BoundaryCondition.__init__(self)
+    self.thisptr = DirichletBoundary_constructor()
+    self.handle = self._createHandle()
+    return
+
+
+  property dbRate:
+    def __set__(self, value):
+      """
+      Set spatial database for parameters of rate of change of values.
+      """
+      # create shim for method 'dbRate'
+      #embed{ void DirichletBoundary_dbRate_set(void* objVptr, void* dbVptr)
+      try {
+        assert(0 != objVptr);
+        assert(0 != dbVptr);
+        spatialdata::spatialdb::SpatialDB* db =
+          (spatialdata::spatialdb::SpatialDB*) dbVptr;
+        ((pylith::bc::DirichletBoundary*) objVptr)->dbRate(db);
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (const ALE::Exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.msg().c_str()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
+      #}embed
+      if not value.name == "spatialdata_spatialdb_SpatialDB":
+        raise TypeError, \
+              "Argument must be extension module type " \
+              "'spatialdata::spatialdb::SpatialDB'."
+      DirichletBoundary_dbRate_set(self.thisptr, ptrFromHandle(value))
+
+
+  property fixedDOF:
+    def __set__(self, value):
+      """
+      Set fixed DOF.
+      """
+      # create shim for method 'fixedDOF'
+      #embed{ void DirichletBoundary_fixedDOF_set(void* objVptr, int* dofVptr, int numFixedDOF)
+      try {
+        assert(0 != objVptr);
+        assert(0 != dofVptr);
+        pylith::int_array fixedDOF((int*) dofVptr, numFixedDOF);
+        ((pylith::bc::DirichletBoundary*) objVptr)->fixedDOF(fixedDOF);
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (const ALE::Exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.msg().c_str()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
+      #}embed
+      cdef int* fixedDOF
+      numFixedDOF = len(value)
+      fixedDOF = <int*> malloc(numFixedDOF*sizeof(int))
+      assert(fixedDOF != NULL)
+      for i from 0 <= i < numFixedDOF:
+        fixedDOF[i] = value[i]
+      DirichletBoundary_fixedDOF_set(self.thisptr, fixedDOF, numFixedDOF)
+      free(fixedDOF)
+
+
+  def setConstraintSizes(self, field, mesh):
+    """
+    Set number of degrees of freedom that are constrained at points in field.
+    """
+    # create shim for method 'setConstraintSizes'
+    #embed{ void DirichletBoundary_setConstraintSizes(void* objVptr, void* fieldVptr, void* meshVptr)
+    try {
+      assert(0 != objVptr);
+      assert(0 != fieldVptr);
+      assert(0 != meshVptr);
+      ALE::Obj<pylith::real_section_type>* field = (ALE::Obj<pylith::real_section_type>*) fieldVptr;
+      ALE::Obj<ALE::Mesh>* mesh = (ALE::Obj<ALE::Mesh>*) meshVptr;
+      ((pylith::bc::DirichletBoundary*) objVptr)->setConstraintSizes(*field, *mesh);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (const ALE::Exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.msg().c_str()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch      
+    #}embed
+
+    if not mesh.name == "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument must be extension module type " \
+            "'pylith::topology::Mesh'."
+    DirichletBoundary_setConstraintSizes(self.thisptr, PyCObject_AsVoidPtr(field),
+                                  ptrFromHandle(mesh))
+    return
+
+
+  def setConstraints(self, field, mesh):
+    """
+    Set which degrees of freedom that are constrained at points in field.
+    """
+    # create shim for method 'setConstraints'
+    #embed{ void DirichletBoundary_setConstraints(void* objVptr, void* fieldVptr, void* meshVptr)
+    try {
+      assert(0 != objVptr);
+      assert(0 != fieldVptr);
+      assert(0 != meshVptr);
+      ALE::Obj<pylith::real_section_type>* field = (ALE::Obj<pylith::real_section_type>*) fieldVptr;
+      ALE::Obj<ALE::Mesh>* mesh = (ALE::Obj<ALE::Mesh>*) meshVptr;
+      ((pylith::bc::DirichletBoundary*) objVptr)->setConstraints(*field, *mesh);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (const ALE::Exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.msg().c_str()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch      
+    #}embed
+
+    if not mesh.name == "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument must be extension module type " \
+            "'pylith::topology::Mesh'."
+    DirichletBoundary_setConstraints(self.thisptr, PyCObject_AsVoidPtr(field), ptrFromHandle(mesh))
+    return
+
+
+  def setField(self, t, field, mesh):
+    """
+    Set values in field.
+    """
+    # create shim for method 'setField'
+    #embed{ void DirichletBoundary_setField(void* objVptr, double t, void* fieldVptr, void* meshVptr)
+    try {
+      assert(0 != objVptr);
+      assert(0 != fieldVptr);
+      assert(0 != meshVptr);
+      ALE::Obj<pylith::real_section_type>* field = (ALE::Obj<pylith::real_section_type>*) fieldVptr;
+      ALE::Obj<ALE::Mesh>* mesh = (ALE::Obj<ALE::Mesh>*) meshVptr;
+      ((pylith::bc::DirichletBoundary*) objVptr)->setField(t, *field, *mesh);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (const ALE::Exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.msg().c_str()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch      
+    #}embed
+
+    if not mesh.name == "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument must be extension module type " \
+            "'pylith::topology::Mesh'."
+    DirichletBoundary_setField(self.thisptr, t, PyCObject_AsVoidPtr(field),
+                          ptrFromHandle(mesh))
+    return
+
+
+  def boundaryMesh(self, mesh):
+    """
+    Get mesh associated with fields over boundary.
+    """
+    # create shim for method 'boundaryMesh'
+    #embed{ void DirichletBoundary_boundaryMesh(void* objVptr, void* meshVptr)
+    try {
+      assert(0 != objVptr);
+      assert(0 != meshVptr);
+      ALE::Obj<ALE::Mesh>* mesh = (ALE::Obj<ALE::Mesh>*) meshVptr;
+      *mesh = ((pylith::bc::DirichletBoundary*) objVptr)->boundaryMesh();
+      } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (const ALE::Exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.msg().c_str()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch      
+    #}embed
+
+    if not mesh.name == "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument 'mesh' must be extension module type " \
+            "'pylith::topology::Mesh'."
+    DirichletBoundary_boundaryMesh(self.thisptr, ptrFromHandle(mesh))
+    return
+    
+
+  def vertexField(self, name, mesh, fields=None):
+    """
+    Get cell field.
+    """
+    # create shim for method 'vertexField'
+    #embed{ void* DirichletBoundary_vertexField(void* objVptr, int* fieldPtr, char* name, void* meshVptr, void* fieldsVptr)
+    void* result = 0;
+    try {
+      assert(0 != objVptr);
+      assert(0 != fieldPtr);
+      assert(0 != name);
+      assert(0 != meshVptr);
+      pylith::bc::DirichletBoundary* bc = (pylith::bc::DirichletBoundary*) objVptr;
+      ALE::Obj<ALE::Mesh>* mesh = (ALE::Obj<ALE::Mesh>*) meshVptr;
+      pylith::topology::FieldsManager* fields =
+        (pylith::topology::FieldsManager*) fieldsVptr;
+      pylith::VectorFieldEnum fieldType;
+      const ALE::Obj<pylith::real_section_type>& field =
+        bc->vertexField(&fieldType, name, *mesh, fields);
+      *fieldPtr = fieldType;
+      result = (void*) &field;
+      } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (const ALE::Exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.msg().c_str()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
+    #}embed
+    if not mesh.name == "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument 'mesh' must be extension module type " \
+            "'pylith::topology::Mesh'."
+    if None != fields:
+      if not fields.name == "pylith_topology_FieldsManager":
+        raise TypeError, \
+              "Argument 'fields' must be extension module type " \
+              "'pylith::topology::FieldsManager'."
+    cdef void* ptr
+    cdef int fieldType
+    if None != fields:
+      ptr = DirichletBoundary_vertexField(self.thisptr, &fieldType, name,
+                              ptrFromHandle(mesh), ptrFromHandle(fields))
+    else:
+      ptr = DirichletBoundary_vertexField(self.thisptr, &fieldType, name,
+                              ptrFromHandle(mesh), NULL)
+    return (PyCObject_FromVoidPtr(ptr, NULL), fieldType)
+    
+
+  property useSolnIncr:
+    def __set__(self, flag):
+      """
+      Set solution increment flag.
+      """
+      # create shim for method 'useSolnIncr'
+      #embed{ void DirichletBoundary_useSolnIncr_set(void* objVptr, int flag)
+      try {
+        assert(0 != objVptr);
+        ((pylith::bc::DirichletBoundary*) objVptr)->useSolnIncr(flag);
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (const ALE::Exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.msg().c_str()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
+      #}embed
+      DirichletBoundary_useSolnIncr_set(self.thisptr, flag)
+
+
+# ----------------------------------------------------------------------
 cdef class AbsorbingDampers(BoundaryCondition):
 
   def __init__(self):
@@ -912,7 +1218,7 @@
     Get mesh associated with fields over boundary.
     """
     # create shim for method 'boundaryMesh'
-    #embed{ void Neumann_faultMesh(void* objVptr, void* meshVptr)
+    #embed{ void Neumann_boundaryMesh(void* objVptr, void* meshVptr)
     try {
       assert(0 != objVptr);
       assert(0 != meshVptr);
@@ -934,7 +1240,7 @@
       raise TypeError, \
             "Argument 'mesh' must be extension module type " \
             "'pylith::topology::Mesh'."
-    Neumann_faultMesh(self.thisptr, ptrFromHandle(mesh))
+    Neumann_boundaryMesh(self.thisptr, ptrFromHandle(mesh))
     return
     
 

Modified: short/3D/PyLith/trunk/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/pylith/Makefile.am	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/pylith/Makefile.am	2008-02-14 21:52:10 UTC (rev 9344)
@@ -18,6 +18,7 @@
 	bc/BCIntegrator.py \
 	bc/BoundaryCondition.py \
 	bc/DirichletPoints.py \
+	bc/DirichletBoundary.py \
 	bc/FixedDOFDB.py \
 	bc/BCSingle.py \
 	bc/BCTwoSides.py \
@@ -85,10 +86,12 @@
 	meshio/MeshIOAscii.py \
 	meshio/MeshIOCubit.py \
 	meshio/MeshIOLagrit.py \
+	meshio/OutputDirichlet.py \
 	meshio/OutputManager.py \
 	meshio/OutputSoln.py \
 	meshio/OutputFaultKin.py \
 	meshio/OutputMatElastic.py \
+	meshio/OutputNeumann.py \
 	meshio/SingleOutput.py \
 	meshio/VertexFilter.py \
 	problems/__init__.py \

Modified: short/3D/PyLith/trunk/pylith/bc/DirichletBoundary.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/DirichletBoundary.py	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/pylith/bc/DirichletBoundary.py	2008-02-14 21:52:10 UTC (rev 9344)
@@ -84,10 +84,10 @@
                                  family="spatial_database")
     dbRate.meta['tip'] = "Database of parameters for rate of change of values."
 
-    #from pylith.meshio.OutputDirichlet import OutputDirichlet
-    #output = pyre.inventory.facility("output", family="output_manager",
-    #                                 factory=OutputDirichlet)
-    #output.meta['tip'] = "Output manager associated with diagnostic output."
+    from pylith.meshio.OutputDirichlet import OutputDirichlet
+    output = pyre.inventory.facility("output", family="output_manager",
+                                     factory=OutputDirichlet)
+    output.meta['tip'] = "Output manager associated with diagnostic output."
     
 
   # PUBLIC METHODS /////////////////////////////////////////////////////
@@ -144,14 +144,14 @@
 
     BoundaryCondition.initialize(self, totalTime, numTimeSteps)
 
-    #from pylith.topology.Mesh import Mesh
-    #self.boundaryMesh = Mesh()
-    #self.boundaryMesh.initialize(self.mesh.coordsys)
-    #self.cppHandle.boundaryMesh(self.boundaryMesh.cppHandle)
+    from pylith.topology.Mesh import Mesh
+    self.boundaryMesh = Mesh()
+    self.boundaryMesh.initialize(self.mesh.coordsys)
+    self.cppHandle.boundaryMesh(self.boundaryMesh.cppHandle)
 
-    #if None != self.output:
-    #  self.output.initialize()
-    #  self.output.writeInfo()
+    if None != self.output:
+      self.output.initialize()
+      self.output.writeInfo()
 
     self._logger.eventEnd(logEvent)    
     return
@@ -168,9 +168,14 @@
     """
     Get vertex field.
     """
-    (field, fieldType) = self.cppHandle.vertexField(name,
-                                                    self.mesh.cppHandle)
-    return
+    if None == fields:
+      (field, fieldType) = self.cppHandle.vertexField(name,
+                                                      self.mesh.cppHandle)
+    else:
+      (field, fieldType) = self.cppHandle.vertexField(name,
+                                                     self.mesh.cppHandle,
+                                                     fields.cppHandle)
+    return (field, fieldType)
 
 
   # PRIVATE METHODS ////////////////////////////////////////////////////
@@ -183,6 +188,7 @@
     self.tRef = self.inventory.tRef
     self.fixedDOF = self.inventory.fixedDOF
     self.dbRate = self.inventory.dbRate
+    self.output = self.inventory.output
     return
 
 

Modified: short/3D/PyLith/trunk/pylith/bc/Neumann.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/Neumann.py	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/pylith/bc/Neumann.py	2008-02-14 21:52:10 UTC (rev 9344)
@@ -42,6 +42,7 @@
     ##
     ## \b Facilities
     ## @li \b quadrature Quadrature object for numerical integration
+    ## @li \b output Output manager associated with diagnostic output.
 
     import pyre.inventory
 
@@ -49,6 +50,11 @@
     quadrature = pyre.inventory.facility("quadrature", factory=Quadrature)
     quadrature.meta['tip'] = "Quadrature object for numerical integration."
 
+    from pylith.meshio.OutputNeumann import OutputNeumann
+    output = pyre.inventory.facility("output", family="output_manager",
+                                     factory=OutputNeumann)
+    output.meta['tip'] = "Output manager associated with diagnostic output."
+    
 
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
@@ -59,6 +65,13 @@
     BoundaryCondition.__init__(self, name)
     Integrator.__init__(self)
     self._loggingPrefix = "NeBC "
+    self.availableFields = \
+        {'vertex': \
+           {'info': [],
+            'data': []},
+         'cell': \
+           {'info': ["tractions"],
+            'data': []}}
     return
 
 
@@ -69,6 +82,7 @@
     BoundaryCondition.preinitialize(self, mesh)
     Integrator.preinitialize(self, mesh)
     self.quadrature.preinitialize()
+    self.output.preinitialize(self)
     return
 
 
@@ -85,6 +99,7 @@
               "Dimension of mesh boundary '%s': %d" % \
               (self.quadrature.cellDim,
                self.label, self.mesh.dimension()-1)    
+    self.output.verifyConfiguration()
     return
   
 
@@ -98,10 +113,38 @@
     self.cppHandle.quadrature = self.quadrature.cppHandle
     BoundaryCondition.initialize(self, totalTime, numTimeSteps)
 
+    from pylith.topology.Mesh import Mesh
+    self.boundaryMesh = Mesh()
+    self.boundaryMesh.initialize(self.mesh.coordsys)
+    self.cppHandle.boundaryMesh(self.boundaryMesh.cppHandle)
+
+    if None != self.output:
+      self.output.initialize(self.quadrature)
+      self.output.writeInfo()
+
     self._logger.eventEnd(logEvent)
     return
   
 
+  def getDataMesh(self):
+    """
+    Get mesh associated with data fields.
+    """
+    return (self.boundaryMesh, None, None)
+
+
+  def getCellField(self, name, fields=None):
+    """
+    Get vertex field.
+    """
+    if None == fields:
+      (field, fieldType) = self.cppHandle.cellField(name, self.mesh.cppHandle)
+    else:
+      (field, fieldType) = self.cppHandle.cellField(name, self.mesh.cppHandle,
+                                                    fields.cppHandle)
+    return (field, fieldType)
+
+
   # PRIVATE METHODS ////////////////////////////////////////////////////
 
   def _configure(self):
@@ -110,6 +153,7 @@
     """
     BoundaryCondition._configure(self)
     self.quadrature = self.inventory.quadrature
+    self.output = self.inventory.output
     return
 
 

Added: short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py	                        (rev 0)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputDirichlet.py	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pyre/meshio/OutputDirichlet.py
+##
+## @brief Python object for managing output of finite-element
+## information for Dirichlet boundary conditions.
+##
+## Factory: output_manager
+
+from OutputManager import OutputManager
+
+# OutputDirichlet class
+class OutputDirichlet(OutputManager):
+  """
+  Python object for managing output of finite-element information for
+  Dirichlet boundary conditions.
+
+  Factory: output_manager
+  """
+
+  # INVENTORY //////////////////////////////////////////////////////////
+
+  class Inventory(OutputManager.Inventory):
+    """
+    Python object for managing OutputDirichlet facilities and properties.
+    """
+
+    ## @class Inventory
+    ## Python object for managing OutputDirichlet facilities and properties.
+    ##
+    ## \b Properties
+    ## @li \b vertex_info_fields Names of vertex info fields to output.
+    ##
+    ## \b Facilities
+    ## @li None
+
+    import pyre.inventory
+
+    vertexInfoFields = pyre.inventory.list("vertex_info_fields",
+                                           default=["initial",
+                                                    "rate-of-change"])
+    vertexInfoFields.meta['tip'] = "Names of vertex info fields to output."
+    
+
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="outputmanager"):
+    """
+    Constructor.
+    """
+    OutputManager.__init__(self, name)
+    return
+
+    
+  # PRIVATE METHODS ////////////////////////////////////////////////////
+
+  def _configure(self):
+    """
+    Set members based using inventory.
+    """
+    OutputManager._configure(self)
+    self.vertexInfoFields = self.inventory.vertexInfoFields
+    self.vertexDataFields = []
+    self.cellInfoFields = []
+    self.cellDataFields = []
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def output_manager():
+  """
+  Factory associated with OutputDirichlet.
+  """
+  return OutputDirichlet()
+
+
+# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/OutputMatElastic.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputMatElastic.py	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputMatElastic.py	2008-02-14 21:52:10 UTC (rev 9344)
@@ -13,7 +13,7 @@
 ## @file pyre/meshio/OutputMatElastic.py
 ##
 ## @brief Python object for managing output of finite-element
-## information for faults with kinematic ruptures.
+## information for material state variables.
 ##
 ## Factory: output_manager
 
@@ -23,7 +23,7 @@
 class OutputMatElastic(OutputManager):
   """
   Python object for managing output of finite-element information for
-  faults with kinematic ruptures.
+  material state variables.
 
   Factory: output_manager
   """

Added: short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py	                        (rev 0)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputNeumann.py	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pyre/meshio/OutputNeumann.py
+##
+## @brief Python object for managing output of finite-element
+## information for Neumann boundary conditions.
+##
+## Factory: output_manager
+
+from OutputManager import OutputManager
+
+# OutputNeumann class
+class OutputNeumann(OutputManager):
+  """
+  Python object for managing output of finite-element information for
+  Neumann boundary conditions.
+
+  Factory: output_manager
+  """
+
+  # INVENTORY //////////////////////////////////////////////////////////
+
+  class Inventory(OutputManager.Inventory):
+    """
+    Python object for managing OutputNeumann facilities and properties.
+    """
+
+    ## @class Inventory
+    ## Python object for managing OutputNeumann facilities and properties.
+    ##
+    ## \b Properties
+    ## @li \b cell_info_fields Names of cell info fields to output.
+    ##
+    ## \b Facilities
+    ## @li None
+
+    import pyre.inventory
+
+    cellInfoFields = pyre.inventory.list("cell_info_fields",
+                                         default=["tractions"])
+    cellInfoFields.meta['tip'] = "Names of cell info fields to output."
+
+
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="outputmanager"):
+    """
+    Constructor.
+    """
+    OutputManager.__init__(self, name)
+    return
+
+    
+  # PRIVATE METHODS ////////////////////////////////////////////////////
+
+  def _configure(self):
+    """
+    Set members based using inventory.
+    """
+    OutputManager._configure(self)
+    self.vertexInfoFields = []
+    self.vertexDataFields = []
+    self.cellInfoFields = self.inventory.cellInfoFields
+    self.cellDataFields = []
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def output_manager():
+  """
+  Factory associated with OutputNeumann.
+  """
+  return OutputNeumann()
+
+
+# End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/__init__.py	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/pylith/meshio/__init__.py	2008-02-14 21:52:10 UTC (rev 9344)
@@ -22,10 +22,12 @@
            'MeshIOAscii',
            'MeshIOCubit',
            'MeshIOLagrit',
+           'OutputDirichlet',
            'OutputManager',
            'OutputSoln',
            'OutputFaultKin',
            'OutputMatElastic',
+           'OutputNeumann',
            'SingleOutput',
            'VertexFilter']
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am	2008-02-14 21:52:10 UTC (rev 9344)
@@ -28,6 +28,13 @@
 	TestAbsorbingDampersTet4.cc \
 	TestAbsorbingDampersHex8.cc \
 	TestBoundaryCondition.cc \
+	TestDirichletBoundary.cc \
+	TestDirichletBoundaryTri3.cc \
+	TestDirichletBoundaryQuad4.cc \
+	TestDirichletBoundaryTet4.cc \
+	TestDirichletBoundaryHex8.cc \
+	TestDirichletBoundaryMulti.cc \
+	TestDirichletBoundaryMultiTri3.cc \
 	TestDirichletPoints.cc \
 	TestDirichletPointsLine2.cc \
 	TestDirichletPointsLine2b.cc \
@@ -53,6 +60,13 @@
 	TestAbsorbingDampersTet4.hh \
 	TestAbsorbingDampersHex8.hh \
 	TestBoundaryCondition.hh \
+	TestDirichletBoundary.hh \
+	TestDirichletBoundaryTri3.hh \
+	TestDirichletBoundaryQuad4.hh \
+	TestDirichletBoundaryTet4.hh \
+	TestDirichletBoundaryHex8.hh \
+	TestDirichletBoundaryMulti.hh \
+	TestDirichletBoundaryMultiTri3.hh \
 	TestDirichletPoints.hh \
 	TestDirichletPointsLine2.hh \
 	TestDirichletPointsLine2b.hh \
@@ -77,15 +91,15 @@
 	data/AbsorbingDampersDataQuad4.cc \
 	data/AbsorbingDampersDataTet4.cc \
 	data/AbsorbingDampersDataHex8.cc \
-	data/DirichletPointsData.cc \
-	data/DirichletPointsDataLine2.cc \
-	data/DirichletPointsDataLine2b.cc \
-	data/DirichletPointsDataTri3.cc \
-	data/DirichletPointsDataQuad4.cc \
-	data/DirichletPointsDataTet4.cc \
-	data/DirichletPointsDataHex8.cc \
-	data/DirichletPointsDataMulti.cc \
-	data/DirichletPointsDataMultiTri3.cc \
+	data/DirichletData.cc \
+	data/DirichletDataLine2.cc \
+	data/DirichletDataLine2b.cc \
+	data/DirichletDataTri3.cc \
+	data/DirichletDataQuad4.cc \
+	data/DirichletDataTet4.cc \
+	data/DirichletDataHex8.cc \
+	data/DirichletDataMulti.cc \
+	data/DirichletDataMultiTri3.cc \
 	data/NeumannData.cc \
 	data/NeumannDataLine2.cc \
 	data/NeumannDataTri3.cc \
@@ -100,15 +114,15 @@
 	data/AbsorbingDampersDataQuad4.hh \
 	data/AbsorbingDampersDataTet4.hh \
 	data/AbsorbingDampersDataHex8.hh \
-	data/DirichletPointsData.hh \
-	data/DirichletPointsDataLine2.hh \
-	data/DirichletPointsDataLine2b.hh \
-	data/DirichletPointsDataTri3.hh \
-	data/DirichletPointsDataQuad4.hh \
-	data/DirichletPointsDataTet4.hh \
-	data/DirichletPointsDataHex8.hh \
-	data/DirichletPointsDataMulti.hh \
-	data/DirichletPointsDataMultiTri3.hh \
+	data/DirichletData.hh \
+	data/DirichletDataLine2.hh \
+	data/DirichletDataLine2b.hh \
+	data/DirichletDataTri3.hh \
+	data/DirichletDataQuad4.hh \
+	data/DirichletDataTet4.hh \
+	data/DirichletDataHex8.hh \
+	data/DirichletDataMulti.hh \
+	data/DirichletDataMultiTri3.hh \
 	data/NeumannData.hh \
 	data/NeumannDataLine2.hh \
 	data/NeumannDataTri3.hh \

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,327 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestDirichletBoundary.hh" // Implementation of class methods
+
+#include "pylith/bc/DirichletBoundary.hh" // USES DirichletBoundary
+
+#include "data/DirichletData.hh" // USES DirichletData
+#include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
+#include "pylith/utils/sievetypes.hh" // USES PETSc Mesh
+
+#include "spatialdata/geocoords/CSCart.hh" // USES CSCart
+#include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
+#include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/spatialdb/UniformDB.hh" // USES UniformDB
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletBoundary );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestDirichletBoundary::setUp(void)
+{ // setUp
+  _data = 0;
+} // setUp
+
+// ----------------------------------------------------------------------
+// Tear down testing data.
+void
+pylith::bc::TestDirichletBoundary::tearDown(void)
+{ // tearDown
+  delete _data; _data = 0;
+} // tearDown
+
+// ----------------------------------------------------------------------
+// Test constructor.
+void
+pylith::bc::TestDirichletBoundary::testConstructor(void)
+{ // testConstructor
+  DirichletBoundary bc;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test fixedDOF()
+void
+pylith::bc::TestDirichletBoundary::testFixedDOF(void)
+{ // testfixedDOF
+  DirichletBoundary bc;
+  
+  const size_t numDOF = 4;
+  const int dof[] = { 0, 2, 3, 5 };
+  int_array fixedDOF(dof, numDOF);
+  bc.fixedDOF(fixedDOF);
+
+  CPPUNIT_ASSERT_EQUAL(numDOF, bc._fixedDOF.size());
+  for (int i=0; i < numDOF; ++i)
+    CPPUNIT_ASSERT_EQUAL(fixedDOF[i], bc._fixedDOF[i]);
+} // testFixedDOF
+
+#include <iostream>
+// ----------------------------------------------------------------------
+// Test initialize().
+void
+pylith::bc::TestDirichletBoundary::testInitialize(void)
+{ // testInitialize
+  ALE::Obj<Mesh> mesh;
+  DirichletBoundary bc;
+  _initialize(&mesh, &bc);
+
+  CPPUNIT_ASSERT(0 != _data);
+
+  const int numCells = mesh->heightStratum(0)->size();
+
+  const int numFixedDOF = _data->numFixedDOF;
+  const size_t numBoundary = _data->numConstrainedPts;
+  // Check vertices in boundary mesh
+  const ALE::Obj<Mesh::label_sequence>& vertices = 
+    bc._boundaryMesh->depthStratum(0);
+  const Mesh::label_sequence::iterator verticesEnd = vertices->end();
+
+  const int offset = numCells;
+  if (numFixedDOF > 0) {
+    int i = 0;
+    for (Mesh::label_sequence::iterator v_iter=vertices->begin();
+	 v_iter != verticesEnd;
+	 ++v_iter, ++i) {
+      CPPUNIT_ASSERT_EQUAL(_data->constrainedPoints[i]+offset, *v_iter);
+    } // for
+    CPPUNIT_ASSERT_EQUAL(int(numBoundary), i);
+  } // if
+
+  // Check initial and rate values
+  int i = 0;
+  for (Mesh::label_sequence::iterator v_iter=vertices->begin();
+       v_iter != verticesEnd;
+       ++v_iter) {
+    CPPUNIT_ASSERT_EQUAL(2*numFixedDOF, 
+			 bc._values->getFiberDimension(*v_iter));
+
+    const real_section_type::value_type* values = 
+      bc._values->restrictPoint(*v_iter);
+
+    const double tolerance = 1.0e-06;
+    for (int iDOF=0; iDOF < numFixedDOF; ++iDOF, ++i)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->valuesInitial[i], values[iDOF],
+				   tolerance);
+    for (int iDOF=0; iDOF < numFixedDOF; ++iDOF)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->valueRate, values[numFixedDOF+iDOF],
+				   tolerance);
+  } // for
+} // testInitialize
+
+// ----------------------------------------------------------------------
+// Test setConstraintSizes().
+void
+pylith::bc::TestDirichletBoundary::testSetConstraintSizes(void)
+{ // testSetConstraintSizes
+  ALE::Obj<Mesh> mesh;
+  DirichletBoundary bc;
+  _initialize(&mesh, &bc);
+
+  const ALE::Obj<real_section_type>& field = mesh->getRealSection("field");
+  const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
+  field->setFiberDimension(vertices, _data->numDOF);
+  bc.setConstraintSizes(field, mesh);
+
+  CPPUNIT_ASSERT(0 != _data);
+
+  const int numCells = mesh->heightStratum(0)->size();
+  const int offset = numCells;
+  int iConstraint = 0;
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    if (*v_iter != _data->constrainedPoints[iConstraint] + offset) {
+      CPPUNIT_ASSERT_EQUAL(_data->numDOF, field->getFiberDimension(*v_iter));
+      CPPUNIT_ASSERT_EQUAL(0, field->getConstraintDimension(*v_iter));
+    } else {
+      CPPUNIT_ASSERT_EQUAL(_data->numDOF, field->getFiberDimension(*v_iter));
+      CPPUNIT_ASSERT_EQUAL(_data->numFixedDOF, 
+			   field->getConstraintDimension(*v_iter));
+      ++iConstraint;
+    } // if/else
+  } // for
+} // testSetConstraintSizes
+
+// ----------------------------------------------------------------------
+// Test setConstraints().
+void
+pylith::bc::TestDirichletBoundary::testSetConstraints(void)
+{ // testSetConstraints
+  ALE::Obj<Mesh> mesh;
+  DirichletBoundary bc;
+  _initialize(&mesh, &bc);
+
+  const ALE::Obj<real_section_type>& field = mesh->getRealSection("field");
+  const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
+  field->setFiberDimension(vertices, _data->numDOF);
+  bc.setConstraintSizes(field, mesh);
+  mesh->allocate(field);
+  bc.setConstraints(field, mesh);
+
+  CPPUNIT_ASSERT(0 != _data);
+
+  const int numCells = mesh->heightStratum(0)->size();
+  const int offset = numCells;
+  int iConstraint = 0;
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    const int* fixedDOF = field->getConstraintDof(*v_iter);
+    if (*v_iter != _data->constrainedPoints[iConstraint] + offset) {
+      CPPUNIT_ASSERT_EQUAL(0, field->getConstraintDimension(*v_iter));
+      //CPPUNIT_ASSERT(0 == fixedDOF);
+    } else {
+      CPPUNIT_ASSERT(0 != fixedDOF);
+      CPPUNIT_ASSERT_EQUAL(_data->numFixedDOF, 
+			   field->getConstraintDimension(*v_iter));
+      for (int iDOF=0; iDOF < _data->numFixedDOF; ++iDOF)
+	CPPUNIT_ASSERT_EQUAL(_data->fixedDOF[iDOF], fixedDOF[iDOF]);
+      ++iConstraint;
+    } // if/else
+  } // for
+} // testSetConstraints
+
+// ----------------------------------------------------------------------
+// Test setField().
+void
+pylith::bc::TestDirichletBoundary::testSetField(void)
+{ // testSetField
+  ALE::Obj<Mesh> mesh;
+  DirichletBoundary bc;
+  _initialize(&mesh, &bc);
+
+  const ALE::Obj<real_section_type>& field = mesh->getRealSection("field");
+  const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
+  field->setFiberDimension(vertices, _data->numDOF);
+  bc.setConstraintSizes(field, mesh);
+  mesh->allocate(field);
+  bc.setConstraints(field, mesh);
+
+  CPPUNIT_ASSERT(0 != _data);
+  const double tolerance = 1.0e-06;
+
+  // All values should be zero.
+  field->zero();
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    const int fiberDim = field->getFiberDimension(*v_iter);
+    const real_section_type::value_type* values = 
+      mesh->restrict(field, *v_iter);
+    for (int i=0; i < fiberDim; ++i)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0, values[i], tolerance);
+  } // for
+
+  // Only unconstrained values should be zero.
+  const double t = 1.0;
+  bc.setField(t, field, mesh);
+
+  // Create list of unconstrained DOF at constrained DOF
+  const int numFreeDOF = _data->numDOF - _data->numFixedDOF;
+  int_array freeDOF(numFreeDOF);
+  int index = 0;
+  for (int iDOF=0; iDOF < _data->numDOF; ++iDOF) {
+    bool free = true;
+    for (int iFixed=0; iFixed < _data->numFixedDOF; ++iFixed)
+      if (iDOF == _data->fixedDOF[iFixed])
+	free = false;
+    if (free)
+      freeDOF[index] = iDOF;
+  } // for
+
+  const int numCells = mesh->heightStratum(0)->size();
+  const int offset = numCells;
+  const int numFixedDOF = _data->numFixedDOF;
+  int iConstraint = 0;
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    const int fiberDim = field->getFiberDimension(*v_iter);
+    const real_section_type::value_type* values = 
+      mesh->restrict(field, *v_iter);
+
+    if (*v_iter != _data->constrainedPoints[iConstraint] + offset) {
+      // unconstrained point
+      for (int i=0; i < fiberDim; ++i)
+	CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0, values[i], tolerance);
+    } else {
+      // constrained point
+
+      // check unconstrained DOF
+      for (int iDOF=0; iDOF < numFreeDOF; ++iDOF)
+	CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0, values[freeDOF[iDOF]], tolerance);
+
+      // check constrained DOF
+      for (int iDOF=0; iDOF < numFixedDOF; ++iDOF) {
+	const int index = iConstraint * numFixedDOF + iDOF;
+	const double valueE = (t > _data->tRef) ?
+	  _data->valuesInitial[index] + (t-_data->tRef)*_data->valueRate :
+	  _data->valuesInitial[index];
+	CPPUNIT_ASSERT_DOUBLES_EQUAL(valueE, values[_data->fixedDOF[iDOF]],
+				     tolerance);
+      } // for
+      ++iConstraint;
+    } // if/else
+  } // for
+} // testSetField
+
+// ----------------------------------------------------------------------
+void
+pylith::bc::TestDirichletBoundary::_initialize(ALE::Obj<Mesh>* mesh,
+				       DirichletBoundary* const bc) const
+{ // _initialize
+  CPPUNIT_ASSERT(0 != _data);
+  CPPUNIT_ASSERT(0 != bc);
+
+  meshio::MeshIOAscii iohandler;
+  iohandler.filename(_data->meshFilename);
+  iohandler.read(mesh);
+  CPPUNIT_ASSERT(!mesh->isNull());
+  (*mesh)->getFactory()->clear();
+
+  spatialdata::geocoords::CSCart cs;
+  cs.setSpaceDim((*mesh)->getDimension());
+  cs.initialize();
+
+  spatialdata::spatialdb::SimpleDB db("TestDirichletBoundary initial");
+  spatialdata::spatialdb::SimpleIOAscii dbIO;
+  dbIO.filename(_data->dbFilename);
+  db.ioHandler(&dbIO);
+  db.queryType(spatialdata::spatialdb::SimpleDB::NEAREST);
+
+  spatialdata::spatialdb::UniformDB dbRate("TestDirichletBoundary rate");
+  const char* names[] = { "dof-0", "dof-1", "dof-2" };
+  const double values[] = { _data->valueRate,
+			    _data->valueRate,
+			    _data->valueRate };
+  const int numValues = 3;
+  dbRate.setData(names, values, numValues);
+
+  int_array fixedDOF(_data->fixedDOF, _data->numFixedDOF);
+  const double upDirVals[] = { 0.0, 0.0, 1.0 };
+  double_array upDir(upDirVals, 3);
+
+  bc->label(_data->label);
+  bc->db(&db);
+  bc->dbRate(&dbRate);
+  bc->referenceTime(_data->tRef);
+  bc->fixedDOF(fixedDOF);
+  bc->initialize(*mesh, &cs, upDir);
+} // _initialize
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundary.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,96 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestDirichletBoundary.hh
+ *
+ * @brief C++ TestDirichletBoundary object.
+ *
+ * C++ unit testing for DirichletBoundary.
+ */
+
+#if !defined(pylith_bc_testdirichletboundary_hh)
+#define pylith_bc_testdirichletboundary_hh
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "pylith/utils/sievefwd.hh" // USES PETSc Mesh
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestDirichletBoundary;
+
+    class DirichletBoundary;
+    class DirichletData;
+  } // bc
+} // pylith
+
+/// C++ unit testing for DirichletBoundary.
+class pylith::bc::TestDirichletBoundary : public CppUnit::TestFixture
+{ // class TestDirichletBoundary
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestDirichletBoundary );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testFixedDOF );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+  /// Tear down testing data.
+  void tearDown(void);
+
+  /// Test constructor.
+  void testConstructor(void);
+
+  /// Test fixedDOF().
+  void testFixedDOF(void);
+
+  /// Test initialize().
+  void testInitialize(void);
+
+  /// Test setConstraintSizes().
+  void testSetConstraintSizes(void);
+
+  /// Test setConstraints().
+  void testSetConstraints(void);
+
+  /// Test setField().
+  void testSetField(void);
+
+  // PROTECTED MEMBERS //////////////////////////////////////////////////
+protected :
+
+  DirichletData* _data; ///< Data for testing
+
+  // PRIVATE METHODS ////////////////////////////////////////////////////
+private :
+
+  /** Initialize DirichletBoundary boundary condition.
+   *
+   * @param mesh PETSc mesh to initialize
+   * @param bc DirichletBoundary boundary condition to initialize.
+   */
+  void _initialize(ALE::Obj<ALE::Mesh>* mesh,
+		   DirichletBoundary* const bc) const;
+
+}; // class TestDirichletBoundary
+
+#endif // pylith_bc_dirichletboundary_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryHex8.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryHex8.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,31 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestDirichletBoundaryHex8.hh" // Implementation of class methods
+
+#include "data/DirichletDataHex8.hh" // USES DirichletDataHex8
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletBoundaryHex8 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestDirichletBoundaryHex8::setUp(void)
+{ // setUp
+  _data = new DirichletDataHex8();
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryHex8.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryHex8.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestDirichletBoundaryHex8.hh
+ *
+ * @brief C++ TestDirichletBoundary object.
+ *
+ * C++ unit testing for DirichletBoundary for mesh with 1-D line cells.
+ */
+
+#if !defined(pylith_bc_testdirichletboundaryhex8_hh)
+#define pylith_bc_testdirichletboundaryhex8_hh
+
+#include "TestDirichletBoundary.hh" // ISA TestDirichletBoundary
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestDirichletBoundaryHex8;
+  } // bc
+} // pylith
+
+/// C++ unit testing for DirichletBoundary for mesh with 3-D hex cells.
+class pylith::bc::TestDirichletBoundaryHex8 : public TestDirichletBoundary
+{ // class TestDirichletBoundary
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUB_SUITE( TestDirichletBoundaryHex8, TestDirichletBoundary );
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testSetConstraintSizes );
+  CPPUNIT_TEST( testSetConstraints );
+  CPPUNIT_TEST( testSetField );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestDirichletBoundaryHex8
+
+#endif // pylith_bc_dirichletboundaryhex8_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMulti.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMulti.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMulti.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,221 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestDirichletBoundaryMulti.hh" // Implementation of class methods
+
+#include "pylith/bc/DirichletBoundary.hh" // USES DirichletBoundary
+
+#include "data/DirichletDataMulti.hh" // USES DirichletData
+#include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
+#include "pylith/utils/sievetypes.hh" // USES PETSc Mesh
+
+#include "spatialdata/geocoords/CSCart.hh" // USES CSCart
+#include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
+#include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/spatialdb/UniformDB.hh" // USES UniformDB
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestDirichletBoundaryMulti::setUp(void)
+{ // setUp
+  _data = 0;
+} // setUp
+
+// ----------------------------------------------------------------------
+// Tear down testing data.
+void
+pylith::bc::TestDirichletBoundaryMulti::tearDown(void)
+{ // tearDown
+  delete _data; _data = 0;
+} // tearDown
+
+// ----------------------------------------------------------------------
+// Test setConstraintSizes().
+void
+pylith::bc::TestDirichletBoundaryMulti::testSetConstraintSizes(void)
+{ // testSetConstraintSizes
+  ALE::Obj<Mesh> mesh;
+  DirichletBoundary bcA;
+  DirichletBoundary bcB;
+  _initialize(&mesh, &bcA, &bcB);
+
+  const ALE::Obj<real_section_type>& field = mesh->getRealSection("field");
+  const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
+  field->setFiberDimension(vertices, _data->numDOF);
+  bcA.setConstraintSizes(field, mesh);
+  bcB.setConstraintSizes(field, mesh);
+
+  CPPUNIT_ASSERT(0 != _data);
+
+  const int numCells = mesh->heightStratum(0)->size();
+  const int offset = numCells;
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    CPPUNIT_ASSERT_EQUAL(_data->numDOF, field->getFiberDimension(*v_iter));
+    
+    CPPUNIT_ASSERT_EQUAL(_data->constraintSizes[*v_iter-offset],
+			 field->getConstraintDimension(*v_iter));
+  } // for
+} // testSetConstraintSizes
+
+// ----------------------------------------------------------------------
+// Test setConstraints().
+void
+pylith::bc::TestDirichletBoundaryMulti::testSetConstraints(void)
+{ // testSetConstraints
+  ALE::Obj<Mesh> mesh;
+  DirichletBoundary bcA;
+  DirichletBoundary bcB;
+  _initialize(&mesh, &bcA, &bcB);
+
+  const ALE::Obj<real_section_type>& field = mesh->getRealSection("field");
+  const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
+  field->setFiberDimension(vertices, _data->numDOF);
+  bcA.setConstraintSizes(field, mesh);
+  bcB.setConstraintSizes(field, mesh);
+  mesh->allocate(field);
+  bcA.setConstraints(field, mesh);
+  bcB.setConstraints(field, mesh);
+
+  CPPUNIT_ASSERT(0 != _data);
+
+  const int numCells = mesh->heightStratum(0)->size();
+  const int offset = numCells;
+  int index = 0;
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    const int numConstrainedDOF = _data->constraintSizes[*v_iter-offset];
+    if (numConstrainedDOF > 0) {
+      const int* fixedDOF = field->getConstraintDof(*v_iter);
+      for (int iDOF=0; iDOF < numConstrainedDOF; ++iDOF)
+	CPPUNIT_ASSERT_EQUAL(_data->constrainedDOF[index++], fixedDOF[iDOF]);
+    } // if
+  } // for
+} // testSetConstraints
+
+// ----------------------------------------------------------------------
+// Test setField().
+void
+pylith::bc::TestDirichletBoundaryMulti::testSetField(void)
+{ // testSetField
+  ALE::Obj<Mesh> mesh;
+  DirichletBoundary bcA;
+  DirichletBoundary bcB;
+  _initialize(&mesh, &bcA, &bcB);
+
+  const ALE::Obj<real_section_type>& field = mesh->getRealSection("field");
+  const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
+  field->setFiberDimension(vertices, _data->numDOF);
+  bcA.setConstraintSizes(field, mesh);
+  bcB.setConstraintSizes(field, mesh);
+  mesh->allocate(field);
+  bcA.setConstraints(field, mesh);
+  bcB.setConstraints(field, mesh);
+
+  CPPUNIT_ASSERT(0 != _data);
+  const double tolerance = 1.0e-06;
+
+  // All values should be zero.
+  field->zero();
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    const int fiberDim = field->getFiberDimension(*v_iter);
+    const real_section_type::value_type* values = 
+      mesh->restrict(field, *v_iter);
+    for (int i=0; i < fiberDim; ++i)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0, values[i], tolerance);
+  } // for
+
+  // Only unconstrained values should be zero.
+  // Expected values set in _data->field
+  const double t = 10.0;
+  bcA.setField(t, field, mesh);
+  bcB.setField(t, field, mesh);
+
+  int i = 0;
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    const int fiberDim = field->getFiberDimension(*v_iter);
+    const real_section_type::value_type* values = 
+      mesh->restrict(field, *v_iter);
+    for (int iDOF=0; iDOF < fiberDim; ++iDOF)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->field[i++], values[iDOF], tolerance);
+  } // for
+} // testSetField
+
+// ----------------------------------------------------------------------
+void
+pylith::bc::TestDirichletBoundaryMulti::_initialize(ALE::Obj<Mesh>* mesh,
+					    DirichletBoundary* const bcA,
+					    DirichletBoundary* const bcB) const
+{ // _initialize
+  CPPUNIT_ASSERT(0 != _data);
+  CPPUNIT_ASSERT(0 != bcA);
+  CPPUNIT_ASSERT(0 != bcB);
+
+  meshio::MeshIOAscii iohandler;
+  iohandler.filename(_data->meshFilename);
+  iohandler.read(mesh);
+  CPPUNIT_ASSERT(!mesh->isNull());
+
+  spatialdata::geocoords::CSCart cs;
+  cs.setSpaceDim((*mesh)->getDimension());
+  cs.initialize();
+
+  // Setup boundary condition A
+  spatialdata::spatialdb::SimpleDB db("TestDirichletBoundaryMulti initial");
+  spatialdata::spatialdb::SimpleIOAscii dbIO;
+  dbIO.filename(_data->dbFilenameA);
+  db.ioHandler(&dbIO);
+
+  spatialdata::spatialdb::SimpleDB dbRate("TestDirichletBoundaryMulti rate");
+  spatialdata::spatialdb::SimpleIOAscii dbIORate;
+  dbIORate.filename(_data->dbFilenameARate);
+  dbRate.ioHandler(&dbIORate);
+
+  int_array fixedDOFA(_data->fixedDOFA, _data->numFixedDOFA);
+  const double upDirVals[] = { 0.0, 0.0, 1.0 };
+  double_array upDir(upDirVals, 3);
+
+  bcA->label(_data->labelA);
+  bcA->db(&db);
+  bcA->dbRate(&dbRate);
+  bcA->referenceTime(_data->tRefA);
+  bcA->fixedDOF(fixedDOFA);
+  bcA->initialize(*mesh, &cs, upDir);
+
+  // Setup boundary condition B
+  dbIO.filename(_data->dbFilenameB);
+  db.ioHandler(&dbIO);
+
+  dbIORate.filename(_data->dbFilenameBRate);
+  dbRate.ioHandler(&dbIORate);
+
+  int_array fixedDOFB(_data->fixedDOFB, _data->numFixedDOFB);
+
+  bcB->label(_data->labelB);
+  bcB->db(&db);
+  bcB->dbRate(&dbRate);
+  bcB->referenceTime(_data->tRefB);
+  bcB->fixedDOF(fixedDOFB);
+  bcB->initialize(*mesh, &cs, upDir);
+} // _initialize
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMulti.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMulti.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMulti.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,83 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestDirichletBoundaryMulti.hh
+ *
+ * @brief C++ TestDirichletBoundaryMulti object.
+ *
+ * C++ unit testing for DirichletBoundaryMulti.
+ */
+
+#if !defined(pylith_bc_testdirichletboundarymulti_hh)
+#define pylith_bc_testdirichletboundarymulti_hh
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "pylith/utils/sievefwd.hh" // USES PETSc Mesh
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestDirichletBoundaryMulti;
+
+    class DirichletBoundary;
+    class DirichletDataMulti;
+  } // bc
+} // pylith
+
+/// C++ unit testing for DirichletBoundaryMulti.
+class pylith::bc::TestDirichletBoundaryMulti : public CppUnit::TestFixture
+{ // class TestDirichletBoundaryMulti
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+  /// Tear down testing data.
+  void tearDown(void);
+
+  /// Test setConstraintSizes().
+  void testSetConstraintSizes(void);
+
+  /// Test setConstraints().
+  void testSetConstraints(void);
+
+  /// Test setField().
+  void testSetField(void);
+
+  // PROTECTED MEMBERS //////////////////////////////////////////////////
+protected :
+
+  DirichletDataMulti* _data; ///< Data for testing
+
+  // PRIVATE METHODS ////////////////////////////////////////////////////
+private :
+
+  /** Initialize DirichletBoundaryMulti boundary condition.
+   *
+   * @param mesh PETSc mesh to initialize
+   * @param bcA DirichletBoundary boundary condition A to initialize.
+   * @param bcB DirichletBoundary boundary condition B to initialize.
+   */
+  void _initialize(ALE::Obj<ALE::Mesh>* mesh,
+		   DirichletBoundary* const bcA,
+		   DirichletBoundary* const bcB) const;
+
+}; // class TestDirichletBoundaryMulti
+
+#endif // pylith_bc_dirichletboundarymulti_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMultiTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMultiTri3.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMultiTri3.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,31 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestDirichletBoundaryMultiTri3.hh" // Implementation of class methods
+
+#include "data/DirichletDataMultiTri3.hh" // USES DirichletDataMultiTri3
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletBoundaryMultiTri3 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestDirichletBoundaryMultiTri3::setUp(void)
+{ // setUp
+  _data = new DirichletDataMultiTri3();
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMultiTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMultiTri3.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryMultiTri3.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestDirichletBoundaryMultiTri3.hh
+ *
+ * @brief C++ TestDirichletBoundary object.
+ *
+ * C++ unit testing for DirichletBoundary for mesh with 1-D line cells.
+ */
+
+#if !defined(pylith_bc_testdirichletboundarymultitri3_hh)
+#define pylith_bc_testdirichletboundarymultitri3_hh
+
+#include "TestDirichletBoundaryMulti.hh" // ISA TestDirichletBoundary
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestDirichletBoundaryMultiTri3;
+  } // bc
+} // pylith
+
+/// C++ unit testing for DirichletBoundary for mesh with 2-D tri cells.
+class pylith::bc::TestDirichletBoundaryMultiTri3 : public TestDirichletBoundaryMulti
+{ // class TestDirichletBoundary
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestDirichletBoundaryMultiTri3 );
+  CPPUNIT_TEST( testSetConstraintSizes );
+  CPPUNIT_TEST( testSetConstraints );
+  CPPUNIT_TEST( testSetField );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestDirichletBoundaryMultiTri3
+
+#endif // pylith_bc_dirichletboundarymultitri3_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryQuad4.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryQuad4.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,31 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestDirichletBoundaryQuad4.hh" // Implementation of class methods
+
+#include "data/DirichletDataQuad4.hh" // USES DirichletDataQuad4
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletBoundaryQuad4 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestDirichletBoundaryQuad4::setUp(void)
+{ // setUp
+  _data = new DirichletDataQuad4();
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryQuad4.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryQuad4.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestDirichletBoundaryQuad4.hh
+ *
+ * @brief C++ TestDirichletBoundary object.
+ *
+ * C++ unit testing for DirichletBoundary for mesh with 1-D line cells.
+ */
+
+#if !defined(pylith_bc_testdirichletboundaryquad4_hh)
+#define pylith_bc_testdirichletboundaryquad4_hh
+
+#include "TestDirichletBoundary.hh" // ISA TestDirichletBoundary
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestDirichletBoundaryQuad4;
+  } // bc
+} // pylith
+
+/// C++ unit testing for DirichletBoundary for mesh with 2-D quad cells.
+class pylith::bc::TestDirichletBoundaryQuad4 : public TestDirichletBoundary
+{ // class TestDirichletBoundary
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUB_SUITE( TestDirichletBoundaryQuad4, TestDirichletBoundary );
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testSetConstraintSizes );
+  CPPUNIT_TEST( testSetConstraints );
+  CPPUNIT_TEST( testSetField );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestDirichletBoundaryQuad4
+
+#endif // pylith_bc_dirichletboundaryquad4_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTet4.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTet4.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,31 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestDirichletBoundaryTet4.hh" // Implementation of class methods
+
+#include "data/DirichletDataTet4.hh" // USES DirichletDataTet4
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletBoundaryTet4 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestDirichletBoundaryTet4::setUp(void)
+{ // setUp
+  _data = new DirichletDataTet4();
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTet4.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTet4.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestDirichletBoundaryTet4.hh
+ *
+ * @brief C++ TestDirichletBoundary object.
+ *
+ * C++ unit testing for DirichletBoundary for mesh with 1-D line cells.
+ */
+
+#if !defined(pylith_bc_testdirichletboundarytet4_hh)
+#define pylith_bc_testdirichletboundaryet4_hh
+
+#include "TestDirichletBoundary.hh" // ISA TestDirichletBoundary
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestDirichletBoundaryTet4;
+  } // bc
+} // pylith
+
+/// C++ unit testing for DirichletBoundary for mesh with 3-D tet cells.
+class pylith::bc::TestDirichletBoundaryTet4 : public TestDirichletBoundary
+{ // class TestDirichletBoundary
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUB_SUITE( TestDirichletBoundaryTet4, TestDirichletBoundary );
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testSetConstraintSizes );
+  CPPUNIT_TEST( testSetConstraints );
+  CPPUNIT_TEST( testSetField );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestDirichletBoundaryTet4
+
+#endif // pylith_bc_dirichletboundarytet4_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTri3.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTri3.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,31 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestDirichletBoundaryTri3.hh" // Implementation of class methods
+
+#include "data/DirichletDataTri3.hh" // USES DirichletDataTri3
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletBoundaryTri3 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestDirichletBoundaryTri3::setUp(void)
+{ // setUp
+  _data = new DirichletDataTri3();
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTri3.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletBoundaryTri3.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestDirichletBoundaryTri3.hh
+ *
+ * @brief C++ TestDirichletBoundary object.
+ *
+ * C++ unit testing for DirichletBoundary for mesh with 1-D line cells.
+ */
+
+#if !defined(pylith_bc_testdirichletboundarytri3_hh)
+#define pylith_bc_testdirichletboundarytri3_hh
+
+#include "TestDirichletBoundary.hh" // ISA TestDirichletBoundary
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestDirichletBoundaryTri3;
+  } // bc
+} // pylith
+
+/// C++ unit testing for DirichletBoundary for mesh with 2-D tri cells.
+class pylith::bc::TestDirichletBoundaryTri3 : public TestDirichletBoundary
+{ // class TestDirichletBoundary
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUB_SUITE( TestDirichletBoundaryTri3, TestDirichletBoundary );
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testSetConstraintSizes );
+  CPPUNIT_TEST( testSetConstraints );
+  CPPUNIT_TEST( testSetField );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestDirichletBoundaryTri3
+
+#endif // pylith_bc_dirichletboundarytri3_hh
+
+
+// End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPoints.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPoints.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPoints.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -16,7 +16,7 @@
 
 #include "pylith/bc/DirichletPoints.hh" // USES DirichletPoints
 
-#include "data/DirichletPointsData.hh" // USES DirichletPointsData
+#include "data/DirichletData.hh" // USES DirichletData
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
 #include "pylith/utils/sievetypes.hh" // USES PETSc Mesh
 
@@ -100,6 +100,11 @@
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->valuesInitial[i], bc._valuesInitial[i], 
 				 tolerance);
+
+  CPPUNIT_ASSERT_EQUAL(size, bc._valuesRate.size());
+  for (int i=0; i < size; ++i)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->valueRate, bc._valuesRate[i], 
+				 tolerance);
 } // testInitialize
 
 // ----------------------------------------------------------------------
@@ -281,6 +286,7 @@
   spatialdata::spatialdb::SimpleIOAscii dbIO;
   dbIO.filename(_data->dbFilename);
   db.ioHandler(&dbIO);
+  db.queryType(spatialdata::spatialdb::SimpleDB::NEAREST);
 
   spatialdata::spatialdb::UniformDB dbRate("TestDirichletPoints rate");
   const char* names[] = { "dof-0", "dof-1", "dof-2" };

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPoints.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPoints.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPoints.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -31,7 +31,7 @@
     class TestDirichletPoints;
 
     class DirichletPoints;
-    class DirichletPointsData;
+    class DirichletData;
   } // bc
 } // pylith
 
@@ -75,7 +75,7 @@
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
-  DirichletPointsData* _data; ///< Data for testing
+  DirichletData* _data; ///< Data for testing
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsHex8.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsHex8.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -14,7 +14,7 @@
 
 #include "TestDirichletPointsHex8.hh" // Implementation of class methods
 
-#include "data/DirichletPointsDataHex8.hh" // USES DirichletPointsDataHex8
+#include "data/DirichletDataHex8.hh" // USES DirichletDataHex8
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletPointsHex8 );
@@ -24,7 +24,7 @@
 void
 pylith::bc::TestDirichletPointsHex8::setUp(void)
 { // setUp
-  _data = new DirichletPointsDataHex8();
+  _data = new DirichletDataHex8();
 } // setUp
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsLine2.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsLine2.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -14,7 +14,7 @@
 
 #include "TestDirichletPointsLine2.hh" // Implementation of class methods
 
-#include "data/DirichletPointsDataLine2.hh" // USES DirichletPointsDataLine2
+#include "data/DirichletDataLine2.hh" // USES DirichletDataLine2
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletPointsLine2 );
@@ -24,7 +24,7 @@
 void
 pylith::bc::TestDirichletPointsLine2::setUp(void)
 { // setUp
-  _data = new DirichletPointsDataLine2();
+  _data = new DirichletDataLine2();
 } // setUp
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsLine2b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsLine2b.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsLine2b.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -14,7 +14,7 @@
 
 #include "TestDirichletPointsLine2b.hh" // Implementation of class methods
 
-#include "data/DirichletPointsDataLine2b.hh" // USES DirichletPointsDataLine2b
+#include "data/DirichletDataLine2b.hh" // USES DirichletDataLine2b
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletPointsLine2b );
@@ -24,7 +24,7 @@
 void
 pylith::bc::TestDirichletPointsLine2b::setUp(void)
 { // setUp
-  _data = new DirichletPointsDataLine2b();
+  _data = new DirichletDataLine2b();
 } // setUp
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMulti.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMulti.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMulti.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -16,7 +16,7 @@
 
 #include "pylith/bc/DirichletPoints.hh" // USES DirichletPoints
 
-#include "data/DirichletPointsDataMulti.hh" // USES DirichletPointsData
+#include "data/DirichletDataMulti.hh" // USES DirichletData
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
 #include "pylith/utils/sievetypes.hh" // USES PETSc Mesh
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMulti.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMulti.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMulti.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -31,7 +31,7 @@
     class TestDirichletPointsMulti;
 
     class DirichletPoints;
-    class DirichletPointsDataMulti;
+    class DirichletDataMulti;
   } // bc
 } // pylith
 
@@ -60,7 +60,7 @@
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
-  DirichletPointsDataMulti* _data; ///< Data for testing
+  DirichletDataMulti* _data; ///< Data for testing
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
 private :

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMultiTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMultiTri3.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsMultiTri3.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -14,7 +14,7 @@
 
 #include "TestDirichletPointsMultiTri3.hh" // Implementation of class methods
 
-#include "data/DirichletPointsDataMultiTri3.hh" // USES DirichletPointsDataMultiTri3
+#include "data/DirichletDataMultiTri3.hh" // USES DirichletDataMultiTri3
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletPointsMultiTri3 );
@@ -24,7 +24,7 @@
 void
 pylith::bc::TestDirichletPointsMultiTri3::setUp(void)
 { // setUp
-  _data = new DirichletPointsDataMultiTri3();
+  _data = new DirichletDataMultiTri3();
 } // setUp
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsQuad4.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsQuad4.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -14,7 +14,7 @@
 
 #include "TestDirichletPointsQuad4.hh" // Implementation of class methods
 
-#include "data/DirichletPointsDataQuad4.hh" // USES DirichletPointsDataQuad4
+#include "data/DirichletDataQuad4.hh" // USES DirichletDataQuad4
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletPointsQuad4 );
@@ -24,7 +24,7 @@
 void
 pylith::bc::TestDirichletPointsQuad4::setUp(void)
 { // setUp
-  _data = new DirichletPointsDataQuad4();
+  _data = new DirichletDataQuad4();
 } // setUp
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsTet4.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsTet4.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -14,7 +14,7 @@
 
 #include "TestDirichletPointsTet4.hh" // Implementation of class methods
 
-#include "data/DirichletPointsDataTet4.hh" // USES DirichletPointsDataTet4
+#include "data/DirichletDataTet4.hh" // USES DirichletDataTet4
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletPointsTet4 );
@@ -24,7 +24,7 @@
 void
 pylith::bc::TestDirichletPointsTet4::setUp(void)
 { // setUp
-  _data = new DirichletPointsDataTet4();
+  _data = new DirichletDataTet4();
 } // setUp
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsTri3.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletPointsTri3.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -14,7 +14,7 @@
 
 #include "TestDirichletPointsTri3.hh" // Implementation of class methods
 
-#include "data/DirichletPointsDataTri3.hh" // USES DirichletPointsDataTri3
+#include "data/DirichletDataTri3.hh" // USES DirichletDataTri3
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestDirichletPointsTri3 );
@@ -24,7 +24,7 @@
 void
 pylith::bc::TestDirichletPointsTri3::setUp(void)
 { // setUp
-  _data = new DirichletPointsDataTri3();
+  _data = new DirichletDataTri3();
 } // setUp
 
 

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,40 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "DirichletData.hh"
+
+// ----------------------------------------------------------------------
+// Constructor
+pylith::bc::DirichletData::DirichletData(void) :
+  tRef(0),
+  valueRate(0),
+  numDOF(0),
+  numFixedDOF(0),
+  numConstrainedPts(0),
+  id(0),
+  label(0),
+  fixedDOF(0),
+  constrainedPoints(0),
+  valuesInitial(0),
+  meshFilename(0),
+  dbFilename(0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor
+pylith::bc::DirichletData::~DirichletData(void)
+{ // destructor
+} // destructor
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletData.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,57 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_dirichletdata_hh)
+#define pylith_bc_dirichletdata_hh
+
+namespace pylith {
+  namespace bc {
+     class DirichletData;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Constructor
+  DirichletData(void);
+
+  /// Destructor
+  ~DirichletData(void);
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public:
+
+  double tRef; ///< Reference time for rate of change of values
+  double 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.
+  int numConstrainedPts; ///< Number of points constrained.
+
+  int id; ///< Boundary condition identifier
+  char* label; ///< Label for boundary condition group
+
+  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.
+
+  char* meshFilename; ///< Filename for input mesh.
+  char* dbFilename; ///< Filename of simple spatial database.
+};
+
+#endif // pylith_bc_dirichletdata_hh
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,80 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: meshHex8.txt
+ *
+ * DirichletPoints BC at vertices 0, 1, 6, 7.
+ *
+ * Fixed DOF: { 0, 2 }
+ *
+ * Initial values
+ *   0: -0.2, 0.3
+ *   1:  0.1, 0.7
+ *   6:  0.5, 0.4
+ *   7:  3.2, 6.1
+ * tref = 0.2
+ * Rate of change
+ *   +0.4
+ */
+
+#include "DirichletDataHex8.hh"
+
+const int pylith::bc::DirichletDataHex8::_id = 0;
+
+const char* pylith::bc::DirichletDataHex8::_label = "bc";
+
+const int pylith::bc::DirichletDataHex8::_numDOF = 3;
+const int pylith::bc::DirichletDataHex8::_numFixedDOF = 2;
+const int pylith::bc::DirichletDataHex8::_fixedDOF[] = { 0, 2 };
+
+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[] = {
+  -0.2, 0.3,
+   0.1, 0.7,
+   0.5, 0.4,
+   3.2, 6.1,
+};
+
+const char* pylith::bc::DirichletDataHex8::_meshFilename = 
+  "data/hex8.mesh";
+const char* pylith::bc::DirichletDataHex8::_dbFilename =
+  "data/hex8.spatialdb";
+
+pylith::bc::DirichletDataHex8::DirichletDataHex8(void)
+{ // constructor
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  tRef = _tRef;
+  valueRate = _valueRate;
+
+  numDOF = _numDOF;
+  numFixedDOF = _numFixedDOF;
+  fixedDOF = const_cast<int*>(_fixedDOF);
+
+  numConstrainedPts = _numConstrainedPts;
+  constrainedPoints = const_cast<int*>(_constrainedPoints);
+  valuesInitial = const_cast<double*>(_valuesInitial);
+
+  meshFilename = const_cast<char*>(_meshFilename);
+  dbFilename = const_cast<char*>(_dbFilename);
+} // constructor
+
+pylith::bc::DirichletDataHex8::~DirichletDataHex8(void)
+{}
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataHex8.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_dirichletdatahex8_hh)
+#define pylith_bc_dirichletdatahex8_hh
+
+#include "DirichletData.hh"
+
+namespace pylith {
+  namespace bc {
+     class DirichletDataHex8;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletDataHex8 : public DirichletData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  DirichletDataHex8(void);
+
+  /// Destructor
+  ~DirichletDataHex8(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _numDOF; ///< Number of degrees of freedom at each point.
+
+  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
+  static const int _numConstrainedPts; ///< Number of points constrained.
+
+  static const int _id; ///< Boundary condition identifier
+  static const char* _label; /// Label for boundary condition group
+
+  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 char* _meshFilename; ///< Filename of input mesh.
+  static const char* _dbFilename; ///< Filename of simple spatial database.
+};
+
+#endif // pylith_bc_dirichletdatahex8_hh
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: meshLine2.txt
+ *
+ * DirichletPoints BC at vertices 0 and 2.
+ *
+ * Fixed DOF: { 0 }
+ *
+ * Values
+ *   0: 1.1 [constrained]
+ *   1: 0.8 [solution]
+ *   2: 2.2 [constrained]
+ * tref = 0.6
+ * Rate of change
+ *   +0.3
+ */
+
+#include "DirichletDataLine2.hh"
+
+const int pylith::bc::DirichletDataLine2::_id = 0;
+
+const char* pylith::bc::DirichletDataLine2::_label = "bc0";
+
+const int pylith::bc::DirichletDataLine2::_numDOF = 1;
+const int pylith::bc::DirichletDataLine2::_numFixedDOF = 1;
+const int pylith::bc::DirichletDataLine2::_fixedDOF[] = { 0 };
+
+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[] =
+  { 1.1, 2.2 };
+
+const char* pylith::bc::DirichletDataLine2::_meshFilename = 
+  "data/line2.mesh";
+const char* pylith::bc::DirichletDataLine2::_dbFilename =
+  "data/line2.spatialdb";
+
+pylith::bc::DirichletDataLine2::DirichletDataLine2(void)
+{ // constructor
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  numDOF = _numDOF;
+  numFixedDOF = _numFixedDOF;
+  fixedDOF = const_cast<int*>(_fixedDOF);
+
+  numConstrainedPts = _numConstrainedPts;
+  constrainedPoints = const_cast<int*>(_constrainedPoints);
+
+  tRef = _tRef;
+  valueRate = _valueRate;
+  valuesInitial = const_cast<double*>(_valuesInitial);
+
+  meshFilename = const_cast<char*>(_meshFilename);
+  dbFilename = const_cast<char*>(_dbFilename);
+} // constructor
+
+pylith::bc::DirichletDataLine2::~DirichletDataLine2(void)
+{}
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_dirichletdataline2_hh)
+#define pylith_bc_dirichletdataline2_hh
+
+#include "DirichletData.hh"
+
+namespace pylith {
+  namespace bc {
+     class DirichletDataLine2;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletDataLine2 : public DirichletData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  DirichletDataLine2(void);
+
+  /// Destructor
+  ~DirichletDataLine2(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _numDOF; ///< Number of degrees of freedom at each point.
+
+  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
+  static const int _numConstrainedPts; ///< Number of points constrained.
+
+  static const int _id; ///< Boundary condition identifier
+  static const char* _label; /// Label for boundary condition group
+
+  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 char* _meshFilename; ///< Filename of input mesh.
+  static const char* _dbFilename; ///< Filename of simple spatial database.
+};
+
+#endif // pylith_bc_dirichletdataline2_hh
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,66 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: meshLine2.txt
+ *
+ * DirichletPoints BC at vertices 0 and 2.
+ *
+ * Fixed DOF: None
+ */
+
+#include "DirichletDataLine2b.hh"
+
+const int pylith::bc::DirichletDataLine2b::_id = 0;
+
+const char* pylith::bc::DirichletDataLine2b::_label = "bc0";
+
+const int pylith::bc::DirichletDataLine2b::_numDOF = 1;
+const int pylith::bc::DirichletDataLine2b::_numFixedDOF = 0;
+const int pylith::bc::DirichletDataLine2b::_fixedDOF[] = {};
+
+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 char* pylith::bc::DirichletDataLine2b::_meshFilename = 
+  "data/line2.mesh";
+const char* pylith::bc::DirichletDataLine2b::_dbFilename =
+  "data/line2.spatialdb";
+
+pylith::bc::DirichletDataLine2b::DirichletDataLine2b(void)
+{ // constructor
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  numDOF = _numDOF;
+  numFixedDOF = _numFixedDOF;
+  fixedDOF = const_cast<int*>(_fixedDOF);
+
+  numConstrainedPts = _numConstrainedPts;
+  constrainedPoints = const_cast<int*>(_constrainedPoints);
+
+  tRef = _tRef;
+  valueRate = _valueRate;
+  valuesInitial = const_cast<double*>(_valuesInitial);
+
+  meshFilename = const_cast<char*>(_meshFilename);
+  dbFilename = const_cast<char*>(_dbFilename);
+} // constructor
+
+pylith::bc::DirichletDataLine2b::~DirichletDataLine2b(void)
+{}
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataLine2b.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_dirichletdataline2b_hh)
+#define pylith_bc_dirichletdataline2b_hh
+
+#include "DirichletData.hh"
+
+namespace pylith {
+  namespace bc {
+     class DirichletDataLine2b;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletDataLine2b : public DirichletData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  DirichletDataLine2b(void);
+
+  /// Destructor
+  ~DirichletDataLine2b(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _numDOF; ///< Number of degrees of freedom at each point.
+
+  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
+  static const int _numConstrainedPts; ///< Number of points constrained.
+
+  static const int _id; ///< Boundary condition identifier
+  static const char* _label; /// Label for boundary condition group
+
+  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 char* _meshFilename; ///< Filename of input mesh.
+  static const char* _dbFilename; ///< Filename of simple spatial database.
+};
+
+#endif // pylith_bc_dirichletdataline2b_hh
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,51 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "DirichletDataMulti.hh"
+
+// ----------------------------------------------------------------------
+// Constructor
+pylith::bc::DirichletDataMulti::DirichletDataMulti(void) :
+  numDOF(0),
+  numFixedDOFA(0),
+  numConstrainedPtsA(0),
+  idA(0),
+  labelA(0),
+  fixedDOFA(0),
+  constrainedPointsA(0),
+  dbFilenameA(0),
+  dbFilenameARate(0),
+  tRefA(0),
+  numFixedDOFB(0),
+  numConstrainedPtsB(0),
+  idB(0),
+  labelB(0),
+  fixedDOFB(0),
+  constrainedPointsB(0),
+  dbFilenameB(0),
+  dbFilenameBRate(0),
+  tRefB(0),
+  field(0),
+  constraintSizes(0),
+  constrainedDOF(0),
+  meshFilename(0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor
+pylith::bc::DirichletDataMulti::~DirichletDataMulti(void)
+{ // destructor
+} // destructor
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMulti.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_dirichletdatamulti_hh)
+#define pylith_bc_dirichletdatamulti_hh
+
+namespace pylith {
+  namespace bc {
+     class DirichletDataMulti;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletDataMulti
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Constructor
+  DirichletDataMulti(void);
+
+  /// Destructor
+  ~DirichletDataMulti(void);
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public:
+
+  int numDOF; ///< Number of degrees of freedom at each point.
+
+  //@{ Boundary condition A
+  int numFixedDOFA; ///< Number of fixedDOF at constrained points.
+  int numConstrainedPtsA; ///< Number of points constrained.
+  int idA; ///< Boundary condition identifier
+  char* labelA; ///< Label for boundary condition group
+  int* fixedDOFA; ///< Degrees of freedom that are constrained at each point
+  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.
+  //@}
+
+  //@{ Boundary condition B
+  int numFixedDOFB; ///< Number of fixedDOF at constrained points.
+  int numConstrainedPtsB; ///< Number of points constrained.
+  int idB; ///< Boundary condition identifier
+  char* labelB; ///< Label for boundary condition group
+  int* fixedDOFB; ///< Degrees of freedom that are constrained at each point
+  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.
+  //@}
+
+  double* field; ///< Values in field
+  int* constraintSizes; ///< Number of constrained DOF at each vertex
+  int* constrainedDOF; ///< Indices of constrained DOF at each constrained vertex
+
+  char* meshFilename; ///< Filename for input mesh.
+};
+
+#endif // pylith_bc_dirichletdatamulti_hh
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,131 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: meshTri3.txt
+ *
+ * DirichletPoints BC A at vertices 1 and 3.
+ *
+ * Fixed DOF: { 1 }
+ *
+ * Initial values
+ *   1: 0.3
+ *   3: 0.7
+ * tRef = 3.2
+ * Rate of change of values
+ *   1: 0.2
+ *   3: 0.8
+ *
+ * DirichletPoints BC B at vertices 2 and 3.
+ *
+ * Fixed DOF: { 0 }
+ *
+ * Initial values
+ *   2: 0.9
+ *   3: 0.5
+ * tRef = 0.4
+ * Rate of change of values
+ *   2: -0.4
+ *   3: 0.2
+ */
+
+#include "DirichletDataMultiTri3.hh"
+
+const int pylith::bc::DirichletDataMultiTri3::_numDOF = 2;
+
+const int pylith::bc::DirichletDataMultiTri3::_idA = 0;
+const char* pylith::bc::DirichletDataMultiTri3::_labelA = "bc";
+const int pylith::bc::DirichletDataMultiTri3::_numFixedDOFA = 1;
+const int pylith::bc::DirichletDataMultiTri3::_fixedDOFA[] = { 1 };
+const int pylith::bc::DirichletDataMultiTri3::_numConstrainedPtsA = 2;
+const int pylith::bc::DirichletDataMultiTri3::_constrainedPointsA[] = { 1, 3 };
+
+const char* pylith::bc::DirichletDataMultiTri3::_dbFilenameA =
+  "data/tri3.spatialdb";
+const char* pylith::bc::DirichletDataMultiTri3::_dbFilenameARate =
+  "data/tri3_rate.spatialdb";
+const double pylith::bc::DirichletDataMultiTri3::_tRefA = 3.2;
+
+const int pylith::bc::DirichletDataMultiTri3::_idB = 1;
+const char* pylith::bc::DirichletDataMultiTri3::_labelB = "bc2";
+const int pylith::bc::DirichletDataMultiTri3::_numFixedDOFB = 1;
+const int pylith::bc::DirichletDataMultiTri3::_fixedDOFB[] = { 0 };
+const int pylith::bc::DirichletDataMultiTri3::_numConstrainedPtsB = 2;
+const int pylith::bc::DirichletDataMultiTri3::_constrainedPointsB[] = { 2, 3 };
+
+const char* pylith::bc::DirichletDataMultiTri3::_dbFilenameB =
+  "data/tri3_b.spatialdb";
+const char* pylith::bc::DirichletDataMultiTri3::_dbFilenameBRate =
+  "data/tri3_b_rate.spatialdb";
+const double pylith::bc::DirichletDataMultiTri3::_tRefB = 0.4;
+
+const int pylith::bc::DirichletDataMultiTri3::_constraintSizes[] = {
+  0,
+  1,
+  1,
+  2
+};
+
+const int pylith::bc::DirichletDataMultiTri3::_constrainedDOF[] = {
+  1, 
+  0,
+  0, 1
+};
+
+// Values at t=10.0
+const double pylith::bc::DirichletDataMultiTri3::_field[] = {
+  0.0, 0.0,
+  0.0, 1.66,
+  -2.94, 0.0,
+  2.42, 6.14
+};
+
+const char* pylith::bc::DirichletDataMultiTri3::_meshFilename = 
+  "data/tri3.mesh";
+
+pylith::bc::DirichletDataMultiTri3::DirichletDataMultiTri3(void)
+{ // constructor
+  numDOF = _numDOF;
+
+  idA = _idA;
+  labelA = const_cast<char*>(_labelA);
+  numFixedDOFA = _numFixedDOFA;
+  fixedDOFA = const_cast<int*>(_fixedDOFA);
+  numConstrainedPtsA = _numConstrainedPtsA;
+  constrainedPointsA = const_cast<int*>(_constrainedPointsA);
+
+  dbFilenameA = const_cast<char*>(_dbFilenameA);
+  dbFilenameARate = const_cast<char*>(_dbFilenameARate);
+  tRefA = _tRefA;
+
+  idB = _idA;
+  labelB = const_cast<char*>(_labelB);
+  numFixedDOFB = _numFixedDOFB;
+  fixedDOFB = const_cast<int*>(_fixedDOFB);
+  numConstrainedPtsB = _numConstrainedPtsB;
+  constrainedPointsB = const_cast<int*>(_constrainedPointsB);
+
+  dbFilenameB = const_cast<char*>(_dbFilenameB);
+  dbFilenameBRate = const_cast<char*>(_dbFilenameBRate);
+  tRefB = _tRefB;
+
+  field = const_cast<double*>(_field);
+  constraintSizes = const_cast<int*>(_constraintSizes);
+  constrainedDOF = const_cast<int*>(_constrainedDOF);
+
+  meshFilename = const_cast<char*>(_meshFilename);
+} // constructor
+
+pylith::bc::DirichletDataMultiTri3::~DirichletDataMultiTri3(void)
+{}
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataMultiTri3.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_DirichletPointsDatamultitri3_hh)
+#define pylith_bc_DirichletPointsDatamultitri3_hh
+
+#include "DirichletDataMulti.hh"
+
+namespace pylith {
+  namespace bc {
+     class DirichletDataMultiTri3;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletDataMultiTri3 : public DirichletDataMulti
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  DirichletDataMultiTri3(void);
+
+  /// Destructor
+  ~DirichletDataMultiTri3(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _numDOF; ///< Number of degrees of freedom at each point.
+
+  static const int _numFixedDOFA; ///< Number of fixedDOF at constrained points.
+  static const int _numConstrainedPtsA; ///< Number of points constrained.
+  static const int _idA; ///< Boundary condition identifier
+  static const char* _labelA; /// Label for boundary condition group
+  static const int _fixedDOFA[]; ///< Degrees of freedom constrained at points
+  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 int _numFixedDOFB; ///< Number of fixedDOF at constrained points.
+  static const int _numConstrainedPtsB; ///< Number of points constrained.
+  static const int _idB; ///< Boundary condition identifier
+  static const char* _labelB; /// Label for boundary condition group
+  static const int _fixedDOFB[]; ///< Degrees of freedom constrained at points
+  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 double _field[]; ///< 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
+
+  static const char* _meshFilename; ///< Filename of input mesh.
+};
+
+#endif // pylith_bc_dirichletdatamultitri3_hh
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: meshQuad4.txt
+ *
+ * DirichletPoints BC at vertices 0, 2, 4.
+ *
+ * Fixed DOF: { 0, 1 }
+ *
+ * Values
+ *   0: 0.1, 0.6
+ *   2: 0.5, 0.3
+ *   4: 0.4, 0.2
+ * tRef = 3.0
+ * Rate of change = -0.5
+ */
+
+#include "DirichletDataQuad4.hh"
+
+const int pylith::bc::DirichletDataQuad4::_id = 0;
+
+const char* pylith::bc::DirichletDataQuad4::_label = "bc3";
+
+const int pylith::bc::DirichletDataQuad4::_numDOF = 2;
+const int pylith::bc::DirichletDataQuad4::_numFixedDOF = 2;
+const int pylith::bc::DirichletDataQuad4::_fixedDOF[] = { 0, 1 };
+
+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[] =
+  { 0.1, 0.6, 0.5, 0.3, 0.4, 0.2 };
+
+const char* pylith::bc::DirichletDataQuad4::_meshFilename = 
+  "data/quad4.mesh";
+const char* pylith::bc::DirichletDataQuad4::_dbFilename =
+  "data/quad4.spatialdb";
+
+pylith::bc::DirichletDataQuad4::DirichletDataQuad4(void)
+{ // constructor
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  numDOF = _numDOF;
+  numFixedDOF = _numFixedDOF;
+  fixedDOF = const_cast<int*>(_fixedDOF);
+
+  numConstrainedPts = _numConstrainedPts;
+  constrainedPoints = const_cast<int*>(_constrainedPoints);
+
+  tRef = _tRef;
+  valueRate = _valueRate;
+  valuesInitial = const_cast<double*>(_valuesInitial);
+
+  meshFilename = const_cast<char*>(_meshFilename);
+  dbFilename = const_cast<char*>(_dbFilename);
+} // constructor
+
+pylith::bc::DirichletDataQuad4::~DirichletDataQuad4(void)
+{}
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataQuad4.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_dirichletdataquad4_hh)
+#define pylith_bc_dirichletdataquad4_hh
+
+#include "DirichletData.hh"
+
+namespace pylith {
+  namespace bc {
+     class DirichletDataQuad4;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletDataQuad4 : public DirichletData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  DirichletDataQuad4(void);
+
+  /// Destructor
+  ~DirichletDataQuad4(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _numDOF; ///< Number of degrees of freedom at each point.
+
+  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
+  static const int _numConstrainedPts; ///< Number of points constrained.
+
+  static const int _id; ///< Boundary condition identifier
+  static const char* _label; /// Label for boundary condition group
+
+  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 char* _meshFilename; ///< Filename of input mesh.
+  static const char* _dbFilename; ///< Filename of simple spatial database.
+};
+
+#endif // pylith_bc_dirichletdataquad4_hh
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,78 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: meshTet4.txt
+ *
+ * DirichletPoints BC at vertices 2.
+ *
+ * Fixed DOF: { 1, 2 }
+ *
+ * Values
+ *   1: 0.7, 0.2
+ *   2: 0.7, 0.2
+ *   3: 0.7, 0.2
+ * tRef = 1.2
+ * Rate of change = 4.0
+ */
+
+#include "DirichletDataTet4.hh"
+
+const int pylith::bc::DirichletDataTet4::_id = 0;
+
+const char* pylith::bc::DirichletDataTet4::_label = "bc3";
+
+const int pylith::bc::DirichletDataTet4::_numDOF = 3;
+const int pylith::bc::DirichletDataTet4::_numFixedDOF = 2;
+const int pylith::bc::DirichletDataTet4::_fixedDOF[] = { 1, 2 };
+
+const int pylith::bc::DirichletDataTet4::_numConstrainedPts = 3;
+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[] = {
+  0.7, 0.2,
+  0.7, 0.2,
+  0.7, 0.2,
+};
+
+const char* pylith::bc::DirichletDataTet4::_meshFilename = 
+  "data/tet4.mesh";
+const char* pylith::bc::DirichletDataTet4::_dbFilename =
+  "data/tet4.spatialdb";
+
+pylith::bc::DirichletDataTet4::DirichletDataTet4(void)
+{ // constructor
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  numDOF = _numDOF;
+  numFixedDOF = _numFixedDOF;
+  fixedDOF = const_cast<int*>(_fixedDOF);
+
+  numConstrainedPts = _numConstrainedPts;
+  constrainedPoints = const_cast<int*>(_constrainedPoints);
+
+  tRef = _tRef;
+  valueRate = _valueRate;
+  valuesInitial = const_cast<double*>(_valuesInitial);
+
+  meshFilename = const_cast<char*>(_meshFilename);
+  dbFilename = const_cast<char*>(_dbFilename);
+} // constructor
+
+pylith::bc::DirichletDataTet4::~DirichletDataTet4(void)
+{}
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTet4.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_dirichletdatatet4_hh)
+#define pylith_bc_dirichletdatatet4_hh
+
+#include "DirichletData.hh"
+
+namespace pylith {
+  namespace bc {
+     class DirichletDataTet4;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletDataTet4 : public DirichletData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  DirichletDataTet4(void);
+
+  /// Destructor
+  ~DirichletDataTet4(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _numDOF; ///< Number of degrees of freedom at each point.
+
+  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
+  static const int _numConstrainedPts; ///< Number of points constrained.
+
+  static const int _id; ///< Boundary condition identifier
+  static const char* _label; /// Label for boundary condition group
+
+  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 char* _meshFilename; ///< Filename of input mesh.
+  static const char* _dbFilename; ///< Filename of simple spatial database.
+};
+
+#endif // pylith_bc_dirichletdatatet4_hh
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.cc (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.cc	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: meshTri3.txt
+ *
+ * DirichletPoints BC at vertices 1 and 3.
+ *
+ * Fixed DOF: { 1 }
+ *
+ * Values
+ *   1: 0.3
+ *   3: 0.7
+ * tRef = 0.7
+ * Rate of change = -0.2
+ */
+
+#include "DirichletDataTri3.hh"
+
+const int pylith::bc::DirichletDataTri3::_id = 0;
+
+const char* pylith::bc::DirichletDataTri3::_label = "bc";
+
+const int pylith::bc::DirichletDataTri3::_numDOF = 2;
+const int pylith::bc::DirichletDataTri3::_numFixedDOF = 1;
+const int pylith::bc::DirichletDataTri3::_fixedDOF[] = { 1 };
+
+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[] =
+  { 0.3, 0.7 };
+
+const char* pylith::bc::DirichletDataTri3::_meshFilename = 
+  "data/tri3.mesh";
+const char* pylith::bc::DirichletDataTri3::_dbFilename =
+  "data/tri3.spatialdb";
+
+pylith::bc::DirichletDataTri3::DirichletDataTri3(void)
+{ // constructor
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  numDOF = _numDOF;
+  numFixedDOF = _numFixedDOF;
+  fixedDOF = const_cast<int*>(_fixedDOF);
+
+  numConstrainedPts = _numConstrainedPts;
+  constrainedPoints = const_cast<int*>(_constrainedPoints);
+
+  tRef = _tRef;
+  valueRate = _valueRate;
+  valuesInitial = const_cast<double*>(_valuesInitial);
+
+  meshFilename = const_cast<char*>(_meshFilename);
+  dbFilename = const_cast<char*>(_dbFilename);
+} // constructor
+
+pylith::bc::DirichletDataTri3::~DirichletDataTri3(void)
+{}
+
+
+// End of file

Copied: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.hh (from rev 9336, short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.hh	                        (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletDataTri3.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_dirichletdatatri3_hh)
+#define pylith_bc_dirichletdatatri3_hh
+
+#include "DirichletData.hh"
+
+namespace pylith {
+  namespace bc {
+     class DirichletDataTri3;
+  } // pylith
+} // bc
+
+class pylith::bc::DirichletDataTri3 : public DirichletData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  DirichletDataTri3(void);
+
+  /// Destructor
+  ~DirichletDataTri3(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _numDOF; ///< Number of degrees of freedom at each point.
+
+  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
+  static const int _numConstrainedPts; ///< Number of points constrained.
+
+  static const int _id; ///< Boundary condition identifier
+  static const char* _label; /// Label for boundary condition group
+
+  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 char* _meshFilename; ///< Filename of input mesh.
+  static const char* _dbFilename; ///< Filename of simple spatial database.
+};
+
+#endif // pylith_bc_dirichletdatatri3_hh
+
+// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,40 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#include "DirichletPointsData.hh"
-
-// ----------------------------------------------------------------------
-// Constructor
-pylith::bc::DirichletPointsData::DirichletPointsData(void) :
-  tRef(0),
-  valueRate(0),
-  numDOF(0),
-  numFixedDOF(0),
-  numConstrainedPts(0),
-  id(0),
-  label(0),
-  fixedDOF(0),
-  constrainedPoints(0),
-  valuesInitial(0),
-  meshFilename(0),
-  dbFilename(0)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Destructor
-pylith::bc::DirichletPointsData::~DirichletPointsData(void)
-{ // destructor
-} // destructor
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsData.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,57 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdata_hh)
-#define pylith_bc_dirichletpointsdata_hh
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsData;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsData
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-  
-  /// Constructor
-  DirichletPointsData(void);
-
-  /// Destructor
-  ~DirichletPointsData(void);
-
-// PUBLIC MEMBERS ///////////////////////////////////////////////////////
-public:
-
-  double tRef; ///< Reference time for rate of change of values
-  double 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.
-  int numConstrainedPts; ///< Number of points constrained.
-
-  int id; ///< Boundary condition identifier
-  char* label; ///< Label for boundary condition group
-
-  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.
-
-  char* meshFilename; ///< Filename for input mesh.
-  char* dbFilename; ///< Filename of simple spatial database.
-};
-
-#endif // pylith_bc_cohesivedata_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,80 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/* Mesh: meshHex8.txt
- *
- * DirichletPoints BC at vertices 0, 1, 6, 7.
- *
- * Fixed DOF: { 0, 2 }
- *
- * Initial values
- *   0: -0.2, 0.3
- *   1:  0.1, 0.7
- *   6:  0.5, 0.4
- *   7:  3.2, 6.1
- * tref = 0.2
- * Rate of change
- *   +0.4
- */
-
-#include "DirichletPointsDataHex8.hh"
-
-const int pylith::bc::DirichletPointsDataHex8::_id = 0;
-
-const char* pylith::bc::DirichletPointsDataHex8::_label = "bc";
-
-const int pylith::bc::DirichletPointsDataHex8::_numDOF = 3;
-const int pylith::bc::DirichletPointsDataHex8::_numFixedDOF = 2;
-const int pylith::bc::DirichletPointsDataHex8::_fixedDOF[] = { 0, 2 };
-
-const int pylith::bc::DirichletPointsDataHex8::_numConstrainedPts = 4;
-const int pylith::bc::DirichletPointsDataHex8::_constrainedPoints[] = { 0, 1, 6, 7 };
-
-const double pylith::bc::DirichletPointsDataHex8::_tRef = 0.2;
-const double pylith::bc::DirichletPointsDataHex8::_valueRate = 0.4;
-const double pylith::bc::DirichletPointsDataHex8::_valuesInitial[] = {
-  -0.2, 0.3,
-   0.1, 0.7,
-   0.5, 0.4,
-   3.2, 6.1,
-};
-
-const char* pylith::bc::DirichletPointsDataHex8::_meshFilename = 
-  "data/hex8.mesh";
-const char* pylith::bc::DirichletPointsDataHex8::_dbFilename =
-  "data/hex8.spatialdb";
-
-pylith::bc::DirichletPointsDataHex8::DirichletPointsDataHex8(void)
-{ // constructor
-  id = _id;
-  label = const_cast<char*>(_label);
-
-  tRef = _tRef;
-  valueRate = _valueRate;
-
-  numDOF = _numDOF;
-  numFixedDOF = _numFixedDOF;
-  fixedDOF = const_cast<int*>(_fixedDOF);
-
-  numConstrainedPts = _numConstrainedPts;
-  constrainedPoints = const_cast<int*>(_constrainedPoints);
-  valuesInitial = const_cast<double*>(_valuesInitial);
-
-  meshFilename = const_cast<char*>(_meshFilename);
-  dbFilename = const_cast<char*>(_dbFilename);
-} // constructor
-
-pylith::bc::DirichletPointsDataHex8::~DirichletPointsDataHex8(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataHex8.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdatahex8_hh)
-#define pylith_bc_dirichletpointsdatahex8_hh
-
-#include "DirichletPointsData.hh"
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsDataHex8;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsDataHex8 : public DirichletPointsData
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public: 
-
-  /// Constructor
-  DirichletPointsDataHex8(void);
-
-  /// Destructor
-  ~DirichletPointsDataHex8(void);
-
-// PRIVATE MEMBERS //////////////////////////////////////////////////////
-private:
-
-  static const int _numDOF; ///< Number of degrees of freedom at each point.
-
-  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
-  static const int _numConstrainedPts; ///< Number of points constrained.
-
-  static const int _id; ///< Boundary condition identifier
-  static const char* _label; /// Label for boundary condition group
-
-  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 char* _meshFilename; ///< Filename of input mesh.
-  static const char* _dbFilename; ///< Filename of simple spatial database.
-};
-
-#endif // pylith_bc_dirichletpointsdatahex8_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,75 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/* Mesh: meshLine2.txt
- *
- * DirichletPoints BC at vertices 0 and 2.
- *
- * Fixed DOF: { 0 }
- *
- * Values
- *   0: 1.1 [constrained]
- *   1: 0.8 [solution]
- *   2: 2.2 [constrained]
- * tref = 0.6
- * Rate of change
- *   +0.3
- */
-
-#include "DirichletPointsDataLine2.hh"
-
-const int pylith::bc::DirichletPointsDataLine2::_id = 0;
-
-const char* pylith::bc::DirichletPointsDataLine2::_label = "bc0";
-
-const int pylith::bc::DirichletPointsDataLine2::_numDOF = 1;
-const int pylith::bc::DirichletPointsDataLine2::_numFixedDOF = 1;
-const int pylith::bc::DirichletPointsDataLine2::_fixedDOF[] = { 0 };
-
-const int pylith::bc::DirichletPointsDataLine2::_numConstrainedPts = 2;
-const int pylith::bc::DirichletPointsDataLine2::_constrainedPoints[] = { 0, 2 };
-
-const double pylith::bc::DirichletPointsDataLine2::_tRef = 0.6;
-const double pylith::bc::DirichletPointsDataLine2::_valueRate = 0.3;
-const double pylith::bc::DirichletPointsDataLine2::_valuesInitial[] =
-  { 1.1, 2.2 };
-
-const char* pylith::bc::DirichletPointsDataLine2::_meshFilename = 
-  "data/line2.mesh";
-const char* pylith::bc::DirichletPointsDataLine2::_dbFilename =
-  "data/line2.spatialdb";
-
-pylith::bc::DirichletPointsDataLine2::DirichletPointsDataLine2(void)
-{ // constructor
-  id = _id;
-  label = const_cast<char*>(_label);
-
-  numDOF = _numDOF;
-  numFixedDOF = _numFixedDOF;
-  fixedDOF = const_cast<int*>(_fixedDOF);
-
-  numConstrainedPts = _numConstrainedPts;
-  constrainedPoints = const_cast<int*>(_constrainedPoints);
-
-  tRef = _tRef;
-  valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
-
-  meshFilename = const_cast<char*>(_meshFilename);
-  dbFilename = const_cast<char*>(_dbFilename);
-} // constructor
-
-pylith::bc::DirichletPointsDataLine2::~DirichletPointsDataLine2(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdataline2_hh)
-#define pylith_bc_dirichletpointsdataline2_hh
-
-#include "DirichletPointsData.hh"
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsDataLine2;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsDataLine2 : public DirichletPointsData
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public: 
-
-  /// Constructor
-  DirichletPointsDataLine2(void);
-
-  /// Destructor
-  ~DirichletPointsDataLine2(void);
-
-// PRIVATE MEMBERS //////////////////////////////////////////////////////
-private:
-
-  static const int _numDOF; ///< Number of degrees of freedom at each point.
-
-  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
-  static const int _numConstrainedPts; ///< Number of points constrained.
-
-  static const int _id; ///< Boundary condition identifier
-  static const char* _label; /// Label for boundary condition group
-
-  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 char* _meshFilename; ///< Filename of input mesh.
-  static const char* _dbFilename; ///< Filename of simple spatial database.
-};
-
-#endif // pylith_bc_dirichletpointsdataline2_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,66 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/* Mesh: meshLine2.txt
- *
- * DirichletPoints BC at vertices 0 and 2.
- *
- * Fixed DOF: None
- */
-
-#include "DirichletPointsDataLine2b.hh"
-
-const int pylith::bc::DirichletPointsDataLine2b::_id = 0;
-
-const char* pylith::bc::DirichletPointsDataLine2b::_label = "bc0";
-
-const int pylith::bc::DirichletPointsDataLine2b::_numDOF = 1;
-const int pylith::bc::DirichletPointsDataLine2b::_numFixedDOF = 0;
-const int pylith::bc::DirichletPointsDataLine2b::_fixedDOF[] = {};
-
-const int pylith::bc::DirichletPointsDataLine2b::_numConstrainedPts = 2;
-const int pylith::bc::DirichletPointsDataLine2b::_constrainedPoints[] = { 0, 2 };
-
-const double pylith::bc::DirichletPointsDataLine2b::_tRef = -0.2;
-const double pylith::bc::DirichletPointsDataLine2b::_valueRate = 1.0;
-const double pylith::bc::DirichletPointsDataLine2b::_valuesInitial[] = {0};
-
-const char* pylith::bc::DirichletPointsDataLine2b::_meshFilename = 
-  "data/line2.mesh";
-const char* pylith::bc::DirichletPointsDataLine2b::_dbFilename =
-  "data/line2.spatialdb";
-
-pylith::bc::DirichletPointsDataLine2b::DirichletPointsDataLine2b(void)
-{ // constructor
-  id = _id;
-  label = const_cast<char*>(_label);
-
-  numDOF = _numDOF;
-  numFixedDOF = _numFixedDOF;
-  fixedDOF = const_cast<int*>(_fixedDOF);
-
-  numConstrainedPts = _numConstrainedPts;
-  constrainedPoints = const_cast<int*>(_constrainedPoints);
-
-  tRef = _tRef;
-  valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
-
-  meshFilename = const_cast<char*>(_meshFilename);
-  dbFilename = const_cast<char*>(_dbFilename);
-} // constructor
-
-pylith::bc::DirichletPointsDataLine2b::~DirichletPointsDataLine2b(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataLine2b.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdataline2b_hh)
-#define pylith_bc_dirichletpointsdataline2b_hh
-
-#include "DirichletPointsData.hh"
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsDataLine2b;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsDataLine2b : public DirichletPointsData
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public: 
-
-  /// Constructor
-  DirichletPointsDataLine2b(void);
-
-  /// Destructor
-  ~DirichletPointsDataLine2b(void);
-
-// PRIVATE MEMBERS //////////////////////////////////////////////////////
-private:
-
-  static const int _numDOF; ///< Number of degrees of freedom at each point.
-
-  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
-  static const int _numConstrainedPts; ///< Number of points constrained.
-
-  static const int _id; ///< Boundary condition identifier
-  static const char* _label; /// Label for boundary condition group
-
-  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 char* _meshFilename; ///< Filename of input mesh.
-  static const char* _dbFilename; ///< Filename of simple spatial database.
-};
-
-#endif // pylith_bc_dirichletpointsdataline2b_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,51 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#include "DirichletPointsDataMulti.hh"
-
-// ----------------------------------------------------------------------
-// Constructor
-pylith::bc::DirichletPointsDataMulti::DirichletPointsDataMulti(void) :
-  numDOF(0),
-  numFixedDOFA(0),
-  numConstrainedPtsA(0),
-  idA(0),
-  labelA(0),
-  fixedDOFA(0),
-  constrainedPointsA(0),
-  dbFilenameA(0),
-  dbFilenameARate(0),
-  tRefA(0),
-  numFixedDOFB(0),
-  numConstrainedPtsB(0),
-  idB(0),
-  labelB(0),
-  fixedDOFB(0),
-  constrainedPointsB(0),
-  dbFilenameB(0),
-  dbFilenameBRate(0),
-  tRefB(0),
-  field(0),
-  constraintSizes(0),
-  constrainedDOF(0),
-  meshFilename(0)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Destructor
-pylith::bc::DirichletPointsDataMulti::~DirichletPointsDataMulti(void)
-{ // destructor
-} // destructor
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMulti.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,72 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdatamulti_hh)
-#define pylith_bc_dirichletpointsdatamulti_hh
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsDataMulti;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsDataMulti
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-  
-  /// Constructor
-  DirichletPointsDataMulti(void);
-
-  /// Destructor
-  ~DirichletPointsDataMulti(void);
-
-// PUBLIC MEMBERS ///////////////////////////////////////////////////////
-public:
-
-  int numDOF; ///< Number of degrees of freedom at each point.
-
-  //@{ Boundary condition A
-  int numFixedDOFA; ///< Number of fixedDOF at constrained points.
-  int numConstrainedPtsA; ///< Number of points constrained.
-  int idA; ///< Boundary condition identifier
-  char* labelA; ///< Label for boundary condition group
-  int* fixedDOFA; ///< Degrees of freedom that are constrained at each point
-  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.
-  //@}
-
-  //@{ Boundary condition B
-  int numFixedDOFB; ///< Number of fixedDOF at constrained points.
-  int numConstrainedPtsB; ///< Number of points constrained.
-  int idB; ///< Boundary condition identifier
-  char* labelB; ///< Label for boundary condition group
-  int* fixedDOFB; ///< Degrees of freedom that are constrained at each point
-  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.
-  //@}
-
-  double* field; ///< Values in field
-  int* constraintSizes; ///< Number of constrained DOF at each vertex
-  int* constrainedDOF; ///< Indices of constrained DOF at each constrained vertex
-
-  char* meshFilename; ///< Filename for input mesh.
-};
-
-#endif // pylith_bc_cohesivedatamulti_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,131 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/* Mesh: meshTri3.txt
- *
- * DirichletPoints BC A at vertices 1 and 3.
- *
- * Fixed DOF: { 1 }
- *
- * Initial values
- *   1: 0.3
- *   3: 0.7
- * tRef = 3.2
- * Rate of change of values
- *   1: 0.2
- *   3: 0.8
- *
- * DirichletPoints BC B at vertex 0 and 3.
- *
- * Fixed DOF: { 0 }
- *
- * Initial values
- *   0: 0.9
- *   3: 0.5
- * tRef = 0.4
- * Rate of change of values
- *   1: -0.4
- *   3: 0.2
- */
-
-#include "DirichletPointsDataMultiTri3.hh"
-
-const int pylith::bc::DirichletPointsDataMultiTri3::_numDOF = 2;
-
-const int pylith::bc::DirichletPointsDataMultiTri3::_idA = 0;
-const char* pylith::bc::DirichletPointsDataMultiTri3::_labelA = "bc";
-const int pylith::bc::DirichletPointsDataMultiTri3::_numFixedDOFA = 1;
-const int pylith::bc::DirichletPointsDataMultiTri3::_fixedDOFA[] = { 1 };
-const int pylith::bc::DirichletPointsDataMultiTri3::_numConstrainedPtsA = 2;
-const int pylith::bc::DirichletPointsDataMultiTri3::_constrainedPointsA[] = { 1, 3 };
-
-const char* pylith::bc::DirichletPointsDataMultiTri3::_dbFilenameA =
-  "data/tri3.spatialdb";
-const char* pylith::bc::DirichletPointsDataMultiTri3::_dbFilenameARate =
-  "data/tri3_rate.spatialdb";
-const double pylith::bc::DirichletPointsDataMultiTri3::_tRefA = 3.2;
-
-const int pylith::bc::DirichletPointsDataMultiTri3::_idB = 1;
-const char* pylith::bc::DirichletPointsDataMultiTri3::_labelB = "bc2";
-const int pylith::bc::DirichletPointsDataMultiTri3::_numFixedDOFB = 1;
-const int pylith::bc::DirichletPointsDataMultiTri3::_fixedDOFB[] = { 0 };
-const int pylith::bc::DirichletPointsDataMultiTri3::_numConstrainedPtsB = 1;
-const int pylith::bc::DirichletPointsDataMultiTri3::_constrainedPointsB[] = { 0, 3 };
-
-const char* pylith::bc::DirichletPointsDataMultiTri3::_dbFilenameB =
-  "data/tri3_b.spatialdb";
-const char* pylith::bc::DirichletPointsDataMultiTri3::_dbFilenameBRate =
-  "data/tri3_b_rate.spatialdb";
-const double pylith::bc::DirichletPointsDataMultiTri3::_tRefB = 0.4;
-
-const int pylith::bc::DirichletPointsDataMultiTri3::_constraintSizes[] = {
-  1,
-  1,
-  0,
-  2
-};
-
-const int pylith::bc::DirichletPointsDataMultiTri3::_constrainedDOF[] = {
-  0, 
-  1,
-  0, 1
-};
-
-// Values at t=10.0
-const double pylith::bc::DirichletPointsDataMultiTri3::_field[] = {
-  -2.94, 0.0,
-  0.0, 1.66,
-  0.0, 0.0,
-  2.42, 6.14
-};
-
-const char* pylith::bc::DirichletPointsDataMultiTri3::_meshFilename = 
-  "data/tri3.mesh";
-
-pylith::bc::DirichletPointsDataMultiTri3::DirichletPointsDataMultiTri3(void)
-{ // constructor
-  numDOF = _numDOF;
-
-  idA = _idA;
-  labelA = const_cast<char*>(_labelA);
-  numFixedDOFA = _numFixedDOFA;
-  fixedDOFA = const_cast<int*>(_fixedDOFA);
-  numConstrainedPtsA = _numConstrainedPtsA;
-  constrainedPointsA = const_cast<int*>(_constrainedPointsA);
-
-  dbFilenameA = const_cast<char*>(_dbFilenameA);
-  dbFilenameARate = const_cast<char*>(_dbFilenameARate);
-  tRefA = _tRefA;
-
-  idB = _idA;
-  labelB = const_cast<char*>(_labelB);
-  numFixedDOFB = _numFixedDOFB;
-  fixedDOFB = const_cast<int*>(_fixedDOFB);
-  numConstrainedPtsB = _numConstrainedPtsB;
-  constrainedPointsB = const_cast<int*>(_constrainedPointsB);
-
-  dbFilenameB = const_cast<char*>(_dbFilenameB);
-  dbFilenameBRate = const_cast<char*>(_dbFilenameBRate);
-  tRefB = _tRefB;
-
-  field = const_cast<double*>(_field);
-  constraintSizes = const_cast<int*>(_constraintSizes);
-  constrainedDOF = const_cast<int*>(_constrainedDOF);
-
-  meshFilename = const_cast<char*>(_meshFilename);
-} // constructor
-
-pylith::bc::DirichletPointsDataMultiTri3::~DirichletPointsDataMultiTri3(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataMultiTri3.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,70 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdatamultitri3_hh)
-#define pylith_bc_dirichletpointsdatamultitri3_hh
-
-#include "DirichletPointsDataMulti.hh"
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsDataMultiTri3;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsDataMultiTri3 : public DirichletPointsDataMulti
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public: 
-
-  /// Constructor
-  DirichletPointsDataMultiTri3(void);
-
-  /// Destructor
-  ~DirichletPointsDataMultiTri3(void);
-
-// PRIVATE MEMBERS //////////////////////////////////////////////////////
-private:
-
-  static const int _numDOF; ///< Number of degrees of freedom at each point.
-
-  static const int _numFixedDOFA; ///< Number of fixedDOF at constrained points.
-  static const int _numConstrainedPtsA; ///< Number of points constrained.
-  static const int _idA; ///< Boundary condition identifier
-  static const char* _labelA; /// Label for boundary condition group
-  static const int _fixedDOFA[]; ///< Degrees of freedom constrained at points
-  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 int _numFixedDOFB; ///< Number of fixedDOF at constrained points.
-  static const int _numConstrainedPtsB; ///< Number of points constrained.
-  static const int _idB; ///< Boundary condition identifier
-  static const char* _labelB; /// Label for boundary condition group
-  static const int _fixedDOFB[]; ///< Degrees of freedom constrained at points
-  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 double _field[]; ///< 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
-
-  static const char* _meshFilename; ///< Filename of input mesh.
-};
-
-#endif // pylith_bc_dirichletpointsdatamultitri3_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/* Mesh: meshQuad4.txt
- *
- * DirichletPoints BC at vertices 0, 1, 4.
- *
- * Fixed DOF: { 0, 1 }
- *
- * Values
- *   0: 0.1, 0.6
- *   1: 0.5, 0.3
- *   4: 0.4, 0.2
- * tRef = 3.0
- * Rate of change = -0.5
- */
-
-#include "DirichletPointsDataQuad4.hh"
-
-const int pylith::bc::DirichletPointsDataQuad4::_id = 0;
-
-const char* pylith::bc::DirichletPointsDataQuad4::_label = "bc";
-
-const int pylith::bc::DirichletPointsDataQuad4::_numDOF = 2;
-const int pylith::bc::DirichletPointsDataQuad4::_numFixedDOF = 2;
-const int pylith::bc::DirichletPointsDataQuad4::_fixedDOF[] = { 0, 1 };
-
-const int pylith::bc::DirichletPointsDataQuad4::_numConstrainedPts = 3;
-const int pylith::bc::DirichletPointsDataQuad4::_constrainedPoints[] = { 0, 1, 4 };
-
-const double pylith::bc::DirichletPointsDataQuad4::_tRef = 3.0;
-const double pylith::bc::DirichletPointsDataQuad4::_valueRate = -0.5;
-const double pylith::bc::DirichletPointsDataQuad4::_valuesInitial[] =
-  { 0.1, 0.6, 0.5, 0.3, 0.4, 0.2 };
-
-const char* pylith::bc::DirichletPointsDataQuad4::_meshFilename = 
-  "data/quad4.mesh";
-const char* pylith::bc::DirichletPointsDataQuad4::_dbFilename =
-  "data/quad4.spatialdb";
-
-pylith::bc::DirichletPointsDataQuad4::DirichletPointsDataQuad4(void)
-{ // constructor
-  id = _id;
-  label = const_cast<char*>(_label);
-
-  numDOF = _numDOF;
-  numFixedDOF = _numFixedDOF;
-  fixedDOF = const_cast<int*>(_fixedDOF);
-
-  numConstrainedPts = _numConstrainedPts;
-  constrainedPoints = const_cast<int*>(_constrainedPoints);
-
-  tRef = _tRef;
-  valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
-
-  meshFilename = const_cast<char*>(_meshFilename);
-  dbFilename = const_cast<char*>(_dbFilename);
-} // constructor
-
-pylith::bc::DirichletPointsDataQuad4::~DirichletPointsDataQuad4(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataQuad4.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdataquad4_hh)
-#define pylith_bc_dirichletpointsdataquad4_hh
-
-#include "DirichletPointsData.hh"
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsDataQuad4;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsDataQuad4 : public DirichletPointsData
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public: 
-
-  /// Constructor
-  DirichletPointsDataQuad4(void);
-
-  /// Destructor
-  ~DirichletPointsDataQuad4(void);
-
-// PRIVATE MEMBERS //////////////////////////////////////////////////////
-private:
-
-  static const int _numDOF; ///< Number of degrees of freedom at each point.
-
-  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
-  static const int _numConstrainedPts; ///< Number of points constrained.
-
-  static const int _id; ///< Boundary condition identifier
-  static const char* _label; /// Label for boundary condition group
-
-  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 char* _meshFilename; ///< Filename of input mesh.
-  static const char* _dbFilename; ///< Filename of simple spatial database.
-};
-
-#endif // pylith_bc_dirichletpointsdataquad4_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,73 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/* Mesh: meshTet4.txt
- *
- * DirichletPoints BC at vertices 2.
- *
- * Fixed DOF: { 1, 2 }
- *
- * Values
- *   2: 0.7, 0.2
- * tRef = 1.2
- * Rate of change = 4.0
- */
-
-#include "DirichletPointsDataTet4.hh"
-
-const int pylith::bc::DirichletPointsDataTet4::_id = 0;
-
-const char* pylith::bc::DirichletPointsDataTet4::_label = "bc";
-
-const int pylith::bc::DirichletPointsDataTet4::_numDOF = 3;
-const int pylith::bc::DirichletPointsDataTet4::_numFixedDOF = 2;
-const int pylith::bc::DirichletPointsDataTet4::_fixedDOF[] = { 1, 2 };
-
-const int pylith::bc::DirichletPointsDataTet4::_numConstrainedPts = 1;
-const int pylith::bc::DirichletPointsDataTet4::_constrainedPoints[] = { 2 };
-
-
-const double pylith::bc::DirichletPointsDataTet4::_tRef = 1.2;
-const double pylith::bc::DirichletPointsDataTet4::_valueRate = 4.0;
-const double pylith::bc::DirichletPointsDataTet4::_valuesInitial[] =
-  { 0.7, 0.2 };
-
-const char* pylith::bc::DirichletPointsDataTet4::_meshFilename = 
-  "data/tet4.mesh";
-const char* pylith::bc::DirichletPointsDataTet4::_dbFilename =
-  "data/tet4.spatialdb";
-
-pylith::bc::DirichletPointsDataTet4::DirichletPointsDataTet4(void)
-{ // constructor
-  id = _id;
-  label = const_cast<char*>(_label);
-
-  numDOF = _numDOF;
-  numFixedDOF = _numFixedDOF;
-  fixedDOF = const_cast<int*>(_fixedDOF);
-
-  numConstrainedPts = _numConstrainedPts;
-  constrainedPoints = const_cast<int*>(_constrainedPoints);
-
-  tRef = _tRef;
-  valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
-
-  meshFilename = const_cast<char*>(_meshFilename);
-  dbFilename = const_cast<char*>(_dbFilename);
-} // constructor
-
-pylith::bc::DirichletPointsDataTet4::~DirichletPointsDataTet4(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTet4.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdatatet4_hh)
-#define pylith_bc_dirichletpointsdatatet4_hh
-
-#include "DirichletPointsData.hh"
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsDataTet4;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsDataTet4 : public DirichletPointsData
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public: 
-
-  /// Constructor
-  DirichletPointsDataTet4(void);
-
-  /// Destructor
-  ~DirichletPointsDataTet4(void);
-
-// PRIVATE MEMBERS //////////////////////////////////////////////////////
-private:
-
-  static const int _numDOF; ///< Number of degrees of freedom at each point.
-
-  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
-  static const int _numConstrainedPts; ///< Number of points constrained.
-
-  static const int _id; ///< Boundary condition identifier
-  static const char* _label; /// Label for boundary condition group
-
-  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 char* _meshFilename; ///< Filename of input mesh.
-  static const char* _dbFilename; ///< Filename of simple spatial database.
-};
-
-#endif // pylith_bc_dirichletpointsdatatet4_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.cc	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.cc	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,73 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/* Mesh: meshTri3.txt
- *
- * DirichletPoints BC at vertices 1 and 3.
- *
- * Fixed DOF: { 1 }
- *
- * Values
- *   1: 0.3
- *   3: 0.7
- * tRef = 0.7
- * Rate of change = -0.2
- */
-
-#include "DirichletPointsDataTri3.hh"
-
-const int pylith::bc::DirichletPointsDataTri3::_id = 0;
-
-const char* pylith::bc::DirichletPointsDataTri3::_label = "bc";
-
-const int pylith::bc::DirichletPointsDataTri3::_numDOF = 2;
-const int pylith::bc::DirichletPointsDataTri3::_numFixedDOF = 1;
-const int pylith::bc::DirichletPointsDataTri3::_fixedDOF[] = { 1 };
-
-const int pylith::bc::DirichletPointsDataTri3::_numConstrainedPts = 2;
-const int pylith::bc::DirichletPointsDataTri3::_constrainedPoints[] = { 1, 3 };
-
-const double pylith::bc::DirichletPointsDataTri3::_tRef = 0.7;
-const double pylith::bc::DirichletPointsDataTri3::_valueRate = -0.2;
-const double pylith::bc::DirichletPointsDataTri3::_valuesInitial[] =
-  { 0.3, 0.7 };
-
-const char* pylith::bc::DirichletPointsDataTri3::_meshFilename = 
-  "data/tri3.mesh";
-const char* pylith::bc::DirichletPointsDataTri3::_dbFilename =
-  "data/tri3.spatialdb";
-
-pylith::bc::DirichletPointsDataTri3::DirichletPointsDataTri3(void)
-{ // constructor
-  id = _id;
-  label = const_cast<char*>(_label);
-
-  numDOF = _numDOF;
-  numFixedDOF = _numFixedDOF;
-  fixedDOF = const_cast<int*>(_fixedDOF);
-
-  numConstrainedPts = _numConstrainedPts;
-  constrainedPoints = const_cast<int*>(_constrainedPoints);
-
-  tRef = _tRef;
-  valueRate = _valueRate;
-  valuesInitial = const_cast<double*>(_valuesInitial);
-
-  meshFilename = const_cast<char*>(_meshFilename);
-  dbFilename = const_cast<char*>(_dbFilename);
-} // constructor
-
-pylith::bc::DirichletPointsDataTri3::~DirichletPointsDataTri3(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.hh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/DirichletPointsDataTri3.hh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#if !defined(pylith_bc_dirichletpointsdatatri3_hh)
-#define pylith_bc_dirichletpointsdatatri3_hh
-
-#include "DirichletPointsData.hh"
-
-namespace pylith {
-  namespace bc {
-     class DirichletPointsDataTri3;
-  } // pylith
-} // bc
-
-class pylith::bc::DirichletPointsDataTri3 : public DirichletPointsData
-{
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public: 
-
-  /// Constructor
-  DirichletPointsDataTri3(void);
-
-  /// Destructor
-  ~DirichletPointsDataTri3(void);
-
-// PRIVATE MEMBERS //////////////////////////////////////////////////////
-private:
-
-  static const int _numDOF; ///< Number of degrees of freedom at each point.
-
-  static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
-  static const int _numConstrainedPts; ///< Number of points constrained.
-
-  static const int _id; ///< Boundary condition identifier
-  static const char* _label; /// Label for boundary condition group
-
-  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 char* _meshFilename; ///< Filename of input mesh.
-  static const char* _dbFilename; ///< Filename of simple spatial database.
-};
-
-#endif // pylith_bc_dirichletpointsdatatri3_hh
-
-// End of file

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/quad4.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/quad4.spatialdb	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/quad4.spatialdb	2008-02-14 21:52:10 UTC (rev 9344)
@@ -12,5 +12,5 @@
   }
 }
 -1.0 -1.0    0.1  0.6
--1.0  1.0    0.5  0.3
+ 0.0 -1.0    0.5  0.3
  1.0 -1.0    0.4  0.2

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3.mesh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3.mesh	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3.mesh	2008-02-14 21:52:10 UTC (rev 9344)
@@ -54,7 +54,7 @@
     type = vertices
     count = 2
     indices = {
-      0  3
+      2  3
     }
   }
 }

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3_b.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3_b.spatialdb	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3_b.spatialdb	2008-02-14 21:52:10 UTC (rev 9344)
@@ -11,5 +11,5 @@
     space-dim = 2
   }
 }
--1.0  0.0  0.9
+ 0.0  1.0  0.9
  1.0  0.0  0.5

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3_b_rate.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3_b_rate.spatialdb	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3_b_rate.spatialdb	2008-02-14 21:52:10 UTC (rev 9344)
@@ -11,5 +11,5 @@
     space-dim = 2
   }
 }
--1.0  0.0  -0.4
+ 0.0  1.0  -0.4
  1.0  0.0   0.2

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/TestNeumann.py	2008-02-14 21:52:10 UTC (rev 9344)
@@ -182,7 +182,8 @@
     from pylith.bc.Neumann import Neumann
     bc = Neumann()
     bc._configure()
-    bc.id = 0
+    bc.output._configure()
+    bc.output.writer._configure()
     bc.label = "bc"
 
     from pylith.feassemble.FIATSimplex import FIATSimplex

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/testbc.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/testbc.py	2008-02-14 19:30:37 UTC (rev 9343)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/testbc.py	2008-02-14 21:52:10 UTC (rev 9344)
@@ -56,6 +56,9 @@
 
     suite = unittest.TestSuite()
 
+    from TestDirichletBoundary import TestDirichletBoundary
+    suite.addTest(unittest.makeSuite(TestDirichletBoundary))
+
     from TestDirichletPoints import TestDirichletPoints
     suite.addTest(unittest.makeSuite(TestDirichletPoints))
 



More information about the cig-commits mailing list