[cig-commits] r12057 - in short/3D/PyLith/trunk/pylith: feassemble problems
willic3 at geodynamics.org
willic3 at geodynamics.org
Thu May 29 12:50:01 PDT 2008
Author: willic3
Date: 2008-05-29 12:50:01 -0700 (Thu, 29 May 2008)
New Revision: 12057
Modified:
short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
short/3D/PyLith/trunk/pylith/problems/Formulation.py
Log:
Added GravityField and made associated changes.
Gravity should now be included in integrateResidual for implicit elasticity
problems. Also, coordinate system is now passed along with mesh object for
anything that uses integrateResidual.
Body forces have not yet been tested, but they do not appear to break any
of the unit tests. New unit tests and examples will need to be added.
Modified: short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Integrator.py 2008-05-29 19:49:13 UTC (rev 12056)
+++ short/3D/PyLith/trunk/pylith/feassemble/Integrator.py 2008-05-29 19:50:01 UTC (rev 12057)
@@ -56,6 +56,7 @@
Constructor.
"""
self.quadrature = None
+ self.gravityField = None
self.mesh = None
return
@@ -140,7 +141,8 @@
assert(None != self.cppHandle)
self.cppHandle.integrateResidual(residual, t.value, fields.cppHandle,
- self.mesh.cppHandle)
+ self.mesh.cppHandle,
+ self.mesh.coordsys.cppHandle)
self._logger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/problems/Formulation.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Formulation.py 2008-05-29 19:49:13 UTC (rev 12056)
+++ short/3D/PyLith/trunk/pylith/problems/Formulation.py 2008-05-29 19:50:01 UTC (rev 12057)
@@ -53,14 +53,18 @@
## Python object for managing Formulation facilities and properties.
##
## \b Properties
- ## @li None
+ ## @li useGravity Gravity on (true) or off (false).
##
## \b Facilities
## @li \b solver Algebraic solver.
## @li \b output Output manager associated with solution.
+ ## @li \b gravityField Gravity field for problem (SpatialDB).
import pyre.inventory
+ useGravity = pyre.inventory.bool("use_gravity", default=False)
+ useGravity.meta['tip'] = "Use gravitational acceleration for problem."
+
from pylith.solver.SolverLinear import SolverLinear
solver = pyre.inventory.facility("solver", family="solver",
factory=SolverLinear)
@@ -72,6 +76,12 @@
factory=SingleOutput)
output.meta['tip'] = "Output managers associated with solution."
+ from spatialdata.spatialdb.GravityField import GravityField
+ gravityField = pyre.inventory.facility("gravity_field",
+ factory=GravityField,
+ family="spatial_database")
+ gravityField.meta['tip'] = "Database used for gravity field."
+
# PUBLIC METHODS /////////////////////////////////////////////////////
@@ -151,8 +161,13 @@
self.fields = FieldsManager(self.mesh)
self._debug.log(resourceUsageString())
+ self._info.log("Initializing gravity field.")
+ from spatialdata.spatialdb.GravityField import GravityField
+ self.gravityField.initialize()
+
self._info.log("Initializing integrators.")
for integrator in self.integrators:
+ integrator.gravityField(self.gravityField)
integrator.initialize(totalTime, numTimeSteps)
self._debug.log(resourceUsageString())
@@ -270,6 +285,10 @@
Component._configure(self)
self.solver = self.inventory.solver
self.output = self.inventory.output
+ if (self.useGravity):
+ self.gravityField = self.inventory.gravityField
+ else:
+ self.gravityField = None
import journal
self._debug = journal.debug(self.name)
More information about the cig-commits
mailing list