[cig-commits] r6159 - in short/3D/PyLith/trunk: examples/twotri3 pylith pylith/feassemble pylith/feassemble/quadrature pylith/materials pylith/meshio pylith/problems pylith/solver pylith/topology pylith/utils

brad at geodynamics.org brad at geodynamics.org
Thu Mar 1 22:47:58 PST 2007


Author: brad
Date: 2007-03-01 22:47:56 -0800 (Thu, 01 Mar 2007)
New Revision: 6159

Added:
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1D.py
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1Din2D.py
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1Din3D.py
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature2D.py
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature2Din3D.py
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature3D.py
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/__init__.py
   short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic1D.py
   short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic2D.py
   short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic3D.py
Removed:
   short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py
   short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic.py
Modified:
   short/3D/PyLith/trunk/examples/twotri3/pylithapp.cfg
   short/3D/PyLith/trunk/pylith/Makefile.am
   short/3D/PyLith/trunk/pylith/PyLithApp.py
   short/3D/PyLith/trunk/pylith/__init__.py
   short/3D/PyLith/trunk/pylith/feassemble/ExplicitElasticity.py
   short/3D/PyLith/trunk/pylith/feassemble/FIATCell.py
   short/3D/PyLith/trunk/pylith/feassemble/FIATLagrange.py
   short/3D/PyLith/trunk/pylith/feassemble/FIATSimplex.py
   short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
   short/3D/PyLith/trunk/pylith/feassemble/IntegratorExplicit.py
   short/3D/PyLith/trunk/pylith/feassemble/ReferenceCell.py
   short/3D/PyLith/trunk/pylith/feassemble/__init__.py
   short/3D/PyLith/trunk/pylith/materials/Homogeneous.py
   short/3D/PyLith/trunk/pylith/materials/Material.py
   short/3D/PyLith/trunk/pylith/materials/MaterialsBin.py
   short/3D/PyLith/trunk/pylith/materials/__init__.py
   short/3D/PyLith/trunk/pylith/meshio/MeshIO.py
   short/3D/PyLith/trunk/pylith/meshio/MeshIOAscii.py
   short/3D/PyLith/trunk/pylith/meshio/__init__.py
   short/3D/PyLith/trunk/pylith/problems/EqDeformation.py
   short/3D/PyLith/trunk/pylith/problems/Explicit.py
   short/3D/PyLith/trunk/pylith/problems/Formulation.py
   short/3D/PyLith/trunk/pylith/problems/Problem.py
   short/3D/PyLith/trunk/pylith/problems/TimeDependent.py
   short/3D/PyLith/trunk/pylith/problems/__init__.py
   short/3D/PyLith/trunk/pylith/solver/Solver.py
   short/3D/PyLith/trunk/pylith/solver/__init__.py
   short/3D/PyLith/trunk/pylith/topology/Mesh.py
   short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py
   short/3D/PyLith/trunk/pylith/topology/MeshImporter.py
   short/3D/PyLith/trunk/pylith/topology/__init__.py
   short/3D/PyLith/trunk/pylith/utils/CheckpointTimer.py
   short/3D/PyLith/trunk/pylith/utils/CppData.py
   short/3D/PyLith/trunk/pylith/utils/PetscManager.py
   short/3D/PyLith/trunk/pylith/utils/__init__.py
   short/3D/PyLith/trunk/pylith/utils/testarray.py
Log:
Added factory functions. Broke files with multiple classes into separate files (permit use of factory functions). Cleaned up a little code here and there too.

Modified: short/3D/PyLith/trunk/examples/twotri3/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twotri3/pylithapp.cfg	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/examples/twotri3/pylithapp.cfg	2007-03-02 06:47:56 UTC (rev 6159)
@@ -1,25 +1,29 @@
 [pylithapp]
 
 # ----------------------------------------------------------------------
-# Journal
+# journal
 # ----------------------------------------------------------------------
 journal.info.eqdeformation = 1
 journal.info.explicit = 1
 journal.info.petsc = 1
 journal.info.meshioascii = 1
+journal.info.homogeneous = 1
+journal.info.explicitelasticity = 1
 
 # ----------------------------------------------------------------------
-# MPI
+# launcher
 # ----------------------------------------------------------------------
 #launcher.command = mpiexec
 
 # ----------------------------------------------------------------------
-# Mesh
+# mesh_generator
 # ----------------------------------------------------------------------
 mesh_generator.importer.filename = twotri3.mesh
 
 # ----------------------------------------------------------------------
-# Solution
+# problem
 # ----------------------------------------------------------------------
 eqdeformation.total_time = 1.0*s
 eqdeformation.default_dt = 1.0*s
+eqdeformation.homogeneous.material.quadrature = pylith.feassemble.quadrature.Quadrature2D
+eqdeformation.homogeneous.material.quadrature.cell.shape = triangle

Modified: short/3D/PyLith/trunk/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/pylith/Makefile.am	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/Makefile.am	2007-03-02 06:47:56 UTC (rev 6159)
@@ -19,10 +19,19 @@
 	feassemble/FIATSimplex.py \
 	feassemble/Integrator.py \
 	feassemble/IntegratorExplicit.py \
-	feassemble/Quadrature.py \
 	feassemble/ReferenceCell.py \
+	feassemble/quadrature/Quadrature.py \
+	feassemble/quadrature/Quadrature1D.py \
+	feassemble/quadrature/Quadrature1Din2D.py \
+	feassemble/quadrature/Quadrature1Din3D.py \
+	feassemble/quadrature/Quadrature2D.py \
+	feassemble/quadrature/Quadrature2Din3D.py \
+	feassemble/quadrature/Quadrature3D.py \
+	feassemble/quadrature/__init__.py \
 	materials/__init__.py \
-	materials/ElasticIsotropic.py \
+	materials/ElasticIsotropic1D.py \
+	materials/ElasticIsotropic2D.py \
+	materials/ElasticIsotropic3D.py \
 	materials/Homogeneous.py \
 	materials/Material.py \
 	materials/MaterialsBin.py \

Modified: short/3D/PyLith/trunk/pylith/PyLithApp.py
===================================================================
--- short/3D/PyLith/trunk/pylith/PyLithApp.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/PyLithApp.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,7 +11,7 @@
 #
 
 ## @file pylith/PyLithApp.py
-
+##
 ## @brief Python PyLith application
 
 #from mpi.Application import Application
@@ -49,16 +49,19 @@
     totalTime.meta['tip'] = "Time duration for simulation."
 
     from pylith.topology.MeshImporter import MeshImporter
-    mesher = pyre.inventory.facility("mesh_generator", factory=MeshImporter)
+    mesher = pyre.inventory.facility("mesh_generator", family="mesh_generator",
+                                     factory=MeshImporter)
     mesher.meta['tip'] = "Generates or imports the computational mesh."
 
     from pylith.problems.EqDeformation import EqDeformation
-    problem = pyre.inventory.facility("problem", factory=EqDeformation)
+    problem = pyre.inventory.facility("problem", family="problem",
+                                      factory=EqDeformation)
     problem.meta['tip'] = "Computational problem to solve."
 
     # Dummy facility for passing options to PETSc
     from pylith.utils.PetscManager import PetscManager
-    petsc = pyre.inventory.facility("petsc", factory=PetscManager)
+    petsc = pyre.inventory.facility("petsc", family="petsc_manager",
+                                    factory=PetscManager)
     petsc.meta['tip'] = "Manager for PETSc options."
 
 

Modified: short/3D/PyLith/trunk/pylith/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -14,7 +14,14 @@
 
 ## @brief Python top-level PyLith module initialization
 
-all = ['PyLithApp']
+__all__ = ['PyLithApp',
+           'feassemble',
+           'materials',
+           'meshio',
+           'problems',
+           'solver',
+           'topology',
+           'utils']
 
 
 # End of file

Modified: short/3D/PyLith/trunk/pylith/feassemble/ExplicitElasticity.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/ExplicitElasticity.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/ExplicitElasticity.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/feassemble/ExplicitElasticity.py
-
+##
 ## @brief Python object for explicit time integration of dynamic
 ## elasticity equation using finite-elements.
+##
+## Factory: integrator
 
 from IntegratorExplicit import IntegratorExplicit
 
@@ -37,9 +39,9 @@
     return
 
 
-  def initialize(self, mesh, material):
+  def initMaterial(self, mesh, material):
     """
-    Initialize C++ integrator object.
+    Initialize material properties.
     """
     self._info.log("Initializing integrator for material '%s'." % \
                    material.matname)
@@ -47,8 +49,17 @@
     
     self.material = material
     self.cppHandle.material = self.material.cppHandle
-    self.cppHandle.createParameters(mesh.cppHandle)
+    #self.cppHandle.createParameters(mesh.cppHandle)
     return
   
   
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def integrator():
+  """
+  Factory associated with ExplicitElasticity.
+  """
+  return ExplicitElasticity()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/feassemble/FIATCell.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/FIATCell.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/FIATCell.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/feassemble/FIATCell.py
-
+##
 ## @brief Python object for managing basis functions and quadrature
 ## rules of a reference finite-element cell using FIAT.
+##
+## Factory: reference_cell.
 
 from ReferenceCell import ReferenceCell
 
@@ -24,6 +26,8 @@
   """
   Python object for managing basis functions and quadrature rules of a
   reference finite-element cell using FIAT.
+
+  Factory: reference_cell.
   """
 
   # PUBLIC METHODS /////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/pylith/feassemble/FIATLagrange.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/FIATLagrange.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/FIATLagrange.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/feassemble/FIATLagrange.py
-
+##
 ## @brief Python object for managing basis functions and quadrature
 ## rules of a Lagrange reference finite-element cell using FIAT.
+##
+## Factory: reference_cell.
 
 from FIATCell import FIATCell
 
@@ -29,6 +31,8 @@
   """
   Python object for managing basis functions and quadrature rules of a
   Lagrange reference finite-element cell using FIAT.
+
+  Factory: reference_cell.
   """
 
   # INVENTORY //////////////////////////////////////////////////////////
@@ -105,6 +109,13 @@
 
     return
 
+# FACTORIES ////////////////////////////////////////////////////////////
 
+def reference_cell():
+  """
+  Factory associated with FIATLagrange.
+  """
+  return FIATLagrange()
 
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/feassemble/FIATSimplex.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/FIATSimplex.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/FIATSimplex.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/feassemble/FIATSimplex.py
-
+##
 ## @brief Python object for managing basis functions and quadrature
 ## rules of a simplex reference finite-element cell using FIAT.
+##
+## Factory: reference_cell.
 
 from FIATCell import FIATCell
 
@@ -28,13 +30,15 @@
                      "cell.\n" \
                      "Known shapes: 'tetrahedron', 'triangle', 'line'" % \
                      name)
-  return
+  return name
 
 # FIATSimplex class
 class FIATSimplex(FIATCell):
   """
   Python object for managing basis functions and quadrature rules of a
   simplex reference finite-element cell using FIAT.
+
+  Factory: reference_cell.
   """
 
   # INVENTORY //////////////////////////////////////////////////////////
@@ -124,4 +128,13 @@
     return shape
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def reference_cell():
+  """
+  Factory associated with FIATSimplex.
+  """
+  return FIATSimplex()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Integrator.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/Integrator.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/feassemble/Integrator.py
-
+##
 ## @brief Python abstract base class for integration of operator
 ## actions with finite-elements.
+##
+## Factory: fe_integrator.
 
 from pyre.components.Component import Component
 
@@ -22,6 +24,8 @@
   """
   Python abstract base class for integration of actions with
   finite-elements.
+
+  Factory: integrator.
   """
 
   # PUBLIC METHODS /////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/pylith/feassemble/IntegratorExplicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/IntegratorExplicit.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/IntegratorExplicit.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,17 +11,21 @@
 #
 
 ## @file pylith/feassemble/IntegratorExplicit.py
-
+##
 ## @brief Python object for explicit time integration of actions with
 ## finite-elements.
+##
+## Factory: integrator
 
 from Integrator import Integrator
 
 # IntegratorInertia class
-class IntegratorInertia(Integrator):
+class IntegratorExplicit(Integrator):
   """
-  Python object for integration of inertial operator actions with
+  Python object for explicit integration of operator actions with
   finite-elements.
+
+  Factory: integrator.
   """
 
   # PUBLIC METHODS /////////////////////////////////////////////////////

Deleted: short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -1,217 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pylith/feassemble/Qudrature.py
-
-## @brief Python abstract base class for integrating over
-## finite-elements using quadrature.
-
-from pyre.components.Component import Component
-
-# ----------------------------------------------------------------------
-# Quadrature class
-class Quadrature(Component):
-  """
-  Python abstract base class for integrating over finite-elements
-  using quadrature.
-  """
-
-  # INVENTORY //////////////////////////////////////////////////////////
-
-  class Inventory(Component.Inventory):
-    """Python object for managing Quadrature facilities and properties."""
-
-    ## @class Inventory
-    ## Python object for managing Quadrature facilities and properties.
-    ##
-    ## \b Properties
-    ## @li \b min_jacobian Minimum allowable determinant of Jacobian.
-    ##
-    ## \b Facilities
-    ## @li \b cell Reference cell with basis functions and quadrature rules
-
-    import pyre.inventory
-
-    minJacobian = pyre.inventory.float("min_jacobian", default=1.0e-06)
-    minJacobian.meta['tip'] = "Minimum allowable determinant of Jacobian."
-
-    from FIATSimplex import FIATSimplex
-    cell = pyre.inventory.facility("cell", factory=FIATSimplex)
-    cell.meta['tip'] = "Reference cell with basis fns and quadrature rules."
-
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="quadrature"):
-    """
-    Constructor.
-    """
-    Component.__init__(self, name, facility="quadrature")
-    self.minJacobian = 1.0e-06
-    self.cppHandle = None
-    self.spaceDim = None
-    return
-
-  def initialize(self):
-    """
-    Initialize C++ quadrature object.
-    """
-    self.cppHandle.minJacobian = self.minJacobian
-
-    c = self.cell
-    c.initialize()
-
-    if c.cellDim != self.cellDim:
-      raise TypeError("Dimension of reference cell '%d' does not match "
-                      "dimension of quadrature implementation '%d'." % \
-                      (c.cellDim, self.cellDim))
-
-    
-    self.cppHandle.initialize(c.basis, c.basisDeriv, c.quadPts, c.quadWts,
-                              c.cellDim, c.numCorners, c.numQuadPts,
-                              self.spaceDim)
-    return
-
-
-  # PRIVATE METHODS ////////////////////////////////////////////////////
-
-  def _configure(self):
-    """
-    Set members based using inventory.
-    """
-    Component._configure(self)
-    self.minJacobian = self.inventory.minJacobian
-    self.cell = self.inventory.cell
-    return
-
-
-# ----------------------------------------------------------------------
-# Quadrature1D class
-class Quadrature1D(Quadrature):
-  """
-  Python object for integrating over 1-D finite-elements in a 1-D
-  domain using quadrature.
-  """
-
-  def __init__(self, name="quadrature1d"):
-    """
-    Constructor.
-    """
-    Quadrature.__init__(self, name)
-    import pylith.feassemble.feassemble as bindings
-    self.cppHandle = bindings.Quadrature1D()
-    self.spaceDim = 1
-    self.cellDim = 1
-    return
-
-
-# ----------------------------------------------------------------------
-# Quadrature1Din2D class
-class Quadrature1Din2D(Quadrature):
-  """
-  Python object for integrating over 1-D finite-elements in a 2-D
-  domain using quadrature.
-  """
-
-  def __init__(self, name="quadrature1din2d"):
-    """
-    Constructor.
-    """
-    Quadrature.__init__(self, name)
-    import pylith.feassemble.feassemble as bindings
-    self.cppHandle = bindings.Quadrature1Din2D()
-    self.spaceDim = 2
-    self.cellDim = 1
-    return
-
-
-# ----------------------------------------------------------------------
-# Quadrature1Din3D class
-class Quadrature1Din3D(Quadrature):
-  """
-  Python object for integrating over 1-D finite-elements in a 3-D
-  domain using quadrature.
-  """
-
-  def __init__(self, name="quadrature1din3d"):
-    """
-    Constructor.
-    """
-    Quadrature.__init__(self, name)
-    import pylith.feassemble.feassemble as bindings
-    self.cppHandle = bindings.Quadrature1Din3D()
-    self.spaceDim = 3
-    self.cellDim = 1
-    return
-
-
-# ----------------------------------------------------------------------
-# Quadrature2D class
-class Quadrature2D(Quadrature):
-  """
-  Python object for integrating over 2-D finite-elements in a 2-D
-  domain using quadrature.
-  """
-
-  def __init__(self, name="quadrature2d"):
-    """
-    Constructor.
-    """
-    Quadrature.__init__(self, name)
-    import pylith.feassemble.feassemble as bindings
-    self.cppHandle = bindings.Quadrature2D()
-    self.spaceDim = 2
-    self.cellDim = 2
-    return
-
-
-# ----------------------------------------------------------------------
-# Quadrature2Din3D class
-class Quadrature2Din3D(Quadrature):
-  """
-  Python object for integrating over 2-D finite-elements in a 3-D
-  domain using quadrature.
-  """
-
-  def __init__(self, name="quadrature2din3d"):
-    """
-    Constructor.
-    """
-    Quadrature.__init__(self, name)
-    import pylith.feassemble.feassemble as bindings
-    self.cppHandle = bindings.Quadrature2Din3D()
-    self.spaceDim = 3
-    self.cellDim = 2
-    return
-
-
-# ----------------------------------------------------------------------
-# Quadrature3D class
-class Quadrature3D(Quadrature):
-  """
-  Python object for integrating over 3-D finite-elements in a 3-D
-  domain using quadrature.
-  """
-
-  def __init__(self, name="quadrature3d"):
-    """
-    Constructor.
-    """
-    Quadrature.__init__(self, name)
-    import pylith.feassemble.feassemble as bindings
-    self.cppHandle = bindings.Quadrature3D()
-    self.spaceDim = 3
-    self.cellDim = 3
-    return
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/pylith/feassemble/ReferenceCell.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/ReferenceCell.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/ReferenceCell.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/feassemble/ReferenceCell.py
-
+##
 ## @brief Python abstract base class for managing basis functions and
 ## quadrature rules of a reference finite-element cell.
+##
+## Factory: reference_cell.
 
 from pyre.components.Component import Component
 
@@ -22,6 +24,8 @@
   """
   Python abstract base class for managing basis functions and
   quadrature rules of a reference finite-element cell.
+
+  Factory: reference_cell.
   """
 
   # PUBLIC METHODS /////////////////////////////////////////////////////
@@ -30,7 +34,7 @@
     """
     Constructor.
     """
-    Component.__init__(self, name, facility="referencecell")
+    Component.__init__(self, name, facility="reference_cell")
 
     self.basis = None # numpy array w/basis fns at quad pts
     self.basisDeriv = None # numpy array w/basis fn derivs at quad pts

Modified: short/3D/PyLith/trunk/pylith/feassemble/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,17 +11,17 @@
 #
 
 ## @file pylith/feassemble/__init__.py
-
+##
 ## @brief Python PyLith finite-element assembler module initialization
 
-all = ['ExplicitElasticity',
-       'FIATCell',
-       'FIATLagrange',
-       'FIATSimplex',
-       'Integrator',
-       'IntegratorExplicit',
-       'Quadrature',
-       'ReferenceCell']
+__all__ = ['ExplicitElasticity',
+           'FIATCell',
+           'FIATLagrange',
+           'FIATSimplex',
+           'Integrator',
+           'IntegratorExplicit',
+           'ReferenceCell',
+           'quadrature']
 
 
 # End of file

Copied: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py (from rev 6156, short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Quadrature.py	2007-03-02 04:55:59 UTC (rev 6156)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,103 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/Qudrature.py
+##
+## @brief Python abstract base class for integrating over
+## finite-elements using quadrature.
+##
+## Factory: quadrature.
+
+from pyre.components.Component import Component
+
+# ----------------------------------------------------------------------
+# Quadrature class
+class Quadrature(Component):
+  """
+  Python abstract base class for integrating over finite-elements
+  using quadrature.
+
+  Factory: quadrature.
+  """
+
+  # INVENTORY //////////////////////////////////////////////////////////
+
+  class Inventory(Component.Inventory):
+    """Python object for managing Quadrature facilities and properties."""
+
+    ## @class Inventory
+    ## Python object for managing Quadrature facilities and properties.
+    ##
+    ## \b Properties
+    ## @li \b min_jacobian Minimum allowable determinant of Jacobian.
+    ##
+    ## \b Facilities
+    ## @li \b cell Reference cell with basis functions and quadrature rules
+
+    import pyre.inventory
+
+    minJacobian = pyre.inventory.float("min_jacobian", default=1.0e-06)
+    minJacobian.meta['tip'] = "Minimum allowable determinant of Jacobian."
+
+    from pylith.feassemble.FIATSimplex import FIATSimplex
+    cell = pyre.inventory.facility("cell", family="reference_cell",
+                                   factory=FIATSimplex)
+    cell.meta['tip'] = "Reference cell with basis fns and quadrature rules."
+
+
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="quadrature"):
+    """
+    Constructor.
+    """
+    Component.__init__(self, name, facility="quadrature")
+    self.minJacobian = 1.0e-06
+    self.cppHandle = None
+    self.spaceDim = None
+    return
+
+
+  def initialize(self):
+    """
+    Initialize C++ quadrature object.
+    """
+    self.cppHandle.minJacobian = self.minJacobian
+
+    c = self.cell
+    c.initialize()
+
+    if c.cellDim != self.cellDim:
+      raise TypeError("Dimension of reference cell '%d' does not match "
+                      "dimension of quadrature implementation '%d'." % \
+                      (c.cellDim, self.cellDim))
+
+    
+    self.cppHandle.initialize(c.basis, c.basisDeriv, c.quadPts, c.quadWts,
+                              c.cellDim, c.numCorners, c.numQuadPts,
+                              self.spaceDim)
+    return
+
+
+  # PRIVATE METHODS ////////////////////////////////////////////////////
+
+  def _configure(self):
+    """
+    Set members based using inventory.
+    """
+    Component._configure(self)
+    self.minJacobian = self.inventory.minJacobian
+    self.cell = self.inventory.cell
+    return
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1D.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1D.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/Qudrature1D.py
+##
+## @brief Python object implementing 1-D integration in 1-D space
+## using numerical quadrature.
+##
+## Factory: quadrature
+
+from Quadrature import Quadrature
+
+# Quadrature1D class
+class Quadrature1D(Quadrature):
+  """
+  Python object for integrating over 1-D finite-elements in a 1-D
+  domain using quadrature.
+
+  Factory: quadrature.
+  """
+
+  def __init__(self, name="quadrature1d"):
+    """
+    Constructor.
+    """
+    Quadrature.__init__(self, name)
+    import pylith.feassemble.feassemble as bindings
+    self.cppHandle = bindings.Quadrature1D()
+    self.spaceDim = 1
+    self.cellDim = 1
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def quadrature():
+  """
+  Factory associated with Quadrature1D.
+  """
+  return Quadrature1D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1Din2D.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1Din2D.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1Din2D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/Qudrature1Din2D.py
+##
+## @brief Python object implementing 1-D integration in 2-D space
+## using numerical quadrature.
+##
+## Factory: quadrature
+
+from Quadrature import Quadrature
+
+# Quadrature1Din2D class
+class Quadrature1Din2D(Quadrature):
+  """
+  Python object for integrating over 1-D finite-elements in a 2-D
+  domain using quadrature.
+
+  Factory: quadrature.
+  """
+
+  def __init__(self, name="quadrature1din2d"):
+    """
+    Constructor.
+    """
+    Quadrature.__init__(self, name)
+    import pylith.feassemble.feassemble as bindings
+    self.cppHandle = bindings.Quadrature1Din2D()
+    self.spaceDim = 2
+    self.cellDim = 1
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def quadrature():
+  """
+  Factory associated with Quadrature1Din2D.
+  """
+  return Quadrature1Din2D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1Din3D.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1Din3D.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature1Din3D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/Qudrature1Din3D.py
+##
+## @brief Python object implementing 1-D integration in 3-D space
+## using numerical quadrature.
+##
+## Factory: quadrature
+
+from Quadrature import Quadrature
+
+# Quadrature1Din3D class
+class Quadrature1Din3D(Quadrature):
+  """
+  Python object for integrating over 1-D finite-elements in a 3-D
+  domain using quadrature.
+
+  Factory: quadrature.
+  """
+
+  def __init__(self, name="quadrature1din3d"):
+    """
+    Constructor.
+    """
+    Quadrature.__init__(self, name)
+    import pylith.feassemble.feassemble as bindings
+    self.cppHandle = bindings.Quadrature1Din3D()
+    self.spaceDim = 3
+    self.cellDim = 1
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def quadrature():
+  """
+  Factory associated with Quadrature1D.
+  """
+  return Quadrature1D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature2D.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature2D.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature2D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/Qudrature2D.py
+##
+## @brief Python object implementing 2-D integration in 2-D space
+## using numerical quadrature.
+##
+## Factory: quadrature
+
+from Quadrature import Quadrature
+
+# Quadrature2D class
+class Quadrature2D(Quadrature):
+  """
+  Python object for integrating over 2-D finite-elements in a 2-D
+  domain using quadrature.
+
+  Factory: quadrature.
+  """
+
+  def __init__(self, name="quadrature2d"):
+    """
+    Constructor.
+    """
+    Quadrature.__init__(self, name)
+    import pylith.feassemble.feassemble as bindings
+    self.cppHandle = bindings.Quadrature2D()
+    self.spaceDim = 2
+    self.cellDim = 2
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def quadrature():
+  """
+  Factory associated with Quadrature2D.
+  """
+  return Quadrature2D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature2Din3D.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature2Din3D.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature2Din3D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/Qudrature2Din3D.py
+##
+## @brief Python object implementing 2-D integration in 3-D space
+## using numerical quadrature.
+##
+## Factory: quadrature
+
+from Quadrature import Quadrature
+
+# Quadrature2Din3D class
+class Quadrature2Din3D(Quadrature):
+  """
+  Python object for integrating over 2-D finite-elements in a 3-D
+  domain using quadrature.
+
+  Factory: quadrature.
+  """
+
+  def __init__(self, name="quadrature2din3d"):
+    """
+    Constructor.
+    """
+    Quadrature.__init__(self, name)
+    import pylith.feassemble.feassemble as bindings
+    self.cppHandle = bindings.Quadrature2Din3D()
+    self.spaceDim = 3
+    self.cellDim = 2
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def quadrature():
+  """
+  Factory associated with Quadrature2Din3D.
+  """
+  return Quadrature2Din3D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature3D.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature3D.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature3D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/Qudrature3D.py
+##
+## @brief Python object implementing 3-D integration in 3-D space
+## using numerical quadrature.
+##
+## Factory: quadrature
+
+from Quadrature import Quadrature
+
+# Quadrature3D class
+class Quadrature3D(Quadrature):
+  """
+  Python object for integrating over 3-D finite-elements in a 3-D
+  domain using quadrature.
+
+  Factory: quadrature.
+  """
+
+  def __init__(self, name="quadrature3d"):
+    """
+    Constructor.
+    """
+    Quadrature.__init__(self, name)
+    import pylith.feassemble.feassemble as bindings
+    self.cppHandle = bindings.Quadrature3D()
+    self.spaceDim = 3
+    self.cellDim = 3
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def quadrature():
+  """
+  Factory associated with Quadrature3D.
+  """
+  return Quadrature3D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/feassemble/quadrature/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/quadrature/__init__.py
+##
+## @brief Python PyLith finite-element assembler quadrature module
+## initialization
+
+__all__ = ['Quadrature',
+           'Quadrature1D',
+           'Quadrature1Din2D',
+           'Quadrature1Din3D',
+           'Quadrature2D',
+           'Quadrature2Din3D',
+           'Quadrature3D']
+
+
+# End of file

Deleted: short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic.py
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -1,85 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pylith/materials/ElasticIsotropic.py
-
-## @brief Python objects implementing isotropic linear elastic materials.
-
-from Material import Material
-
-# import pylith.materials.materials as bindings
-
-
-# ======================================================================
-# ElasticIsotropic1D class
-
-## @brief Python object implementing 1-D isotropic linear elastic material.
-class ElasticIsotropic3D(Material):
-  """
-  Python object implementing 1-D isotropic linear elastic material.
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="elasticisotropic1d"):
-    """
-    Constructor.
-    """
-    Material.__init__(self, name)
-    # :TODO: Need to create module for materials
-    # self.cppHandle = bindings.ElasticIsotropic1D()
-    return
-
-
-# ======================================================================
-# ElasticIsotropic2D class
-
-## @brief Python object implementing 2-D isotropic linear elastic material.
-class ElasticIsotropic2D(Material):
-  """
-  Python object implementing 2-D isotropic linear elastic material.
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="elasticisotropic2d"):
-    """
-    Constructor.
-    """
-    Material.__init__(self, name)
-    # :TODO: Need to create module for materials
-    # self.cppHandle = bindings.ElasticIsotropic2D()
-    return
-
-
-# ======================================================================
-# ElasticIsotropic3D class
-
-## @brief Python object implementing 3-D isotropic linear elastic material.
-class ElasticIsotropic3D(Material):
-  """
-  Python object implementing 3-D isotropic linear elastic material.
-  """
-
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-
-  def __init__(self, name="elasticisotropic3d"):
-    """
-    Constructor.
-    """
-    Material.__init__(self, name)
-    # :TODO: Need to create module for materials
-    # self.cppHandle = bindings.ElasticIsotropic3D()
-    return
-
-
-# End of file 

Copied: short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic1D.py (from rev 6156, short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic.py	2007-03-02 04:55:59 UTC (rev 6156)
+++ short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic1D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/materials/ElasticIsotropic1D.py
+##
+## @brief Python object implementing 1-D isotropic linear elastic material.
+##
+## Factory: material.
+
+from Material import Material
+
+# import pylith.materials.materials as bindings
+
+
+# ElasticIsotropic1D class
+class ElasticIsotropic3D(Material):
+  """
+  Python object implementing 1-D isotropic linear elastic material.
+
+  Factory: material.
+  """
+
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="elasticisotropic1d"):
+    """
+    Constructor.
+    """
+    Material.__init__(self, name)
+    # :TODO: Need to create module for materials
+    # self.cppHandle = bindings.ElasticIsotropic1D()
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def material():
+  """
+  Factory associated with ElasticIsotropic1D.
+  """
+  return ElasticIsotropic1D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic2D.py
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic2D.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic2D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/materials/ElasticIsotropic1D.py
+##
+## @brief Python object implementing 2-D isotropic linear elastic material.
+##
+## Factory: material.
+
+from Material import Material
+
+# import pylith.materials.materials as bindings
+
+
+# ElasticIsotropic2D class
+class ElasticIsotropic2D(Material):
+  """
+  Python object implementing 2-D isotropic linear elastic material.
+
+  Factory: material.
+  """
+
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="elasticisotropic2d"):
+    """
+    Constructor.
+    """
+    Material.__init__(self, name)
+    # :TODO: Need to create module for materials
+    # self.cppHandle = bindings.ElasticIsotropic2D()
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def material():
+  """
+  Factory associated with ElasticIsotropic2D.
+  """
+  return ElasticIsotropic2D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic3D.py
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic3D.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/materials/ElasticIsotropic3D.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/materials/ElasticIsotropic1D.py
+##
+## @brief Python object implementing 3-D isotropic linear elastic material.
+##
+## Factory: material.
+
+from Material import Material
+
+# import pylith.materials.materials as bindings
+
+
+# ElasticIsotropic3D class
+class ElasticIsotropic3D(Material):
+  """
+  Python object implementing 3-D isotropic linear elastic material.
+
+  Factory: material.
+  """
+
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="elasticisotropic3d"):
+    """
+    Constructor.
+    """
+    Material.__init__(self, name)
+    # :TODO: Need to create module for materials
+    # self.cppHandle = bindings.ElasticIsotropic3D()
+    return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def material():
+  """
+  Factory associated with ElasticIsotropic3D.
+  """
+  return ElasticIsotropic3D()
+
+
+# End of file 

Modified: short/3D/PyLith/trunk/pylith/materials/Homogeneous.py
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/Homogeneous.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/materials/Homogeneous.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,10 @@
 #
 
 ## @file pylith/materials/Homogeneous.py
-
+##
 ## @brief Python materials container with one material.
+##
+## Factory: materials_bin
 
 from MaterialsBin import MaterialsBin
 
@@ -20,6 +22,8 @@
 class Homogeneous(MaterialsBin):
   """
   Python materials container with one material.
+
+  Factory: materials_bin
   """
 
   # INVENTORY //////////////////////////////////////////////////////////
@@ -41,7 +45,8 @@
     import pyre.inventory
 
     from ElasticIsotropic import ElasticIsotropic3D
-    material = pyre.inventory.facility("material", factory=ElasticIsotropic3D)
+    material = pyre.inventory.facility("material", family="material",
+                                       factory=ElasticIsotropic3D)
     material.meta['tip'] = "Material in problem."
 
 
@@ -66,4 +71,13 @@
     return
 
   
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def materials_bin():
+  """
+  Factory associated with Homogeneous.
+  """
+  return Homogeneous()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/materials/Material.py
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/Material.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/materials/Material.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,18 @@
 #
 
 ## @file pylith/materials/Material.py
+##
 
-## @brief Python material property manager.
+## @brief Python abstract base class for managing physical properties
+## of a material.
+##
+## This implementation of a material associates both physical
+## properties and a quadrature scheme with the material. Thus,
+## applying different quadrature schemes within a region with the same
+## physical property database requires two "materials", which can use
+## the same database.  a material.
+##
+## Factory: material
 
 from pyre.components.Component import Component
 
@@ -86,6 +96,7 @@
     """
     Setup members using inventory.
     """
+    Component._configure(self)
     self.id = self.inventory.id
     self.matname = self.inventory.matname
     self.db = self.inventory.db

Modified: short/3D/PyLith/trunk/pylith/materials/MaterialsBin.py
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/MaterialsBin.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/materials/MaterialsBin.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,10 @@
 #
 
 ## @file pylith/materials/MaterialsBin.py
-
+##
 ## @brief Python container for materials.
+##
+## Factory: materials_bin
 
 from pyre.components.Component import Component
 
@@ -20,6 +22,8 @@
 class MaterialsBin(Component):
   """
   Python container for materials.
+
+  Factory: materials_bin
   """
 
   # PUBLIC METHODS /////////////////////////////////////////////////////
@@ -28,7 +32,7 @@
     """
     Constructor.
     """
-    Component.__init__(self, name, facility="materialsbin")
+    Component.__init__(self, name, facility="materials_bin")
     self.materials = []
     return
 

Modified: short/3D/PyLith/trunk/pylith/materials/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/materials/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -14,10 +14,12 @@
 
 ## @brief Python PyLith materials module initialization
 
-all = ['ElasticIsotropic',
-       'Homogeneous',
-       'Material',
-       'MaterialsBin']
+__all__ = ['ElasticIsotropic1D',
+           'ElasticIsotropic2D',
+           'ElasticIsotropic3D',
+           'Homogeneous',
+           'Material',
+           'MaterialsBin']
 
 
 # End of file

Modified: short/3D/PyLith/trunk/pylith/meshio/MeshIO.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/MeshIO.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/meshio/MeshIO.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,10 @@
 #
 
 ## @file pyre/meshio/MeshIO.py
-
+##
 ## @brief Python abstract base class for finite-element mesh I/O.
+##
+## Factory: mesh_io
 
 from pyre.components.Component import Component
 
@@ -25,8 +27,12 @@
   # INVENTORY //////////////////////////////////////////////////////////
 
   class Inventory(Component.Inventory):
-    """Python object for managing MeshIO facilities and properties."""
+    """
+    Python object for managing MeshIO facilities and properties.
 
+    Factory: mesh.
+    """
+
     ## @class Inventory
     ## Python object for managing MeshIO facilities and properties.
     ##
@@ -47,10 +53,8 @@
   def __init__(self, name="meshio"):
     """
     Constructor.
-
-    @param name Component name
     """
-    Component.__init__(self, name, facility="meshio")
+    Component.__init__(self, name, facility="mesh_io")
     self.cppHandle = None
     self.interpolate = False
     return

Modified: short/3D/PyLith/trunk/pylith/meshio/MeshIOAscii.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/MeshIOAscii.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/meshio/MeshIOAscii.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pyre/meshio/MeshIOAscii.py
-
+##
 ## @brief Python object for reading/writing finite-element mesh from
 ## simple ASCII file.
+##
+## Factory: mesh_io
 
 from MeshIO import MeshIO
 
@@ -22,6 +24,8 @@
   """
   Python object for reading/writing finite-element mesh from simple
   ASCII file.
+
+  Factory: mesh_io
   """
 
   # INVENTORY //////////////////////////////////////////////////////////
@@ -79,4 +83,13 @@
     return
   
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def mesh_io():
+  """
+  Factory associated with MeshIOAscii.
+  """
+  return MeshIOAscii()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/meshio/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/meshio/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,12 +11,11 @@
 #
 
 ## @file pylith/meshio___init__.py
-## @brief Python meshio PyLith module initialization
+##
+## @brief Python PyLith meshio module initialization
 
-all = ['MeshIO',
-       'MeshIOAscii']
+__all__ = ['MeshIO',
+           'MeshIOAscii']
 
-# version
-__id__ = "$Id$"
 
 # End of file

Modified: short/3D/PyLith/trunk/pylith/problems/EqDeformation.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/EqDeformation.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/problems/EqDeformation.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/problems/EqDeformation.py
-
+##
 ## @brief Python EqDeformation for computing deformation associated
 ## with earthquakes.
+##
+## Factory: problem.
 
 from TimeDependent import TimeDependent
 
@@ -22,6 +24,8 @@
   """
   Python EqDeformation for computing deformation associated with
   earthquakes.
+
+  Factory: problem.
   """
 
   # INVENTORY //////////////////////////////////////////////////////////
@@ -43,7 +47,8 @@
     import pyre.inventory
 
     #from Faults import Faults
-    #faults = pyre.inventory.facility("faults", factory=Faults)
+    #faults = pyre.inventory.facility("faults", family="faults",
+    #                                 factory=Faults)
     #faults.meta['tip'] = "Faults or interior slip surfaces."
 
 
@@ -83,4 +88,13 @@
     return
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def problem():
+  """
+  Factory associated with EqDeformation.
+  """
+  return EqDeformation()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/problems/Explicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Explicit.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/problems/Explicit.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/problems/Explicit.py
-
+##
 ## @brief Python Explicit object for solving equations using an
 ## explicit formulation.
+##
+## Factory: pde_formulation
 
 from Formulation import Formulation
 
@@ -27,6 +29,8 @@
   where we want to solve for {u(t+dt)}, A(t) is usually constant
   (i.e., independent of time), and {b(t)} usually depends on {u(t)}
   and {u(t-dt)}.
+
+  Factory: pde_formulation.
   """
 
   # INVENTORY //////////////////////////////////////////////////////////
@@ -63,7 +67,7 @@
     return
 
 
-  def initialize(self, mesh, materials):
+  def initialize(self, mesh, materialsBin):
     """
     Create explicit integrators for each element family.
     """
@@ -71,9 +75,9 @@
     from pylith.feassemble.ExplicitElasticity import ExplicitElasticity
     
     self.integrators = []
-    for material in materials:
+    for material in materialsBin.materials:
       integrator = ExplicitElasticity()
-      integrator.initQuadrature(material.quadrature)
+      #integrator.initQuadrature(material.quadrature)
       #integrator.initMaterial(mesh, material)
       self.integrators.append(integrator)
     return
@@ -140,4 +144,13 @@
     return
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def pde_formulation():
+  """
+  Factory associated with Explicit.
+  """
+  return Explicit()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/problems/Formulation.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Formulation.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/problems/Formulation.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,10 @@
 #
 
 ## @file pylith/problems/Formulation.py
-
+##
 ## @brief Python abstract base class for formulations of solving equations.
+##
+## Factory: pde_formulation
 
 from pyre.components.Component import Component
 
@@ -23,6 +25,8 @@
 
   In general, we use some explicit or implicit formulation of the PDEs
   to create a linear form, [A]{u}={b} that we can solve.
+
+  Factory: pde_formulation.
   """
 
   # INVENTORY //////////////////////////////////////////////////////////
@@ -54,7 +58,7 @@
     """
     Constructor.
     """
-    Component.__init__(self, name)
+    Component.__init__(self, name, facility="pde_formulation")
     self.integrators = None
     return
 
@@ -94,5 +98,13 @@
     return
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
 
+def pde_formulation():
+  """
+  Factory associated with Formulation.
+  """
+  return Formulation()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/problems/Problem.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Problem.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/problems/Problem.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,10 @@
 #
 
 ## @file pylith/problems/Problem.py
-
+##
 ## @brief Python abstract base class for crustal dynamics problems.
+##
+## Factory: problem.
 
 from pyre.components.Component import Component
 
@@ -20,6 +22,8 @@
 class Problem(Component):
   """
   Python abstract base class for crustal dynamics problems.
+
+  Factory: problem.
   """
   
   # INVENTORY //////////////////////////////////////////////////////////
@@ -42,11 +46,13 @@
     import pyre.inventory
 
     from pylith.materials.Homogeneous import Homogeneous
-    materials = pyre.inventory.facility("materials", factory=Homogeneous)
+    materials = pyre.inventory.facility("materials", family="materials",
+                                        factory=Homogeneous)
     materials.meta['tip'] = "Materials in problem."
 
     #from BoundaryConditions import BoundaryConditions
-    #bc = pyre.inventory.facility("bc", factory=BoundaryConditions)
+    #bc = pyre.inventory.facility("bc", familty="bc",
+    #                             factory=BoundaryConditions)
     #bc.meta['tip'] = "Boundary conditions."
   
 
@@ -92,10 +98,20 @@
     """
     Set members based using inventory.
     """
+    Component._configure(self)
     self.materials = self.inventory.materials
     #self.bc = self.inventory.bc
     self.formulation = self.inventory.formulation
     return
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def problem():
+  """
+  Factory associated with Problem.
+  """
+  return Problem()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/problems/TimeDependent.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/TimeDependent.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/problems/TimeDependent.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,11 @@
 #
 
 ## @file pylith/problems/TimeDependent.py
-
+##
 ## @brief Python abstract base class for time dependent crustal
 ## dynamics problems.
+##
+## Factory: problem.
 
 from Problem import Problem
 
@@ -21,6 +23,8 @@
 class TimeDependent(Problem):
   """
   Python abstract base class for time dependent crustal dynamics problems.
+
+  Factory: problem.
   """
   
   # INVENTORY //////////////////////////////////////////////////////////
@@ -53,11 +57,14 @@
     dt.meta['tip'] = "Default time step for simulation."
 
     from Explicit import Explicit
-    formulation = pyre.inventory.facility("formulation", factory=Explicit)
+    formulation = pyre.inventory.facility("formulation",
+                                          family="pde_formulation",
+                                          factory=Explicit)
     formulation.meta['tip'] = "Formulation for solving PDE."
 
     from pylith.utils.CheckpointTimer import CheckpointTimer
     checkpointTimer = pyre.inventory.facility("checkpoint",
+                                              family="checkpointer",
                                               factory=CheckpointTimer)
     checkpointTimer.meta['tip'] = "Checkpoint manager."
 
@@ -170,4 +177,13 @@
     return
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def problem():
+  """
+  Factory associated with TimeDependent.
+  """
+  return TimeDependent()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/problems/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/problems/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,13 +11,13 @@
 #
 
 ## @file pylith/problems/__init__.py
-
+##
 ## @brief Python PyLith crustal dynamics problems module initialization
 
-all = ['EqDeformation',
-       'Explicit',
-       'Problem',
-       'TimeDependent']
+__all__ = ['EqDeformation',
+           'Explicit',
+           'Problem',
+           'TimeDependent']
 
 
 # End of file

Modified: short/3D/PyLith/trunk/pylith/solver/Solver.py
===================================================================
--- short/3D/PyLith/trunk/pylith/solver/Solver.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/solver/Solver.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,18 +11,27 @@
 #
 
 ## @file pylith/solver/Solver.py
+##
 ## @brief Python PyLith abstract base class for solver.
+##
+## Factory: solver
 
 from pyre.components.Component import Component
 
 # Solver class
 class Solver(Component):
-  """Python abstract base class for solver."""
+  """
+  Python abstract base class for solver.
 
+  Factory: solver.
+  """
+
   # INVENTORY //////////////////////////////////////////////////////////
 
   class Inventory(Component.Inventory):
-    """Python object for managing Solver facilities and properties."""
+    """
+    Python object for managing Solver facilities and properties.
+    """
 
     ## @class Inventory
     ## Python object for managing Solver facilities and properties.
@@ -38,7 +47,9 @@
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
   def __init__(self, name="solver"):
-    """Constructor."""
+    """
+    Constructor.
+    """
     Component.__init__(self, name, facility="solver")
     return
 
@@ -46,7 +57,10 @@
   # PRIVATE METHODS /////////////////////////////////////////////////////
 
   def _configure(self):
-    """Set members based using inventory."""
+    """
+    Set members based using inventory.
+    """
+    Component._configure(self)
     return
 
 

Modified: short/3D/PyLith/trunk/pylith/solver/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/solver/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/solver/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,9 +11,10 @@
 #
 
 ## @file pylith/solver/__init__.py
+##
 ## @brief Python Pylith solver module initialization
 
-all = ['Solver']
+__all__ = ['Solver']
 
 
 # End of file

Modified: short/3D/PyLith/trunk/pylith/topology/Mesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/Mesh.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/topology/Mesh.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,10 @@
 #
 
 ## @file pylith/topology/Mesh.py
-
+##
 ## @brief Python Mesh for finite-element topology information.
+##
+## Factory: finite_element_mesh
 
 from pyre.components.Component import Component
 
@@ -41,7 +43,8 @@
     import pyre.inventory
 
     from spatialdata.geocoords.CSCart import CSCart
-    coordsys = pyre.inventory.facility("coordsys", factory=CSCart)
+    coordsys = pyre.inventory.facility("coordsys", family="coordsys",
+                                       factory=CSCart)
     coordsys.meta['tip'] = "Coordinate system associated with mesh."
   
   # PUBLIC METHODS /////////////////////////////////////////////////////
@@ -50,7 +53,7 @@
     """
     Constructor.
     """
-    Component.__init__(self, name, facility="mesh")
+    Component.__init__(self, name, facility="finite_element_mesh")
     import pylith.topology.topology as bindings
     self.cppHandle = bindings.Mesh()
     return
@@ -70,8 +73,18 @@
     """
     Set members based using inventory.
     """
+    Component._configure(self)
     self.coordsys = self.inventory.coordsys
     return
   
 
-# End of file 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def finite_element_mesh():
+  """
+  Factory associated with Mesh.
+  """
+  return Mesh()
+
+
+# End of file

Modified: short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,10 @@
 #
 
 ## @file pylith/topology/MeshGenerator.py
-
+##
 ## @brief Python abstract base class for mesh generator.
+##
+## Factory: mesh_generator.
 
 from pyre.components.Component import Component
 
@@ -20,6 +22,8 @@
 class MeshGenerator(Component):
   """
   Python abstract base class for mesh generator.
+
+  Factory: mesh_generator
   """
 
   # PUBLIC METHODS /////////////////////////////////////////////////////
@@ -28,7 +32,7 @@
     """
     Constructor.
     """
-    Component.__init__(self, name, facility="meshgenerator")
+    Component.__init__(self, name, facility="mesh_generator")
     return
 
 

Modified: short/3D/PyLith/trunk/pylith/topology/MeshImporter.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/MeshImporter.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/topology/MeshImporter.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,8 +11,10 @@
 #
 
 ## @file pylith/topology/MeshImporter.py
-
+##
 ## @brief Python implementation of importing a mesh.
+##
+## Factory: mesh_generator.
 
 from MeshGenerator import MeshGenerator
 
@@ -20,6 +22,8 @@
 class MeshImporter(MeshGenerator):
   """
   Python implementation of importing a mesh.
+
+  Factory: mesh_generator.
   """
 
   # INVENTORY //////////////////////////////////////////////////////////
@@ -68,8 +72,18 @@
     """
     Set members based on inventory.
     """
+    MeshGenerator._configure(self)
     self.importer = self.inventory.importer
     return
   
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def mesh_generator():
+  """
+  Factory associated with MeshImporter.
+  """
+  return MeshImporter()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/topology/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/topology/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -14,9 +14,9 @@
 
 ## @brief Python PyLith finite-element topology module initialization
 
-all = ['Mesh',
-       'MeshGenerator',
-       'MeshImporter']
+__all__ = ['Mesh',
+           'MeshGenerator',
+           'MeshImporter']
 
 
 # End of file

Modified: short/3D/PyLith/trunk/pylith/utils/CheckpointTimer.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/CheckpointTimer.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/utils/CheckpointTimer.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,15 +11,17 @@
 #
 
 ## @file pylith/utils/CheckpointTimer.py
-
+##
 ## @brief Python CheckpointTimer object for managing checkpointing.
-
+##
 ## USAGE:
 ##
-## @li Set toplevel attribute to top-level object that contains a
-## checkpoint() method.
+## @li Call initialize with argument 'toplevel' set to top-level
+## object that contains a checkpoint() method.
 ##
 ## @li Call update() every time step to checkpoint at desired frequency.
+##
+## Factory: checkpointer.
 
 from pyre.components.Component import Component
 
@@ -27,6 +29,15 @@
 class CheckpointTimer(Component):
   """
   Python CheckpointTimer object for managing checkpointing.
+
+  USAGE:
+
+  (1) Call initialize with argument 'toplevel' set to top-level object
+  that contains a checkpoint() method.
+
+  (2) Call update() every time step to checkpoint at desired frequency.
+
+  Factory: checkpointer.
   """
   
   # INVENTORY //////////////////////////////////////////////////////////
@@ -55,11 +66,11 @@
 
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
-  def __init__(self, name="checkpoint"):
+  def __init__(self, name="checkpointtimer"):
     """
     Constructor.
     """
-    Component.__init__(self, name, facility="checkpoint")
+    Component.__init__(self, name, facility="checkpointer")
 
     from pyre.units.time import second
     self.t = -8.9e+99*second
@@ -68,6 +79,14 @@
     return
 
 
+  def initialize(self, toplevel):
+    """
+    Initialize checkpoint timer.
+    """
+    self.toplevel = toplevel
+    return
+  
+
   def update(self, t):
     """
     CheckpointTimer if necessary.
@@ -93,4 +112,13 @@
     return
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def checkpointer():
+  """
+  Factory associated with CheckpointTimer.
+  """
+  return CheckpointTimer()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/utils/CppData.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/CppData.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/utils/CppData.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,15 +11,17 @@
 #
 
 ## @file pylith/utils/CppData.py
-
+##
 ## @brief Python object to create C++ object holding data values.
-
+##
 ## Useful in unit testing of C++ objects where data is generate with
 ## Python code.
 ##
 ## If parent property is set, we assume object is providing only the
 ## data, so data is private and object needs a constructor and
 ## destructor. Otherwise, object just has public data and no methods.
+##
+## Factory: cpp_data
 
 from pyre.components.Component import Component
 
@@ -35,6 +37,15 @@
   class Inventory(Component.Inventory):
     """
     Python object for managing CppData facilities and properties.
+
+    Useful in unit testing of C++ objects where data is generate with
+    Python code.
+
+    If parent property is set, we assume object is providing only the
+    data, so data is private and object needs a constructor and
+    destructor. Otherwise, object just has public data and no methods.
+
+    Factory: cpp_data
     """
 
     ## @class Inventory
@@ -70,7 +81,7 @@
     """
     Constructor.
     """
-    Component.__init__(self, name, facility="cppdata")
+    Component.__init__(self, name, facility="cpp_data")
     self.scalars = []
     self.arrays = []
     self.app = ""
@@ -118,6 +129,7 @@
     """
     Set members based using inventory.
     """
+    Component._configure(self)
     self.header = self.inventory.header
     self.objname = self.inventory.objname
     self.namespace = self.inventory.namespace
@@ -299,4 +311,13 @@
     return
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def cpp_data():
+  """
+  Factory associated with CppData.
+  """
+  return CppData()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/utils/PetscManager.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/PetscManager.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/utils/PetscManager.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -11,11 +11,13 @@
 #
 
 ## @file pylith/utils/PetscManager.py
-
+##
 ## @brief Python PetscManager object for managing PETSc options.
-
+##
 ## The PetscManager also takes care of initializing and finalizing
 ## PETSc.
+##
+## Factory: petsc_manager
 
 from pyre.components.Component import Component
 
@@ -23,6 +25,8 @@
 class PetscManager(Component):
   """
   Python PetscManager object for managing PETSc options.
+
+  Factory: petsc_manager
   """
 
   # PUBLIC METHODS /////////////////////////////////////////////////////
@@ -31,7 +35,7 @@
     """
     Constructor.
     """
-    Component.__init__(self, name, facility="petsc")
+    Component.__init__(self, name, facility="petsc_manager")
     self.options = []
     return
 
@@ -86,4 +90,13 @@
     return args
 
 
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def petsc_manager():
+  """
+  Factory associated with PetscManager.
+  """
+  return PetscManager()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/utils/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/__init__.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/utils/__init__.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -10,10 +10,10 @@
 # ----------------------------------------------------------------------
 #
 
-all = ['CheckpointTimer',
-       'CppData',
-       'testarray',
-       'importing']
+__all__ = ['CheckpointTimer',
+           'CppData',
+           'testarray',
+           'importing']
 
 
 # End of file

Modified: short/3D/PyLith/trunk/pylith/utils/testarray.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/testarray.py	2007-03-02 05:28:50 UTC (rev 6158)
+++ short/3D/PyLith/trunk/pylith/utils/testarray.py	2007-03-02 06:47:56 UTC (rev 6159)
@@ -32,3 +32,6 @@
         obj.assertAlmostEqual(1.0, v/vE, 6)
 
     return
+
+
+# End of file



More information about the cig-commits mailing list