[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