[cig-commits] r8221 - in short/3D/PyLith/trunk: . modulesrc/bc pylith/bc unittests/pytests/bc unittests/pytests/bc/data unittests/pytests/feassemble

brad at geodynamics.org brad at geodynamics.org
Wed Nov 7 10:07:57 PST 2007


Author: brad
Date: 2007-11-07 10:07:56 -0800 (Wed, 07 Nov 2007)
New Revision: 8221

Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src
   short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py
   short/3D/PyLith/trunk/unittests/pytests/bc/Makefile.am
   short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichlet.py
   short/3D/PyLith/trunk/unittests/pytests/bc/data/Makefile.am
   short/3D/PyLith/trunk/unittests/pytests/bc/testbc.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicit.py
Log:
Finished implementing AbsorbingDampers bindings and Python. Added Python unit tests. Updated TODO.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/TODO	2007-11-07 18:07:56 UTC (rev 8221)
@@ -15,20 +15,19 @@
 
 Release 1.1
 
-  1. Finish AbsorbingDampers BC.
-    Python
-    module
-    Python unit tests
+  1. Finish Neumann BC.
 
-  2. Finish Neumann BC.
+  2. Finish velocity Dirichlet BC.
 
-  3. Finish velocity Dirichlet BC.
+  3. Generalized Maxwell viscoelastic model
 
-  4. Generalized Maxwell viscoelastic model
+  4. Move PETSc logging out of modules.
 
-  5. Move PETSc logging out of feassemble module.
+    Logging class
+    LogIntegrator class
+    LogConstraint class
 
-  6. Reimplement SolutionIO.
+  5. Reimplement SolutionIO.
      a. Reimplement SolutionIOVTK
      b. Implement SolutionIOHDF5
 
@@ -112,6 +111,16 @@
 
   3. Experiment with different preconditioners and tabulate results
 
+Release 1.2
+
+  1. Dynamic fault interface conditions
+
+  2. Fault constitutive models
+
+  3. Nonlinear solver  
+
+  4. Replace use of Pyrexembed with SWIG
+
 ======================================================================
 KNOWN DEFICIENCIES
 ======================================================================
@@ -225,10 +234,6 @@
 THINGS WE NEED SIEVE TO DO (Matt)
 ======================================================================
 
-1. Boundary mesh
-
-  This works and there is a unit test.
-
 2. Construct mesh with higher order cells from mesh with lower order cells.
 
   Many mesh generators do not know how to construct higher order
@@ -261,10 +266,8 @@
   bool   interpolate = false;
   ALE::Obj<ALE::Mesh> newMesh = ALE::Generator::refineMesh(oldMesh, maxVolume, interpolate);
 
-  There is another version that takes an array of maxVolumes, one fo each cell in oldMesh.
+  There is another version that takes an array of maxVolumes, one for each cell in oldMesh.
 
-4. Check in nonlinear solver
-
 5. Throw out cohesive midnodes from censored depth (not easy since they are mixed in with new vertices, maybe change numbering)
 
 6. Coarsening for PyLith meshes
@@ -273,20 +276,14 @@
 
   Not used a. Remove extra time in uninterpolated restrict(). May need special method for P1.
 
-  Done b. Precompute element geometry
-
   Done c. getStateVars() is way to expensive. It looks like _getParameters() allocates an int_array. Try just using _numParamValues.
 
   Not used d. Same as a) for update
 
-  Done e. Put in flop counting for IR
-
 8. Memory fixes
 
   Done a. Share memory in precomputation sections
 
-9. Fixup FASTER improvements
-
 10. Move events to Python (make wrappers for events)
 
 ======================================================================

Modified: short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src	2007-11-07 18:07:56 UTC (rev 8221)
@@ -13,6 +13,8 @@
 #header{
 #include "pylith/bc/BoundaryCondition.hh"
 #include "pylith/feassemble/Constraint.hh"
+#include "pylith/feassemble/Integrator.hh"
+#include "pylith/bc/AbsorbingDampers.hh"
 #include "pylith/bc/Dirichlet.hh"
 
 #include "pylith/utils/array.hh"
@@ -415,4 +417,346 @@
       Dirichlet_useSolnIncr_set(self.thisptr, flag)
 
 
+# ----------------------------------------------------------------------
+cdef class AbsorbingDampers(BoundaryCondition):
+
+  cdef int assemblerCookie
+  cdef int integrateResidualEvent
+  cdef int integrateJacobianEvent
+  cdef int updateStateEvent
+
+  def __init__(self):
+    """
+    Constructor.
+    """
+    # create shim for constructor
+    #embed{ void* AbsorbingDampers_constructor()
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::bc::AbsorbingDampers);
+      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
+    #embed{ void AbsorbingDampers_setupLogging(int *cookie, int *residualEvent, int *jacobianEvent, int* updateStateEvent)
+      PetscLogClassRegister(cookie, "FE Assembler");
+      PetscLogEventRegister(residualEvent, "IntegrateResidual", *cookie);
+      PetscLogEventRegister(jacobianEvent, "IntegrateJacobian", *cookie);
+      PetscLogEventRegister(updateStateEvent, "IntegrateUpdateState", *cookie);
+    #}embed
+    BoundaryCondition.__init__(self)
+    self.thisptr = AbsorbingDampers_constructor()
+    self.handle = self._createHandle()
+    AbsorbingDampers_setupLogging(&self.assemblerCookie, &self.integrateResidualEvent, &self.integrateJacobianEvent, &self.updateStateEvent)
+    return
+
+
+    BoundaryCondition.__init__(self)
+    self.thisptr = Dirichlet_constructor()
+    self.handle = self._createHandle()
+
+  def integrateResidual(self, residual, t, fields, mesh):
+    """
+    Integrate contributions to residual term (r) for operator.
+    """
+    # create shim for method 'integrateResidual'
+    #embed{ void AbsorbingDampers_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr, int event)
+    try {
+      assert(0 != objVptr);
+      assert(0 != residualVptr);
+      assert(0 != fieldsVptr);
+      assert(0 != meshVptr);
+      ALE::Obj<ALE::Mesh>* mesh =
+        (ALE::Obj<ALE::Mesh>*) meshVptr;
+      ALE::Obj<pylith::real_section_type>* residual =
+        (ALE::Obj<pylith::real_section_type>*) residualVptr;
+      pylith::topology::FieldsManager* fields =
+        (pylith::topology::FieldsManager*) fieldsVptr;
+      PetscLogEventBegin(event,0,0,0,0);
+      ((pylith::bc::AbsorbingDampers*) objVptr)->integrateResidual(*residual,
+                                                            t, fields, *mesh);
+      PetscLogEventEnd(event,0,0,0,0);
+    } 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 mesh.name != "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument must be extension module type 'Mesh'."
+    AbsorbingDampers_integrateResidual(self.thisptr, 
+                                 PyCObject_AsVoidPtr(residual),
+                                 t,
+                                 ptrFromHandle(fields),
+                                 ptrFromHandle(mesh),
+                                 self.integrateResidualEvent)
+    return
+
+
+  def integrateJacobian(self, mat, t, fields, mesh):
+    """
+    Compute contributions to Jacobian matrix (A) associated with operator.
+    """
+    # create shim for method 'integrateJacobian'
+    #embed{ void AbsorbingDampers_integrateJacobian(void* objVptr, void* matVptr, double t, void* fieldsVptr, void* meshVptr, int event)
+    try {
+      assert(0 != objVptr);
+      assert(0 != matVptr);
+      assert(0 != fieldsVptr);
+      assert(0 != meshVptr);
+      ALE::Obj<ALE::Mesh>* mesh =
+        (ALE::Obj<ALE::Mesh>*) meshVptr;
+      PetscMat* mat = (PetscMat*) matVptr;
+      pylith::topology::FieldsManager* fields =
+        (pylith::topology::FieldsManager*) fieldsVptr;
+      PetscLogEventBegin(event,0,0,0,0);
+      ((pylith::bc::AbsorbingDampers*) objVptr)->integrateJacobian(
+                                                        mat, t, fields, *mesh);
+      PetscLogEventEnd(event,0,0,0,0);
+    } 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 mesh.name != "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument 'mesh' must be extension module type 'Mesh'."
+    AbsorbingDampers_integrateJacobian(self.thisptr,
+                                 PyCObject_AsVoidPtr(mat),
+                                 t,
+                                 ptrFromHandle(fields),
+                                 ptrFromHandle(mesh),
+                                 self.integrateJacobianEvent)
+    return
+
+
+  def updateState(self, t, field, mesh):
+    """
+    Update state variables as needed.
+    """
+    # create shim for method 'updateState'
+    #embed{ void AbsorbingDampers_updateState(void* objVptr, double t, void* fieldVptr, void* meshVptr, int event)
+    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;
+      PetscLogEventBegin(event,0,0,0,0);
+      ((pylith::bc::AbsorbingDampers*) objVptr)->updateState(t, *field, *mesh);
+      PetscLogEventEnd(event,0,0,0,0);
+    } 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 mesh.name != "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument 'mesh' must be extension module type 'Mesh'."
+    AbsorbingDampers_updateState(self.thisptr,
+                           t,
+                           PyCObject_AsVoidPtr(field),
+                           ptrFromHandle(mesh),
+                           self.updateStateEvent)
+    return
+
+
+  def verifyConfiguration(self, mesh):
+    """
+    Verify compatibility of configuration settings.
+    """
+    # create shim for method 'verifyConfiguration'
+    #embed{ void AbsorbingDampers_verifyConfiguration(void* objVptr, void* meshVptr)
+    try {
+      assert(0 != objVptr);
+      assert(0 != meshVptr);
+      ALE::Obj<ALE::Mesh>* mesh =
+        (ALE::Obj<ALE::Mesh>*) meshVptr;
+      ((pylith::bc::AbsorbingDampers*) objVptr)->verifyConfiguration(*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 mesh.name != "pylith_topology_Mesh":
+      raise TypeError, \
+            "Argument 'mesh' must be extension module type 'Mesh'."
+    AbsorbingDampers_verifyConfiguration(self.thisptr,
+                                   ptrFromHandle(mesh))
+    return
+
+
+  def _createHandle(self):
+    """
+    Wrap pointer to C++ object in PyCObject.
+    """
+    return PyCObject_FromVoidPtr(self.thisptr, BoundaryCondition_destructor)
+
+
+  property quadrature:
+    def __set__(self, q):
+      """
+      Set quadrature.
+      """
+      # create shim for method 'quadrature'
+      #embed{ void AbsorbingDampers_quadrature_set(void* objVptr, void* qVptr)
+      try {
+        assert(0 != objVptr);
+        pylith::feassemble::Quadrature* quadrature =
+          (pylith::feassemble::Quadrature*) qVptr;
+        ((pylith::bc::AbsorbingDampers*) objVptr)->quadrature(quadrature);
+      } 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 q.name == "pylith_feassemble_Quadrature":
+        raise TypeError, \
+              "Argument must be extension module type 'Quadrature'."
+      AbsorbingDampers_quadrature_set(self.thisptr, ptrFromHandle(q))
+
+
+  property timeStep:
+    def __set__(self, dt):
+      """
+      Set timeStep.
+      """
+      # create shim for method 'timeStep'
+      #embed{ void AbsorbingDampers_timeStep_set(void* objVptr, double dt)
+      try {
+        assert(0 != objVptr);
+        ((pylith::bc::AbsorbingDampers*) objVptr)->timeStep(dt);
+      } 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
+      AbsorbingDampers_timeStep_set(self.thisptr, dt)
+
+
+  property stableTimeStep:
+    def __get__(self):
+      """
+      Get stable time step.
+      """
+      # create shim for method 'stableTimeStep'
+      #embed{ double AbsorbingDampers_stableTimeStep_get(void* objVptr)
+      double result = 0.0;
+      try {
+        assert(0 != objVptr);
+        result =
+          ((pylith::bc::AbsorbingDampers*) objVptr)->stableTimeStep();
+      } 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
+      return AbsorbingDampers_stableTimeStep_get(self.thisptr)
+
+
+  property needNewJacobian:
+    def __get__(self):
+      """
+      Set timeStep.
+      """
+      # create shim for method 'needNewJacobian'
+      #embed{ int AbsorbingDampers_needNewJacobian_get(void* objVptr)
+      int result = 0;
+      try {
+        assert(0 != objVptr);
+        result =
+          ((pylith::bc::AbsorbingDampers*) objVptr)->needNewJacobian();
+      } 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
+      return AbsorbingDampers_needNewJacobian_get(self.thisptr)
+
+
+  property useSolnIncr:
+    def __set__(self, flag):
+      """
+      Set solution increment flag.
+      """
+      # create shim for method 'useSolnIncr'
+      #embed{ void AbsorbingDampers_useSolnIncr_set(void* objVptr, int flag)
+      try {
+        assert(0 != objVptr);
+        ((pylith::bc::AbsorbingDampers*) 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
+      AbsorbingDampers_useSolnIncr_set(self.thisptr, flag)
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py	2007-11-07 18:07:56 UTC (rev 8221)
@@ -43,11 +43,15 @@
     ## @li None
     ##
     ## \b Facilities
-    ## @li None
+    ## @li \b quadrature Quadrature object for numerical integration
 
     import pyre.inventory
 
+    from pylith.feassemble.quadrature.Quadrature import Quadrature
+    quadrature = pyre.inventory.facility("quadrature", factory=Quadrature)
+    quadrature.meta['tip'] = "Quadrature object for numerical integration."
 
+
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
   def __init__(self, name="absorbingdampers"):
@@ -64,6 +68,7 @@
     Do pre-initialization setup.
     """
     BoundaryCondition.preinitialize(self, mesh)
+    self.quadrature.preinitialize()
     return
 
 
@@ -71,10 +76,25 @@
     """
     Initialize AbsorbingDampers boundary condition.
     """
+    self.cppHandle.quadrature = self.quadrature.cppHandle
     BoundaryCondition.initialize(self)
     return
   
 
+  def verifyConfiguration(self):
+    """
+    Verify compatibility of configuration.
+    """
+    BoundaryCondition.verifyConfiguration(self)
+    if self.quadrature.spaceDim != self.mesh.dimension-1:
+        raise ValueError, \
+              "Quadrature scheme and mesh are incompatible.\n" \
+              "Dimension for quadrature: %d\n" \
+              "Dimension of mesh boundary '%s': %d" % \
+              (self.quadrature.spaceDim, self.label, self.mesh.dimension-1)    
+    return
+  
+
   # PRIVATE METHODS ////////////////////////////////////////////////////
 
   def _configure(self):
@@ -82,7 +102,6 @@
     Setup members using inventory.
     """
     BoundaryCondition._configure(self)
-    self.fixedDOF = self.inventory.fixedDOF
     return
 
 

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/Makefile.am	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/Makefile.am	2007-11-07 18:07:56 UTC (rev 8221)
@@ -20,6 +20,7 @@
 check_SCRIPTS = testbc.py
 
 noinst_PYTHON = \
+	TestAbsorbingDampers.py \
 	TestDirichlet.py \
 	TestBCSingle.py \
 	TestBCTwoSides.py \

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichlet.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichlet.py	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/TestDirichlet.py	2007-11-07 18:07:56 UTC (rev 8221)
@@ -60,22 +60,6 @@
     return
 
 
-  def test_finalize(self):
-    """
-    Test finalize().
-
-    WARNING: This is not a rigorous test of finalize() because we
-    don't verify the results.
-    """
-    from pylith.bc.Dirichlet import Dirichlet
-    bc = Dirichlet()
-    bc.finalize()
-
-    # We should really add something here to check to make sure things
-    # actually initialized correctly    
-    return
-
-
   def test_setConstraintSizes(self):
     """
     Test setConstraintSizes().
@@ -151,7 +135,6 @@
     neither set the input fields or verify the results.
     """
     (mesh, bc) = self._initialize()
-
     bc.finalize()
 
     # We should really add something here to check to make sure things
@@ -167,17 +150,16 @@
     """
     from pylith.bc.Dirichlet import Dirichlet
     bc = Dirichlet()
+    bc._configure()
     bc.id = 0
     bc.label = "bc"
     bc.fixedDOF = [1]
 
     from spatialdata.spatialdb.SimpleDB import SimpleDB
-    from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
-    iohandler = SimpleIOAscii()
-    iohandler.filename = "data/tri3.spatialdb"
     db = SimpleDB()
+    db._configure()
     db.label = "TestDirichlet tri3"
-    db.iohandler = iohandler
+    db.iohandler.filename = "data/tri3.spatialdb"
     db.initialize()
     bc.db = db
 

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/data/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/data/Makefile.am	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/data/Makefile.am	2007-11-07 18:07:56 UTC (rev 8221)
@@ -12,7 +12,8 @@
 
 noinst_DATA = \
 	tri3.spatialdb \
-	tri3.mesh
+	tri3.mesh \
+	elasticplanestrain.spatialdb
 
 noinst_TMP =
 

Modified: short/3D/PyLith/trunk/unittests/pytests/bc/testbc.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/bc/testbc.py	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/unittests/pytests/bc/testbc.py	2007-11-07 18:07:56 UTC (rev 8221)
@@ -59,6 +59,9 @@
     from TestDirichlet import TestDirichlet
     suite.addTest(unittest.makeSuite(TestDirichlet))
 
+    from TestAbsorbingDampers import TestAbsorbingDampers
+    suite.addTest(unittest.makeSuite(TestAbsorbingDampers))
+
     from TestBCSingle import TestBCSingle
     suite.addTest(unittest.makeSuite(TestBCSingle))
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicit.py	2007-11-07 18:07:56 UTC (rev 8221)
@@ -90,8 +90,7 @@
     from pyre.units.time import second
     dt = 2.4*second
     integrator = ElasticityExplicit()
-    integrator.timeStep = dt
-    self.assertEqual(dt, integrator.timeStep)
+    integrator.timeStep(dt)
     return
 
   

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicit.py	2007-11-07 02:34:01 UTC (rev 8220)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicit.py	2007-11-07 18:07:56 UTC (rev 8221)
@@ -90,8 +90,7 @@
     from pyre.units.time import second
     dt = 2.4*second
     integrator = ElasticityImplicit()
-    integrator.timeStep = dt
-    self.assertEqual(dt, integrator.timeStep)
+    integrator.timeStep(dt)
     return
 
   



More information about the cig-commits mailing list