[cig-commits] r4090 - in long/3D/Gale/trunk/src/StGermain: . pyre
pyre/Mesh
walter at geodynamics.org
walter at geodynamics.org
Thu Jul 20 20:14:30 PDT 2006
Author: walter
Date: 2006-07-20 20:14:28 -0700 (Thu, 20 Jul 2006)
New Revision: 4090
Modified:
long/3D/Gale/trunk/src/StGermain/
long/3D/Gale/trunk/src/StGermain/pyre/Application.py
long/3D/Gale/trunk/src/StGermain/pyre/Component.py
long/3D/Gale/trunk/src/StGermain/pyre/Controller.py
long/3D/Gale/trunk/src/StGermain/pyre/Debug.py
long/3D/Gale/trunk/src/StGermain/pyre/Layout.py
long/3D/Gale/trunk/src/StGermain/pyre/Mesh/Mesh.py
long/3D/Gale/trunk/src/StGermain/pyre/Mesh/RegularMeshLayout.py
long/3D/Gale/trunk/src/StGermain/pyre/Solver.py
long/3D/Gale/trunk/src/StGermain/pyre/__init__.py
Log:
r2553 at earth: boo | 2006-07-20 20:01:52 -0700
r2529 at earth (orig r3698): EunseoChoi | 2006-07-20 14:09:56 -0700
* pyre-related scripts updated to be compatible with pythia v0.8.
Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
- 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2552
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3697
+ 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2553
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3698
Modified: long/3D/Gale/trunk/src/StGermain/pyre/Application.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/Application.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/Application.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -56,6 +56,12 @@
return
+ def main(self, *args, **kwds):
+ self.initialize()
+ self.reportConfiguration()
+ self.launch()
+ return
+
def getContext( self ):
if not self._context:
self._context = self.BuildContext()
@@ -85,7 +91,7 @@
## self.inventory.controller.launch( self )
## self.inventory.controller.march( steps = self.inventory.steps, totalTime = self.inventory.stop )
self.controller.launch( self )
- self.controller.march( steps = self.inventory.steps, totalTime = self.inventory.stop )
+ self.controller.march( totalTime = self.inventory.stop, steps = self.inventory.steps )
return
def findLayout( self, layout ):
@@ -101,39 +107,31 @@
return
self._info.line("configuration:" )
- self._info.line(" properties:" )
- self._info.line(" name: %r" % self.inventory.name )
- self._info.line(" full name: %r" % self.inventory.fullname )
+# self._info.line(" properties:" )
+# self._info.line(" name: %r" % self.inventory.name )
+# self._info.line(" full name: %r" % self.inventory.fullname )
self._info.line( " facilities:" )
self._info.line( " journal: %r" % self.inventory.journal.name )
- self._info.line( " staging: %r" % self.inventory.staging.name )
+ self._info.line( " launcher: %r" % self.inventory.launcher.name )
self._info.line( " solver: %r" % self.inventory.solver.name )
self._info.line( " controller: %r" % self.inventory.controller.name )
self._info.line( " layout: %r" % self.inventory.controller.name )
return
- def run( self ):
- self.initialize()
- self.launch()
- return
-
class Inventory( mpiApplication.Inventory ):
- import pyre.properties
- import pyre.facilities
+ import pyre.inventory
- from StGermain.pyre.Solver import Solver
- from StGermain.pyre.Controller import Controller
- from StGermain.pyre.Layout import Layout
+ import StGermain.pyre.Solver as Solver
+ import StGermain.pyre.Controller as Controller
+ import StGermain.pyre.Layout as Layout
- inventory = [
- pyre.properties.str( name = "inputFilename", default = "./input.xml" ),
- pyre.facilities.facility( name = "solver", default = Solver() ),
- pyre.facilities.facility( name = "controller", default = Controller() ),
- pyre.facilities.facility( name = "layout", default = Layout() ),
- pyre.properties.int( "steps", 0 ),
- pyre.properties.float( "stop", 1e20 ),
- ]
+ inputFilename = pyre.inventory.str( name = "inputFilename", default = "./input.xml" )
+ solver = pyre.inventory.facility( name = "solver", factory = Solver.solver )
+ controller = pyre.inventory.facility( name = "controller", factory = Controller.controller )
+ layout = pyre.inventory.facility( name = "layout", factory = Layout.layout )
+ steps = pyre.inventory.int( "steps", default=0 )
+ stop = pyre.inventory.float( "stop", default=1e20 )
Modified: long/3D/Gale/trunk/src/StGermain/pyre/Component.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/Component.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/Component.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -42,7 +42,9 @@
self._dictionarySource = None
return
- def configure( self, registry ):
- report = PyreComponent.configure( self, registry )
+ def initialize( self, Module, all_variables ):
self._dictionary = PyreDictionary.addProperties( self, registry )
return report
+
+ def setProperties(self):
+ return
Modified: long/3D/Gale/trunk/src/StGermain/pyre/Controller.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/Controller.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/Controller.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -38,53 +38,64 @@
##
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-from pyre.components.SimulationController import SimulationController
+def controller(name="controller", facility="controller"):
+ return Controller(name, facility)
+
+from pyre.simulations.SimulationController import SimulationController
import journal
import sys
class Controller( SimulationController ):
- def __init__( self, name = "controller", facility = "controller" ):
+
+
+ def __init__( self, name, facility ):
+ SimulationController.__init__( self, name, facility )
+
+ self.step = 0
+ self.clock = 0.0
self._context = None
- SimulationController.__init__( self, name, facility )
self.done = False
self.solver = None
return
+
+ def initialize( self, application ):
+ self._context = application.getContext()
+ self.solver = application.solver
+ self.solver.initialize( application )
+ return
+
+
+ def launch( self, application ):
+ # 0th step
+ self.solver.launch( application )
+
+ # do io for 0th step
+ self.save()
+ return
+ '''
def setClock( self, time ):
if self._context:
self._context.time = time
- self.__clock = time
+ self.__clock = time
def getClock( self ):
return self.__clock
- clock = property( getClock, setClock, doc="Current sim clock time." )
+ clock = property( getClock, setClock, doc="Current sim clock time." )
def setStep( self, step ):
if self._context:
self._context.step = step
- self.__step = step
+ self.__step = step
def getStep( self ):
return self.__step
- step = property( getStep, setStep, doc="Current sim step." )
+ step = property( getStep, setStep, doc="Current sim step." )
+ '''
- def initialize( self, application ):
- self._context = application.getContext()
- self.step = 0
- self.clock = 0.0
- self.solver = application.solver
- self.solver.initialize( application )
- return
- def launch( self, application ):
- # 0th step
- self.solver.launch( application )
- # do io for 0th step
- self.save()
- return
-
def march( self, totalTime = 0, steps = 0 ):
"""explicit time loop"""
@@ -108,18 +119,19 @@
self.clock += dt
self.step += 1
+ # notify solver we finished a timestep
+ self.endTimestep( totalTime, steps )
+
# do io
self.save()
- # notify solver we finished a timestep
- self.endTimestep( totalTime, steps )
-
# are we done?
if self.done:
break
# Notify solver we are done
self.endSimulation()
+
return
def endTimestep( self, totalTime, steps ):
Modified: long/3D/Gale/trunk/src/StGermain/pyre/Debug.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/Debug.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/Debug.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -40,11 +40,11 @@
def _printRegistry( registry, level ):
print indent( level ) + 'Properties are:'
print indent( level + 1 ) + '---'
- for name, value in registry.properties.iteritems():
+ for name, descriptor in registry.properties.iteritems():
print indent( level + 1 ) + 'name: ' + name
- print indent( level + 1 ) + 'value: ' + value
+ print indent( level + 1 ) + 'value: ' + descriptor.value
print indent( level + 1 ) + '---'
-
+
print indent( level ) + 'Components are:'
print indent( level + 1 ) + '---'
for name, value in registry.facilities.iteritems():
@@ -57,28 +57,26 @@
def printRegistry( application, level = 0 ):
print indent( level ) + 'Input Registry:'
- _printRegistry( application._registry, level + 1 )
+ _printRegistry( application.registry, level + 1 )
def _printInventory( inventory, level ):
print indent( level ) + 'Properties are:'
print indent( level + 1 ) + '---'
- for name, _value in inventory._propertyRegistry.iteritems():
+ for name, _value in inventory._traitRegistry.iteritems():
print indent( level + 1 ) + 'name: ' + name
-
- # The raw value itself is stored on the inventory. _value is
+ # The raw value itself is stored on the inventory. _value is
# the pyre property of the value.
- value = inventory.__getattribute__( name )
print indent( level + 1 ) + 'type: ' + _value.type
- print indent( level + 1 ) + 'value: ', value
+ print indent( level + 1 ) + 'value: ', _value.__get__(inventory)
print indent( level + 1 ) + '---'
-
+
print indent( level ) + 'Components are:'
print indent( level + 1 ) + '---'
for name, _value in inventory._facilityRegistry.iteritems():
print indent( level + 1 ) + 'facility name: ' + name
- # The raw value itself (i.e. the component) is stored on the
+ # The raw value itself (i.e. the component) is stored on the
# inventory. _value is the facility of the value.
value = inventory.__getattribute__( name )
print indent( level + 1 ) + 'component name: ' + value.name
Modified: long/3D/Gale/trunk/src/StGermain/pyre/Layout.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/Layout.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/Layout.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -29,6 +29,10 @@
##
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+def layout(name="layout", facility="layout"):
+ return Layout(name, facility)
+
+
from pyre.components.Component import Component
import journal
import mpi
@@ -63,12 +67,13 @@
return
def verify( self, application ):
- nodes = application.inventory.staging.inventory.nodes
- if nodes == 0 and self.nodes == 1:
+ size = self.nodes
+ nodes = application.inventory.launcher.inventory.nodes
+ if nodes == 0 and size == 1:
info = journal.info( "layout" )
info.log( "Running serially without a stager" )
- elif nodes != self.nodes:
+ elif nodes != size:
firewall = journal.firewall( "layout" )
firewall.log( "processor count mismatch: %d != %d" % ( nodes, self.nodes ) )
@@ -78,33 +83,32 @@
return
def createCommunicators( self ):
- world = self.comm
- myrank = world.rank
- fineGroup = self.inventory.fine
- coarseGroup = self.inventory.coarse
+ world = self.comm
+ myrank = world.rank
+ fineGroup = self.inventory.fine
+ coarseGroup = self.inventory.coarse
- if self.nodes == 1:
- return
- else:
- self.fine = self.comm.include( self.inventory.fine )
- self.coarse = self.comm.include( self.inventory.coarse )
+ if self.nodes == 1:
+ return
+ else:
+ self.fine = world.include( fineGroup )
+ self.coarse = world.include( coarseGroup )
for each in coarseGroup:
- self.finePlus.append( self.comm.include( self.inventory.fine + [each] ) )
+ self.finePlus.append( world.include( fineGroup + [each] ) )
+
for each in fineGroup:
- self.coarsePlus.append( self.comm.include( self.inventory.coarse + [each] ) )
+ self.coarsePlus.append( world.include( coarseGroup + [each] ) )
- return
+ return
class Inventory( Component.Inventory ):
- import pyre.properties
- inventory = [
- pyre.properties.sequence( "coarse", range(12) ),
- pyre.properties.sequence( "fine", [12] ),
- ]
+ import pyre.inventory
+ coarse = pyre.inventory.slice( "coarse", default=[0] )
+ fine = pyre.inventory.slice( "fine", default=[1] )
@@ -116,3 +120,5 @@
+
+
Modified: long/3D/Gale/trunk/src/StGermain/pyre/Mesh/Mesh.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/Mesh/Mesh.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/Mesh/Mesh.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -48,14 +48,12 @@
def __init__( self, name, layout, facility = "Mesh" ):
Component.__init__( self, name, facility )
self.inventory.MeshLayout = layout
-
+
self._dictionary = Dictionary( StGermain.Base.IO.Dictionary.new() )
self.inventory.MeshLayout._dictionarySource = self # meshlayout writes to the same dictionary, not its own
return
class Inventory( Component.Inventory ):
- import pyre.facilities
+ import pyre.inventory
- inventory = [
- pyre.facilities.facility( name = "MeshLayout", default = DummyMeshLayout() ),
- ]
+ MeshLayout = pyre.inventory.facility( name = "MeshLayout", factory = DummyMeshLayout ),
Modified: long/3D/Gale/trunk/src/StGermain/pyre/Mesh/RegularMeshLayout.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/Mesh/RegularMeshLayout.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/Mesh/RegularMeshLayout.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -39,17 +39,15 @@
return
class Inventory( Component.Inventory ):
- import pyre.properties
+ import pyre.inventory
- inventory = [
- pyre.properties.int( "meshSizeI", 3 ),
- pyre.properties.int( "meshSizeJ", 3 ),
- pyre.properties.int( "meshSizeK", 3 ),
+ meshSizeI = pyre.inventory.int( "meshSizeI", default=3 )
+ meshSizeJ = pyre.inventory.int( "meshSizeJ", default=3 )
+ meshSizeK = pyre.inventory.int( "meshSizeK", default=3 )
- pyre.properties.int( "minX", 0 ),
- pyre.properties.int( "minY", 0 ),
- pyre.properties.int( "minZ", 0 ),
- pyre.properties.int( "maxX", 1 ),
- pyre.properties.int( "maxY", 1 ),
- pyre.properties.int( "maxZ", 1 ),
- ]
+ minX = pyre.inventory.int( "minX", default=0 )
+ minY = pyre.inventory.int( "minY", default=0 )
+ minZ = pyre.inventory.int( "minZ", default=0 )
+ maxX = pyre.inventory.int( "maxX", default=1 )
+ maxY = pyre.inventory.int( "maxY", default=1 )
+ maxZ = pyre.inventory.int( "maxZ", default=1 )
Modified: long/3D/Gale/trunk/src/StGermain/pyre/Solver.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/Solver.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/Solver.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -38,13 +38,16 @@
##
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-from pyre.components.Solver import Solver as BaseSolver
+def solver(name='solver', facility='solver'):
+ return Solver(name, facility)
+
+from pyre.simulations.Solver import Solver as BaseSolver
import journal,sys
from StGermain.Base.IO.Dictionary import Dictionary
+class Solver( BaseSolver ):
-class Solver( BaseSolver ):
def __init__( self, name="solver", facility="solver" ):
BaseSolver.__init__( self, name, facility )
@@ -60,10 +63,14 @@
self.myPlus = []
self.remotePlus = []
+ self.start_cpu_time = 0
+ self.cpu_time = 0
+ self.model_time = 0
+ self.fptime = None
return
def initialize( self, application ):
- #BaseSolver.initialize( self, application )
+ BaseSolver.initialize( self, application )
# StGermain stuff
self._dictionary = application._dictionary
@@ -155,6 +162,5 @@
return
class Inventory( BaseSolver.Inventory ):
- import pyre.facilities
+ import pyre.inventory
- inventory = []
Modified: long/3D/Gale/trunk/src/StGermain/pyre/__init__.py
===================================================================
--- long/3D/Gale/trunk/src/StGermain/pyre/__init__.py 2006-07-21 03:13:51 UTC (rev 4089)
+++ long/3D/Gale/trunk/src/StGermain/pyre/__init__.py 2006-07-21 03:14:28 UTC (rev 4090)
@@ -31,7 +31,7 @@
import mpi
-CommWorld = mpi.mpi.world
+CommWorld = mpi.world
def copyright():
return "StGermain pyre module: Copyright (c) 2003 Victorian Partnership for Advanced Computing (VPAC) Ltd. Australia.";
More information about the cig-commits
mailing list