[cig-commits] r7608 - mc/3D/CitcomS/trunk/CitcomS

tan2 at geodynamics.org tan2 at geodynamics.org
Fri Jul 6 13:46:11 PDT 2007


Author: tan2
Date: 2007-07-06 13:46:10 -0700 (Fri, 06 Jul 2007)
New Revision: 7608

Modified:
   mc/3D/CitcomS/trunk/CitcomS/MultiCoupledApp.py
   mc/3D/CitcomS/trunk/CitcomS/MultiLayout.py
Log:
Debugged MultiLayout.initialize() and MultiCoupledApp.findLayout(). Fixed some typos.

Modified: mc/3D/CitcomS/trunk/CitcomS/MultiCoupledApp.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/MultiCoupledApp.py	2007-07-06 18:00:49 UTC (rev 7607)
+++ mc/3D/CitcomS/trunk/CitcomS/MultiCoupledApp.py	2007-07-06 20:46:10 UTC (rev 7608)
@@ -10,35 +10,34 @@
 #
 #
 
-from BasApplication import Base Application
+from BaseApplication import BaseApplication
 import journal
 
-class CoupledA(BaseApplication):
+class MultiCoupledApp(BaseApplication):
 
 
     def __init__(self, name="MultiCoupledCitcomS"):
         BaseApplication.__init__(self, name)
-        
+
         self.solver = None
-        self.solverCommunicator = None 
+        self.solverCommunicator = None
 
         # list of communicators used to pass imformation between solvers
-        self.myPlus = [] 
-        self.remotePlus = [] 
+        self.myPlus = []
+        self.remotePlus = []
 
         # containing solver need to do more communication
         self.myPlus2 = []
         self.remotePlus2 = []
 
-        
-        self.comm = None 
+
+        self.comm = None
         self.rank = 0
         self.nodes = 0
-        
 
-        
         return
 
+
     def getNodes(self):
         # csolver requires nproc1 CPUs to run
         s1 = self.inventory.csolver.inventory.mesher.inventory
@@ -49,23 +48,24 @@
         nproc2 = s2.nproc_surf * s2.nprocx * s2.nprocy * s2.nprocz
 
         # esolver2 requires nproc3 CPUs to run
-        s3 = self.inventory.esolver2.inventory.mecher.inventory
-        nproc3 = s3.nproc_surf * s3.nprox * s3.nprocy * s3.nprocz
-        
+        s3 = self.inventory.esolver2.inventory.mesher.inventory
+        nproc3 = s3.nproc_surf * s3.nprocx * s3.nprocy * s3.nprocz
+
         return nproc1 + nproc2 + nproc3
 
+
     def initialize(self):
-        
+
         layout = self.inventory.layout
         layout.initialize(self)
 
         self.findLayout(layout)
 
-        self.comtroller.initialize(self)
-        
+        self.controller.initialize(self)
 
         return
 
+
     def findLayout(self, layout):
 
         if layout.ccomm:
@@ -78,8 +78,8 @@
             self.remotePlus = layout.ecommPlus1
             self.myPlus2 = layout.ccommPlus2
             self.remotePlus2 = layout.ecommPlus2
-            
-  
+
+
         elif layout.ecomm1:
             # This process belongs to the embedded solver1
             self.controller = self.inventory.econtroller1
@@ -88,8 +88,8 @@
             self.solverCommunicator = layout.ecomm1
             self.myPlus = layout.ecommPlus1
             self.remotePlus = layout.ccommPlus1
- 
 
+
         elif layout.ecomm2:
             # This process belongs to the embedded solver2
             self.controller = self.inventory.econtroller2
@@ -98,7 +98,7 @@
             self.solverCommunicator = layout.ecomm2
             self.myPlus = layout.ecommPlus2
             self.remotePlus = layout.ccommPlus2
-     
+
         else:
             # This process doesn't belong to any solver
             import journal
@@ -111,9 +111,9 @@
 
         return
 
-    
-    def report Configuration(self):
 
+    def reportConfiguration(self):
+
         rank = self.comm.rank
 
         if rank != 0:
@@ -134,47 +134,48 @@
         self._info.line("    ecoupler1: %r" % self.inventory.ecoupler1.name)
         self._info.line("    ecoupler2: %r" % self.inventory.ecoupler2.name)
         self._info.line("    layout: %r" % self.inventory.layout.name)
-    
+
         return
 
-    class Invertory(BaseApplication.Inventory):
 
+    class Inventory(BaseApplication.Inventory):
+
         import pyre.inventory
 
         import Controller
         import Solver
         import Coupler
-        import Layout
+        import MultiLayout
 
         ccontroller = pyre.inventory.facility(name="ccontroller",
                                               factory=Controller.controller,
                                               args=("ccontroller","ccontroller"))
         econtroller1 = pyre.inventory.facility(name="econtroller1",
-                                              factory=Controller.controller,
-                                              args=("econtroller","econtroller"))
+                                               factory=Controller.controller,
+                                               args=("econtroller","econtroller"))
         econtroller2 = pyre.inventory.facility(name="econtroller2",
-                                              factory=Controller.controller,
-                                              args=("econtroller","econtroller"))
+                                               factory=Controller.controller,
+                                               args=("econtroller","econtroller"))
 
         ccoupler = pyre.inventory.facility("ccoupler",
                                            factory=Coupler.containingcoupler,
                                            args=("ccoupler","ccoupler"))
         ecoupler1 = pyre.inventory.facility("ecoupler1",
-                                           factory=Coupler.embeddedcoupler,
-                                           args=("ecoupler","ecoupler"))
+                                            factory=Coupler.embeddedcoupler,
+                                            args=("ecoupler","ecoupler"))
         ecoupler2 = pyre.inventory.facility("ecoupler2",
-                                           factory=Coupler.embeddedcoupler,
-                                           args=("ecoupler","ecoupler"))
+                                            factory=Coupler.embeddedcoupler,
+                                            args=("ecoupler","ecoupler"))
 
         csolver = pyre.inventory.facility("csolver",
                                           factory=Solver.coupledFullSolver,
                                           args=("csolver", "csolver"))
         esolver1 = pyre.inventory.facility("esolver1",
-                                       factory=Solver.coupledRegionalSolver,
-                                       args=("esolver", "esolver"))
+                                           factory=Solver.coupledRegionalSolver,
+                                           args=("esolver", "esolver"))
         esolver2 = pyre.inventory.facility("esolver2",
-                                       factory=Solver.coupledRegionalSolver,
-                                       args=("esolver", "esolver"))
+                                           factory=Solver.coupledRegionalSolver,
+                                           args=("esolver", "esolver"))
 
         layout = pyre.inventory.facility("layout", factory=MultiLayout.MultiLayout,
                                          args=("layout", "layout"))
@@ -182,6 +183,8 @@
         steps = pyre.inventory.int("steps", default=1)
 
 
-        
+# version
+__id__ = "$Id$"
+
 # End of file
-        
+

Modified: mc/3D/CitcomS/trunk/CitcomS/MultiLayout.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/MultiLayout.py	2007-07-06 18:00:49 UTC (rev 7607)
+++ mc/3D/CitcomS/trunk/CitcomS/MultiLayout.py	2007-07-06 20:46:10 UTC (rev 7608)
@@ -6,13 +6,13 @@
 #
 
 
-from pyre.components.Compenent import Component
+from Layout import Layout
 
-class MultiLayout(Component):
+class MultiLayout(Layout):
 
 
-    def __init(self, name, facility):
-        Compoent.__init__(self, name, facility)
+    def __init__(self, name, facility):
+        Layout.__init__(self, name, facility)
 
         # flag indicating that we are using
         # containing communicator
@@ -24,12 +24,12 @@
 
         # flag indicating that we are using
         # embedded comminicator2
-         self.ecomm2 = None
+        self.ecomm2 = None
 
         # list of communicators created to pass imformation
         # between different solvers
-        self.ccomPlus1 = []
-        self.ccomPlus2 = []
+        self.ccommPlus1 = []
+        self.ccommPlus2 = []
         self.ecommPlus1 = []
         self.ecommPlus2 = []
 
@@ -38,23 +38,10 @@
         self.nodes = 0
         return
 
-    def initialize(self, application):
-        self.discover()
-        self.verify(application)
-        self.createCommunicators()
-        return
 
-    def discover(self):
-        #Find the size and rank of the whole application
-        import mpi
-        self.comm = mpi.world()
-        self.rank = self.comm.rank
-        self.nodes = self.comm.size
-        return
-
     def verify(self, application):
         # check that we have at least 3 processor
-        if self.nodes <3:
+        if self.nodes < 3:
             import journal
             firewall = journal.firewall("MultiLayout")
             firewall.log("'%s' requires at least 3 processors" \
@@ -77,26 +64,8 @@
 
         return
 
-    
-    def check_duplicated(self, group):
-        s = set(group)
-        if len(s) != len(group):
-            import journal
-            firewall = journal.firewall("layout")
-            firewall.log('Duplicated element in group: %s' % group)
-        return
-            
-            
-     def check_disjoint(self, group0, group1):
-        s0 = set(group0)
-        s1 = set(group1)
-        if s0.intersection(s1):
-            import journal
-            firewall = journal.firewall("layout")
-            firewall.log('Groups are not disjoint: %s and %s' % (group0, group1))
-        return
-          
 
+
     def createCommunicators(self):
         # Create communicators for solvers and couplerd
 
@@ -115,7 +84,7 @@
         # ecommPlus1 is a list of communicators, with each communicator
         # contains a node in embedded_group1 and the whole containing_group
 
-        # ecommPlus2 is similar 
+        # ecommPlus2 is similar
         for node in containing_group:
             self.ecommPlus1.append(world.include(embedded_group1 + [node]))
             self.ecommPlus2.append(world.include(embedded_group2 + [node]))
@@ -125,27 +94,31 @@
 
         # commPlus2 is similar
         for node in embedded_group1:
-            self.ccommPlus.append(world.include(containing_group + [node]))
+            self.ccommPlus1.append(world.include(containing_group + [node]))
         for node in embedded_group2:
-            self.ccommPlus.append(world.include(containing_group + [node]))
+            self.ccommPlus2.append(world.include(containing_group + [node]))
 
         return
-       
-    class Inventory(Component.Inventory):
 
+
+    class Inventory(Layout.Inventory):
+
         import pyre.inventory
 
         # The containing solver will run on these nodes
         containing_group = pyre.inventory.slice("containing_group",
-                                                default=range(11))
+                                                default=range(12))
 
         # The embedded solver1 will run on these nodes
-        embedded_group1 = pyre.inventory.slice("embedded_group",
-                                              default=[11])
+        embedded_group1 = pyre.inventory.slice("embedded_group1",
+                                               default=[12])
 
         # The embedded solver2 will run on these nodes
-        embedded_group2 = pyre.inventory.slice("embedded_group",
-                                              default=[12])
+        embedded_group2 = pyre.inventory.slice("embedded_group2",
+                                               default=[13])
 
 
+# version
+__id__ = "$Id$"
+
 # End of file



More information about the cig-commits mailing list