[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