[cig-commits] r14854 - in short/3D/PyLith/branches/pylith-swig: pylith/problems unittests/pytests/problems
brad at geodynamics.org
brad at geodynamics.org
Sun May 3 21:28:06 PDT 2009
Author: brad
Date: 2009-05-03 21:28:05 -0700 (Sun, 03 May 2009)
New Revision: 14854
Modified:
short/3D/PyLith/branches/pylith-swig/pylith/problems/Formulation.py
short/3D/PyLith/branches/pylith-swig/pylith/problems/Implicit.py
short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStep.py
short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepAdapt.py
short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepUniform.py
short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepUser.py
short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStep.py
short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepAdapt.py
short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepUniform.py
short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepUser.py
Log:
Fixed bugs associated with nondimensionalizing time stepping.
Modified: short/3D/PyLith/branches/pylith-swig/pylith/problems/Formulation.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/pylith/problems/Formulation.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/pylith/problems/Formulation.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -227,7 +227,7 @@
"""
Get total time for simulation.
"""
- return self.timeStep.totalTime
+ return self.timeStep.totalTimeN # Nondimensionalized total time
def getTimeStep(self):
Modified: short/3D/PyLith/branches/pylith-swig/pylith/problems/Implicit.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/pylith/problems/Implicit.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/pylith/problems/Implicit.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -131,7 +131,8 @@
"""
Get time at which time stepping should start.
"""
- dt = self.timeStep.currentStep()
+ dt = self.timeStep.timeStep(self.mesh,
+ self.integratorsMesh + self.integratorsSubMesh)
return -dt
Modified: short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStep.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStep.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStep.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -38,6 +38,8 @@
from pyre.units.time import second
self.totalTime = 0.0*second
self.dt = 0.0*second
+ self.totalTimeN = 0.0 # Nondimensionalized total time
+ self.dtN = 0.0 # Nondimenionalized time step
return
@@ -73,8 +75,8 @@
# Nondimensionalize time scales
timeScale = normalizer.timeScale()
- self.totalTime = normalizer.nondimensionalize(self.totalTime, timeScale)
- self.dt = normalizer.nondimensionalize(self.dt, timeScale)
+ self.totalTimeN = normalizer.nondimensionalize(self.totalTime, timeScale)
+ self.dtN = normalizer.nondimensionalize(self.dt, timeScale)
self._logger.eventEnd(logEvent)
return
@@ -93,14 +95,14 @@
Get stable time step for advancing forward in time.
"""
# Default is to use the current time step.
- return self.dt
+ return self.dtN
def currentStep(self):
"""
Get current time step size.
"""
- return self.dt
+ return self.dtN
# PRIVATE METHODS ////////////////////////////////////////////////////
Modified: short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepAdapt.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepAdapt.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepAdapt.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -79,6 +79,7 @@
TimeStep.__init__(self, name)
self._loggingPrefix = "DtAd "
self.skipped = 0
+ self.maxDtN = 0.0 # Nondimensionalized maximum time step
return
@@ -93,7 +94,7 @@
# Nondimensionalize time scales
timeScale = normalizer.timeScale()
- self.maxDt = normalizer.nondimensionalize(self.maxDt, timeScale)
+ self.maxDtN = normalizer.nondimensionalize(self.maxDt, timeScale)
self._logger.eventEnd(logEvent)
return
@@ -104,7 +105,7 @@
Get number of total time steps (or best guess if adaptive).
"""
# Guess using maximum time step
- nsteps = int(1.0 + self.totalTime / self.maxDt)
+ nsteps = int(1.0 + self.totalTimeN / self.maxDtN)
return nsteps
@@ -119,13 +120,13 @@
dtStable = dt
if self.skipped < self.adaptSkip and \
- self.dt != 0.0 and \
- self.dt < dtStable:
+ self.dtN != 0.0 and \
+ self.dtN < dtStable:
self.skipped += 1
else:
- self.dt = min(dtStable/self.stabilityFactor, self.maxDt)
+ self.dtN = min(dtStable/self.stabilityFactor, self.maxDtN)
self.skipped = 0
- return self.dt
+ return self.dtN
# PRIVATE METHODS ////////////////////////////////////////////////////
Modified: short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepUniform.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepUniform.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepUniform.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -71,7 +71,7 @@
"""
Get number of total time steps (or best guess if adaptive).
"""
- nsteps = int(1 + self.totalTime / self.dt)
+ nsteps = int(1 + self.totalTimeN / self.dtN)
return nsteps
@@ -79,7 +79,7 @@
"""
Adjust stable time step for advancing forward in time.
"""
- return self.dt
+ return self.dtN
# PRIVATE METHODS ////////////////////////////////////////////////////
Modified: short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepUser.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepUser.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/pylith/problems/TimeStepUser.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -115,11 +115,14 @@
# Nondimensionalize time steps
timeScale = normalizer.timeScale()
+ self.totalTimeN = normalizer.nondimensionalize(self.totalTime, timeScale)
for i in xrange(len(self.steps)):
- self.steps[i] = normalizer.nondimensionalize(self.steps[i], timeScale)
+ step = normalizer.nondimensionalize(self.steps[i], timeScale)
+ assert(step > 0.0)
+ self.steps[i] = step
# Set current time step
- self.dt = self.steps[self.index]
+ self.dtN = self.steps[self.index]
self._logger.eventEnd(logEvent)
return
@@ -129,11 +132,10 @@
"""
Get number of total time steps (or best guess if adaptive).
"""
- from pyre.units.time import second
t = 0.0
nsteps = 0
index = 0
- while t <= self.totalTime:
+ while t <= self.totalTimeN:
t += self.steps[index]
index += 1
if index >= len(self.steps):
@@ -149,12 +151,12 @@
"""
Get time step for advancing forward in time.
"""
- self.dt = self.steps[self.index]
+ self.dtN = self.steps[self.index]
if self.index+1 < len(self.steps):
self.index += 1
elif self.loopSteps:
self.index = 0
- return self.dt
+ return self.dtN
# PRIVATE METHODS ////////////////////////////////////////////////////
Modified: short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStep.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStep.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStep.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -113,7 +113,7 @@
self.assertEqual(0.0, tstep.currentStep())
- tstep.dt = 1.0e-4
+ tstep.dtN = 1.0e-4
self.assertEqual(1.0e-4, tstep.currentStep())
return
Modified: short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepAdapt.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepAdapt.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepAdapt.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -55,8 +55,8 @@
"""
tstep = self.tstep
- self.assertEqual(0.0, tstep.totalTime)
- self.assertEqual(0.5, tstep.maxDt)
+ self.assertEqual(0.0, tstep.totalTimeN)
+ self.assertEqual(0.5, tstep.maxDtN)
return
@@ -68,8 +68,8 @@
self.assertEqual(1, tstep.numTimeSteps())
- tstep.totalTime = 4.0
- tstep.maxDt = 2.0
+ tstep.totalTimeN = 4.0
+ tstep.maxDtN = 2.0
self.assertEqual(3, tstep.numTimeSteps())
return
@@ -130,8 +130,8 @@
Test currentStep().
"""
tstep = self.tstep
- tstep.maxDt = 10.0
- tstep.dt = tstep.maxDt
+ tstep.maxDtN = 10.0
+ tstep.dtN = tstep.maxDtN
self.assertEqual(10.0, tstep.currentStep())
Modified: short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepUniform.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepUniform.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepUniform.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -17,6 +17,7 @@
import unittest
from pylith.problems.TimeStepUniform import TimeStepUniform
+from spatialdata.units.Nondimensional import Nondimensional
from pyre.units.time import second
# ----------------------------------------------------------------------
@@ -25,17 +26,32 @@
Unit testing of TimeStepUniform object.
"""
- def test_numTimeSteps(self):
+ def setUp(self):
"""
- Test numTimeSteps().
+ Setup time step object.
"""
+ normalizer = Nondimensional()
+ normalizer._configure()
+
tstep = TimeStepUniform()
tstep._configure()
+ tstep.preinitialize()
+ tstep.verifyConfiguration()
+ tstep.initialize(normalizer)
+ self.tstep = tstep
+ return
+
+ def test_numTimeSteps(self):
+ """
+ Test numTimeSteps().
+ """
+ tstep = self.tstep
+
self.assertEqual(1, tstep.numTimeSteps())
- tstep.totalTime = 4.0*second
- tstep.dt = 2.0*second
+ tstep.totalTimeN = 4.0
+ tstep.dtN = 2.0
self.assertEqual(3, tstep.numTimeSteps())
return
@@ -45,16 +61,15 @@
"""
Test timeStep().
"""
- tstep = TimeStepUniform()
- tstep._configure()
+ tstep = self.tstep
integrators = None
mesh = None
- self.assertEqual(1.0*second, tstep.timeStep(mesh, integrators))
+ self.assertEqual(1.0, tstep.timeStep(mesh, integrators))
- tstep.dt = 1.0e-4*second
- self.assertEqual(1.0e-4*second, tstep.timeStep(mesh, integrators))
+ tstep.dtN = 1.0e-4
+ self.assertEqual(1.0e-4, tstep.timeStep(mesh, integrators))
return
@@ -63,13 +78,12 @@
"""
Test currentStep().
"""
- tstep = TimeStepUniform()
- tstep._configure()
+ tstep = self.tstep
- self.assertEqual(1.0*second, tstep.currentStep())
+ self.assertEqual(1.0, tstep.currentStep())
- tstep.dt = 1.0e-4*second
- self.assertEqual(1.0e-4*second, tstep.currentStep())
+ tstep.dtN = 1.0e-4
+ self.assertEqual(1.0e-4, tstep.currentStep())
return
Modified: short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepUser.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepUser.py 2009-05-04 02:11:09 UTC (rev 14853)
+++ short/3D/PyLith/branches/pylith-swig/unittests/pytests/problems/TestTimeStepUser.py 2009-05-04 04:28:05 UTC (rev 14854)
@@ -19,7 +19,7 @@
from pyre.units.time import second,year
-stepsE = [1.0*year, 2.0*year, 3.0*year]
+stepsE = [2*1.0, 2*2.0, 2*3.0]
# ----------------------------------------------------------------------
class TestTimeStepUser(unittest.TestCase):
@@ -31,7 +31,7 @@
from spatialdata.units.Nondimensional import Nondimensional
normalizer = Nondimensional()
normalizer._configure()
- normalizer.setTimeScale(2.0*second)
+ normalizer.setTimeScale(0.5*year)
tstep = TimeStepUser()
tstep._configure()
@@ -58,8 +58,7 @@
tstep = self.tstep
for stepE, step in zip(stepsE, tstep.steps):
- valueE = stepE.value / 2.0 # Nondimensionalize
- self.assertEqual(valueE, step)
+ self.assertEqual(stepE, step)
return
@@ -71,11 +70,11 @@
self.assertEqual(1, tstep.numTimeSteps())
- tstep.totalTime = (12.0*year).value / 2.0 # nondimensionalize
+ tstep.totalTimeN = 12.0 / 0.5 # nondimensionalize
self.assertEqual(6, tstep.numTimeSteps())
tstep.loopSteps = True
- tstep.totalTime = (7.0*year).value / 2.0 # nondimensionalize
+ tstep.totalTimeN = 7.0 / 0.5 # nondimensionalize
self.assertEqual(5, tstep.numTimeSteps())
return
@@ -86,9 +85,9 @@
"""
tstep = self.tstep
- step1 = (1.0*year).value / 2.0 # nondimensionalize
- step2 = (2.0*year).value / 2.0 # nondimensionalize
- step3 = (3.0*year).value / 2.0 # nondimensionalize
+ step1 = 1.0 / 0.5 # nondimensionalize
+ step2 = 2.0 / 0.5 # nondimensionalize
+ step3 = 3.0 / 0.5 # nondimensionalize
integrators = None
mesh = None
@@ -119,9 +118,8 @@
mesh = None
tstep.timeStep(mesh, integrators)
- stepE = 1.0*year
- valueE = stepE.value / 2.0 # nondimensionalize
- self.assertEqual(valueE, tstep.currentStep())
+ stepE = 1.0 / 0.5 # Nondimensionalize
+ self.assertEqual(stepE, tstep.currentStep())
return
More information about the CIG-COMMITS
mailing list