[cig-commits] r8377 - in short/3D/PyLith/trunk/pylith: . bc feassemble meshio problems topology

brad at geodynamics.org brad at geodynamics.org
Tue Dec 4 16:06:33 PST 2007


Author: brad
Date: 2007-12-04 16:06:32 -0800 (Tue, 04 Dec 2007)
New Revision: 8377

Modified:
   short/3D/PyLith/trunk/pylith/PyLithApp.py
   short/3D/PyLith/trunk/pylith/bc/Dirichlet.py
   short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
   short/3D/PyLith/trunk/pylith/meshio/SolutionIO.py
   short/3D/PyLith/trunk/pylith/meshio/SolutionIOVTK.py
   short/3D/PyLith/trunk/pylith/problems/Explicit.py
   short/3D/PyLith/trunk/pylith/problems/Formulation.py
   short/3D/PyLith/trunk/pylith/problems/Implicit.py
   short/3D/PyLith/trunk/pylith/problems/Problem.py
   short/3D/PyLith/trunk/pylith/problems/TimeDependent.py
   short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py
   short/3D/PyLith/trunk/pylith/topology/MeshImporter.py
Log:
Added logging of high-level actions. Removed resourceUsage() in time steps (bottleneck).

Modified: short/3D/PyLith/trunk/pylith/PyLithApp.py
===================================================================
--- short/3D/PyLith/trunk/pylith/PyLithApp.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/PyLithApp.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -33,7 +33,8 @@
     ## Python object for managing PyLithApp facilities and properties.
     ##
     ## \b Properties
-    ## @li None
+ 
+   ## @li None
     ##
     ## \b Facilities
     ## @li \b mesher Generates or imports the computational mesh.
@@ -78,6 +79,10 @@
     self.petsc.initialize()
     self._debug.log(resourceUsageString())
 
+    self._setupLogging()
+    logEvent = "PyLith main"
+    self._logger.eventBegin(logEvent)
+
     # Create mesh (adjust to account for interfaces (faults) if necessary)
     interfaces = None
     if "interfaces" in dir(self.problem):
@@ -94,11 +99,14 @@
     self.problem.initialize()
     self._debug.log(resourceUsageString())
 
-    # Run problem and cleanup
+    # Run problem
     self.problem.run(self)
     self._debug.log(resourceUsageString())
 
+    # Cleanup
     self.problem.finalize()
+    
+    self._logger.eventEnd(logEvent)
     self.petsc.finalize()
     return
   
@@ -118,5 +126,18 @@
     self._debug = journal.debug(self.name)
     return
 
+  def _setupLogging(self):
+    """
+    Setup event logging.
+    """
+    from pylith.utils.EventLogger import EventLogger
+    logger = EventLogger()
+    logger.setClassName("PyLith")
+    logger.initialize()
+    logger.registerEvent("PyLith main")
 
+    self._logger = logger
+    return
+  
+
 # End of file 

Modified: short/3D/PyLith/trunk/pylith/bc/Dirichlet.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/Dirichlet.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/bc/Dirichlet.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -97,9 +97,10 @@
     Initialize Dirichlet boundary condition.
     """
     logEvent = "%sinit" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
+    BoundaryCondition.initialize(self)
 
-    self._logger.eventBegin(logEvent)    
-    BoundaryCondition.initialize(self)
     self._logger.eventEnd(logEvent)    
     return
   

Modified: short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Integrator.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/feassemble/Integrator.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -68,10 +68,11 @@
     Verify compatibility of configuration.
     """
     logEvent = "%sverify" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
 
     assert(None != self.cppHandle)
-    self._logger.eventBegin(logEvent)
     self.cppHandle.verifyConfiguration(self.mesh.cppHandle)
+
     self._logger.eventEnd(logEvent)
     return
 
@@ -90,11 +91,12 @@
     Get stable time step for advancing from time t to time t+dt.
     """
     logEvent = "%stimestep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
     
     assert(None != self.cppHandle)
     from pyre.units.time import second
-    self._logger.eventBegin(logEvent)
     dt = self.cppHandle.stableTimeStep*second
+
     self._logger.eventEnd(logEvent)
     return dt
 
@@ -113,9 +115,9 @@
     Integrate contributions to residual term at time t.
     """
     logEvent = "%sresidual" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
     
     assert(None != self.cppHandle)
-    self._logger.eventBegin(logEvent)
     self.cppHandle.integrateResidual(residual, t.value, fields.cppHandle,
                                      self.mesh.cppHandle)
     self._logger.eventEnd(logEvent)
@@ -128,9 +130,9 @@
     false otherwise.
     """
     logEvent = "%snewJacobian" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
     
     assert(None != self.cppHandle)
-    self._logger.eventBegin(logEvent)
     flag = self.cppHandle.needNewJacobian
     self._logger.eventEnd(logEvent)
     return flag
@@ -141,9 +143,9 @@
     Integrate contributions to Jacobian term at time t.
     """
     logEvent = "%sjacobian" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
     
     assert(None != self.cppHandle)
-    self._logger.eventBegin(logEvent)
     self.cppHandle.integrateJacobian(jacobian, t.value, fields.cppHandle,
                                      self.mesh.cppHandle)
     self._logger.eventEnd(logEvent)
@@ -155,10 +157,11 @@
     Update state variables as needed.
     """
     logEvent = "%sstate" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
     
     assert(None != self.cppHandle)
-    self._logger.eventBegin(logEvent)
     self.cppHandle.updateState(t.value, fields.cppHandle, self.mesh.cppHandle)
+
     self._logger.eventEnd(logEvent)
     return
     
@@ -176,7 +179,7 @@
     """
     Setup event logging.
     """
-    if None == self._loggingPrefix:
+    if not "_loggingPrefix" in dir(self):
       self._loggingPrefix = ""
 
     from pylith.utils.EventLogger import EventLogger

Modified: short/3D/PyLith/trunk/pylith/meshio/SolutionIO.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/SolutionIO.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/meshio/SolutionIO.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -91,6 +91,10 @@
     """
     Open files for solution.
     """
+    self._setupLogging()
+    logEvent = "%sopen" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)    
+    
     self._info.log("Opening files for output of solution.")
     self.mesh = mesh
 
@@ -104,6 +108,8 @@
 
     assert(self.cppHandle != None)
     self.cppHandle.open(mesh.cppHandle)
+
+    self._logger.eventEnd(logEvent)    
     return
 
 
@@ -111,6 +117,8 @@
     """
     Close files for solution.
     """
+    logEvent = "%sclose" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)    
     self._info.log("Closing files for output of solution.")
 
     # Set flags
@@ -118,6 +126,8 @@
 
     assert(self.cppHandle != None)
     self.cppHandle.close()
+
+    self._logger.eventEnd(logEvent)    
     return
 
 
@@ -125,6 +135,8 @@
     """
     Write solution topology to file.
     """
+    logEvent = "%swriteTopo" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)    
     self._info.log("Writing solution topology.")
 
     assert(self.cppHandle != None)
@@ -132,6 +144,8 @@
     assert(self.mesh.coordsys.cppHandle != None)
     self.cppHandle.writeTopology(self.mesh.cppHandle,
                                  self.mesh.coordsys.cppHandle)
+
+    self._logger.eventEnd(logEvent)    
     return
 
 
@@ -139,6 +153,9 @@
     """
     Write field over vertices at time t to file.
     """
+    logEvent = "%swriteVertex" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)    
+
     write = False
     if self.istep == None or not "value" in dir(self.t):
       write = True
@@ -155,6 +172,8 @@
                                       self.mesh.cppHandle)
       self.istep = istep
       self.t = t
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -162,6 +181,9 @@
     """
     Write field over cells at time t to file.
     """
+    logEvent = "%swriteCell" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)    
+
     write = False
     if self.istep == None or not "value" in dir(self.t):
       write = True
@@ -177,6 +199,8 @@
       self.cppHandle.writeCellField(t.value, field, name, self.mesh.cppHandle)
       self.istep = istep
       self.t = t
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -211,4 +235,28 @@
                               "derived class.")
   
   
-# End of file 
+  def _setupLogging(self):
+    """
+    Setup event logging.
+    """
+    if not "_loggingPrefix" in dir(self):
+      self._loggingPrefix = ""
+
+    from pylith.utils.EventLogger import EventLogger
+    logger = EventLogger()
+    logger.setClassName("FE Integrator")
+    logger.initialize()
+
+    events = ["open",
+              "close",
+              "writeTopo",
+              "writeVertex",
+              "writeCell"]
+    for event in events:
+      logger.registerEvent("%s%s" % (self._loggingPrefix, event))
+
+    self._logger = logger
+    return
+  
+
+# End of file

Modified: short/3D/PyLith/trunk/pylith/meshio/SolutionIOVTK.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/SolutionIOVTK.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/meshio/SolutionIOVTK.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -60,6 +60,7 @@
     Constructor.
     """
     SolutionIO.__init__(self, name)
+    self._loggingPrefix = "VTKo "
     return
 
 

Modified: short/3D/PyLith/trunk/pylith/problems/Explicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Explicit.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/problems/Explicit.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -45,6 +45,7 @@
     Constructor.
     """
     Formulation.__init__(self, name)
+    self._loggingPrefix = "TSEx "
     self.solnField = {'name': "dispT",
                       'label': "displacements"}
     return
@@ -66,6 +67,9 @@
     t = 0.0*second
     Formulation.initialize(self, dimension, dt)
 
+    logEvent = "%sinit" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     self._info.log("Creating other fields and matrices.")
     self.fields.addReal("dispTpdt")
     self.fields.addReal("dispTmdt")
@@ -81,6 +85,8 @@
       constraint.useSolnIncr(False)
     for integrator in self.integrators:
       integrator.useSolnIncr(False)
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -92,20 +98,13 @@
     return 0.0*second
 
 
-  def stableTimeStep(self):
-    """
-    Get stable time step for advancing forward in time.
-    """
-    self._info.log("WARNING: Explicit::stableTimeStep() not implemented.")
-    from pyre.units.time import second
-    dt = 0.0*second
-    return dt
-  
-
   def prestep(self, t, dt):
     """
     Hook for doing stuff before advancing time step.
     """
+    logEvent = "%sprestep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     dispTpdt = self.fields.getReal("dispTpdt")
     for constraint in self.constraints:
       constraint.setField(t+dt, dispTpdt)
@@ -116,6 +115,8 @@
         needNewJacobian = True
     if needNewJacobian:
       self._reformJacobian(t, dt)
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -123,6 +124,9 @@
     """
     Advance to next time step.
     """
+    logEvent = "%sstep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     self._info.log("Integrating constant term in operator.")
     residual = self.fields.getReal("residual")
     import pylith.topology.topology as bindings
@@ -143,6 +147,7 @@
     #print "JACOBIAN"
     #petscbindings.mat_view(self.jacobian)
     # END TEMPORARY
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -150,6 +155,9 @@
     """
     Hook for doing stuff after advancing time step.
     """
+    logEvent = "%spoststep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     self.fields.shiftHistory()
     if not self.solver.guessZero:
       import pylith.topology.topology as bindings
@@ -160,6 +168,8 @@
     for integrator in self.integrators:
       integrator.updateState(t, self.fields)
 
+    self._logger.eventEnd(logEvent)
+    
     Formulation.poststep(self, t, dt, totalTime)
     return
 

Modified: short/3D/PyLith/trunk/pylith/problems/Formulation.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Formulation.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/problems/Formulation.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -80,6 +80,10 @@
     """
     Create integrator for each element family.
     """
+    self._setupLogging()
+    logEvent = "%spreinit" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     from pylith.feassemble.Integrator import implementsIntegrator
     from pylith.feassemble.Constraint import implementsConstraint
 
@@ -142,6 +146,7 @@
               "Could not determine whether interface condition '%s' is an " \
               "integrator or a constraint." % ic.name
     self._debug.log(resourceUsageString())
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -149,12 +154,17 @@
     """
     Verify compatibility of configuration.
     """
+    logEvent = "%sverify" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+
     for integrator in self.integrators:
       integrator.verifyConfiguration()
     for constraint in self.constraints:
       constraint.verifyConfiguration()
     for output in self.output.bin:
       output.verifyConfiguration()
+
+    self._logger.eventEnd(logEvent)
     return
   
 
@@ -162,6 +172,9 @@
     """
     Create integrators for each element family.
     """
+    logEvent = "%sinit" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+
     from pylith.topology.FieldsManager import FieldsManager
     self.fields = FieldsManager(self.mesh)
 
@@ -193,20 +206,54 @@
     for constraint in self.constraints:
       constraint.setConstraints(self.fields.getSolution())
     self._debug.log(resourceUsageString())
+
+    self._logger.eventEnd(logEvent)
     return
 
 
+  def stableTimeStep(self):
+    """
+    Get stable time step for advancing forward in time.
+    """
+    logEvent = "%stimestep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+
+    self._info.log("WARNING: Formulation::stableTimeStep() not implemented.")
+    from pyre.units.time import second
+    dt = 0.0*second
+
+    self._logger.eventEnd(logEvent)
+    return dt
+  
+
+  def prestep(self, t, dt):
+    """
+    Hook for doing stuff before advancing time step.
+    """
+    return
+
+
+  def step(self, t, dt):
+    """
+    Advance to next time step.
+    """
+    return
+
+
   def poststep(self, t, dt, totalTime):
     """
     Hook for doing stuff after advancing time step.
     """
+    logEvent = "%spoststep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+
     self._info.log("Writing solution field.")
-    self._debug.log(resourceUsageString())
     field = self.fields.getSolution()
     for output in self.output.bin:
       output.writeVertexField(t+dt, self._istep, field, self.solnField['label'])
-    self._debug.log(resourceUsageString())
     self._istep += 1
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -214,6 +261,9 @@
     """
     Cleanup after time stepping.
     """
+    logEvent = "%sfinalize" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+
     self._info.log("Formulation finalize.")
     self._debug.log(resourceUsageString())
     for integrator in self.integrators:
@@ -223,6 +273,8 @@
     for output in self.output.bin:
       output.close()
     self._debug.log(resourceUsageString())
+
+    self._logger.eventEnd(logEvent)
     return
   
 
@@ -257,6 +309,33 @@
     return
 
 
+  def _setupLogging(self):
+    """
+    Setup event logging.
+    """
+    if not "_loggingPrefix" in dir(self):
+      self._loggingPrefix = ""
+
+    from pylith.utils.EventLogger import EventLogger
+    logger = EventLogger()
+    logger.setClassName("PDE Formulation")
+    logger.initialize()
+
+    events = ["preinit",
+              "verify",
+              "init",
+              "timestep",
+              "prestep",
+              "step",
+              "poststep",
+              "finalize"]
+    for event in events:
+      logger.registerEvent("%s%s" % (self._loggingPrefix, event))
+
+    self._logger = logger
+    return
+  
+
 # FACTORIES ////////////////////////////////////////////////////////////
 
 def pde_formulation():

Modified: short/3D/PyLith/trunk/pylith/problems/Implicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Implicit.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/problems/Implicit.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -69,6 +69,7 @@
     Constructor.
     """
     Formulation.__init__(self, name)
+    self._loggingPrefix = "TSIm "
     self.solnField = {'name': "dispTBctpdt",
                       'label': "displacements"}
     return
@@ -88,6 +89,9 @@
     """
     Formulation.initialize(self, dimension, dt)
 
+    logEvent = "%sinit" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     self._info.log("Creating other fields.")
     self._debug.log(resourceUsageString())
     self.fields.addReal("dispIncr")
@@ -108,6 +112,8 @@
       constraint.useSolnIncr(False)
     for integrator in self.integrators:
       integrator.useSolnIncr(False)
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -118,28 +124,19 @@
     return -dt
 
 
-  def stableTimeStep(self):
-    """
-    Get stable time step for advancing forward in time.
-    """
-    self._info.log("WARNING: Implicit::stableTimeStep() not implemented.")
-    from pyre.units.time import second
-    dt = 0.0*second
-    return dt
-  
-
   def prestep(self, t, dt):
     """
     Hook for doing stuff before advancing time step.
     """
+    logEvent = "%sprestep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     # Set dispTBctpdt to the BC t time t+dt. Unconstrained DOF are
     # unaffected and will be equal to their values at time t.
     self._info.log("Setting constraints.")
-    self._debug.log(resourceUsageString())
     dispTBctpdt = self.fields.getReal("dispTBctpdt")
     for constraint in self.constraints:
       constraint.setField(t+dt, dispTBctpdt)
-    self._debug.log(resourceUsageString())
 
     needNewJacobian = False
     for integrator in self.integrators:
@@ -147,6 +144,8 @@
         needNewJacobian = True
     if needNewJacobian:
       self._reformJacobian(t, dt)
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -154,9 +153,10 @@
     """
     Advance to next time step.
     """
+    logEvent = "%sstep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
 
     self._info.log("Integrating residual term in operator.")
-    self._debug.log(resourceUsageString())
     residual = self.fields.getReal("residual")
     dispIncr = self.fields.getReal("dispIncr")
     import pylith.topology.topology as bindings
@@ -165,16 +165,15 @@
     for integrator in self.integrators:
       integrator.timeStep(dt)
       integrator.integrateResidual(residual, t+dt, self.fields)
-    self._debug.log(resourceUsageString())
 
     self._info.log("Completing residual.")
     bindings.completeSection(self.mesh.cppHandle, residual)
-    self._debug.log(resourceUsageString())
 
     import pylith.utils.petsc as petsc
     self._info.log("Solving equations.")
     self.solver.solve(dispIncr, self.jacobian, residual)
-    self._debug.log(resourceUsageString())
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -182,6 +181,9 @@
     """
     Hook for doing stuff after advancing time step.
     """
+    logEvent = "%spoststep" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     # After solving, dispTBctpdt contains the displacements at time t
     # for unconstrained DOF and displacements at time t+dt at
     # constrained DOF. We add in the displacement increments (only
@@ -193,10 +195,8 @@
     bindings.addRealSections(disp, disp, dispIncr)
 
     self._info.log("Updating integrators states.")
-    self._debug.log(resourceUsageString())
     for integrator in self.integrators:
       integrator.updateState(t+dt, self.fields)
-    self._debug.log(resourceUsageString())
 
     # If finishing first time step, then switch from solving for total
     # displacements to solving for incremental displacements
@@ -208,8 +208,9 @@
       for integrator in self.integrators:
         integrator.useSolnIncr(True)
       self._reformJacobian(t, dt)
-      self._debug.log(resourceUsageString())
 
+    self._logger.eventEnd(logEvent)
+    
     Formulation.poststep(self, t, dt, totalTime)
     return
 

Modified: short/3D/PyLith/trunk/pylith/problems/Problem.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Problem.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/problems/Problem.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -78,7 +78,7 @@
     Setup integrators for each element family (material/quadrature,
     bc/quadrature, etc.).
     """
-    raise NotImplementedError, "preinitialize() not implemented."
+    raise NotImplementedError, "initialize() not implemented."
     return
 
 
@@ -86,12 +86,16 @@
     """
     Verify compatibility of configuration.
     """
+    logEvent = "%sverify" % self._loggingPrefix
+
+    self._logger.eventBegin(logEvent)
     for material in self.materials.bin:
       material.verifyConfiguration()
     for bc in self.bc.bin:
       bc.verifyConfiguration()
     for interface in self.interfaces.bin:
       interface.verifyConfiguration()
+    self._logger.eventEnd(logEvent)
     return
   
 
@@ -112,6 +116,14 @@
     return
 
 
+  def finalize(self, mesh):
+    """
+    Cleanup.
+    """
+    raise NotImplementedError, "finalize() not implemented."
+    return
+
+
   def checkpoint(self):
     """
     Save problem state for restart.
@@ -133,6 +145,30 @@
     return
 
 
+  def _setupLogging(self):
+    """
+    Setup event logging.
+    """
+    if not "_loggingPrefix" in dir(self):
+      self._loggingPrefix = ""
+
+    from pylith.utils.EventLogger import EventLogger
+    logger = EventLogger()
+    logger.setClassName("Problem")
+    logger.initialize()
+
+    events = ["preinit",
+              "verify",
+              "init",
+              "run",
+              "finalize"]
+    for event in events:
+      logger.registerEvent("%s%s" % (self._loggingPrefix, event))
+
+    self._logger = logger
+    return
+  
+
 # FACTORIES ////////////////////////////////////////////////////////////
 
 def problem():

Modified: short/3D/PyLith/trunk/pylith/problems/TimeDependent.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/TimeDependent.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/problems/TimeDependent.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -81,6 +81,7 @@
     Constructor.
     """
     Problem.__init__(self, name)
+    self._loggingPrefix = "PrTD "
     return
 
 
@@ -89,10 +90,16 @@
     Setup integrators for each element family (material/quadrature,
     bc/quadrature, etc.).
     """
+    self._setupLogging()
+    logEvent = "%spreinit" % self._loggingPrefix    
+    self._logger.eventBegin(logEvent)
+    
     self._info.log("Pre-initializing problem.")
     self.mesh = mesh
     self.formulation.preinitialize(mesh, self.materials, self.bc,
                                    self.interfaces)
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -100,6 +107,9 @@
     """
     Verify compatibility of configuration.
     """
+    logEvent = "%sverify" % self._loggingPrefix    
+    self._logger.eventBegin(logEvent)
+    
     self._info.log("Verifying compatibility of problem configuration.")
     if self.dimension != self.mesh.dimension():
       raise ValueError, \
@@ -114,6 +124,8 @@
               (self.dimension, material.label, material.quadrature.spaceDim)
     Problem.verifyConfiguration(self)
     self.formulation.verifyConfiguration()
+
+    self._logger.eventEnd(logEvent)
     return
   
 
@@ -122,8 +134,13 @@
     Setup integrators for each element family (material/quadrature,
     bc/quadrature, etc.).
     """
+    logEvent = "%sinit" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+
     self._info.log("Initializing problem.")
     self.formulation.initialize(self.dimension, self.dt)
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -131,6 +148,9 @@
     """
     Solve time dependent problem.
     """
+    logEvent = "%srun" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+
     self._info.log("Solving problem.")
     self.checkpointTimer.toplevel = app # Set handle for saving state
     
@@ -161,6 +181,8 @@
 
       # Update time step
       t += dt
+
+    self._logger.eventEnd(logEvent)
     return
 
 
@@ -168,7 +190,12 @@
     """
     Cleanup after running problem.
     """
+    logEvent = "%sfinalize" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+
     self.formulation.finalize()
+
+    self._logger.eventEnd(logEvent)
     return
 
 

Modified: short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -88,10 +88,36 @@
     """
     Adjust topology for interface implementation.
     """
+    logEvent = "%sadjTopo" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)
+    
     if not interfaces is None:
       for interface in interfaces:
         interface.adjustTopology(mesh)
+
+    self._logger.eventEnd(logEvent)
     return
   
 
-# End of file 
+  def _setupLogging(self):
+    """
+    Setup event logging.
+    """
+    if not "_loggingPrefix" in dir(self):
+      self._loggingPrefix = ""
+
+    from pylith.utils.EventLogger import EventLogger
+    logger = EventLogger()
+    logger.setClassName("Mesh Generator")
+    logger.initialize()
+
+    events = ["create",
+              "adjTopo"]
+    for event in events:
+      logger.registerEvent("%s%s" % (self._loggingPrefix, event))
+
+    self._logger = logger
+    return
+  
+
+# End of file

Modified: short/3D/PyLith/trunk/pylith/topology/MeshImporter.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/MeshImporter.py	2007-12-04 19:32:25 UTC (rev 8376)
+++ short/3D/PyLith/trunk/pylith/topology/MeshImporter.py	2007-12-05 00:06:32 UTC (rev 8377)
@@ -64,6 +64,7 @@
     Constructor.
     """
     MeshGenerator.__init__(self, name)
+    self._loggingPrefix = "MeIm "
     return
 
 
@@ -71,6 +72,10 @@
     """
     Hook for creating mesh.
     """
+    self._setupLogging()
+    logEvent = "%screate" % self._loggingPrefix
+    self._logger.eventBegin(logEvent)    
+    
     mesh = self.importer.read(self.debug, self.interpolate)
     self._info.log("Adjusting topology.")
     self._adjustTopology(mesh, faults)
@@ -80,6 +85,8 @@
     if mpi.MPI_Comm_size(mpi.MPI_COMM_WORLD) > 1:
       mesh = self.distributor.distribute(mesh)
     #mesh.view()
+
+    self._logger.eventEnd(logEvent)    
     return mesh
 
 



More information about the cig-commits mailing list