[Yt-svn] yt-commit r944 - trunk/yt/lagos

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Mon Nov 17 23:22:49 PST 2008


Author: mturk
Date: Mon Nov 17 23:22:49 2008
New Revision: 944
URL: http://yt.spacepope.org/changeset/944

Log:
Slices and cutting planes should now respect parallelization.  More testing:
needed.  But, initial testing: promising!



Modified:
   trunk/yt/lagos/BaseDataTypes.py

Modified: trunk/yt/lagos/BaseDataTypes.py
==============================================================================
--- trunk/yt/lagos/BaseDataTypes.py	(original)
+++ trunk/yt/lagos/BaseDataTypes.py	Mon Nov 17 23:22:49 2008
@@ -455,7 +455,7 @@
                           self.center, self.vec)
         return mask
 
-class AMR2DData(AMRData, GridPropertiesMixin):
+class AMR2DData(AMRData, GridPropertiesMixin, ParallelAnalysisInterface):
     _key_fields = ['px','py','pdx','pdy']
     """
     Class to represent a set of :class:`AMRData` that's 2-D in nature, and
@@ -487,16 +487,24 @@
             fields_to_get = self.fields
         else:
             fields_to_get = ensure_list(fields)
+        temp_data = {}
         for field in fields_to_get:
-            if self.data.has_key(field):
-                continue
-            rvs=[]
+            if self.data.has_key(field): continue
             if field not in self.hierarchy.field_list:
                 if self._generate_field(field):
                     continue # A "True" return means we did it
-            self[field] = na.concatenate(
+            # To ensure that we use data from this object as much as possible,
+            # we're going to have to set the same thing several times
+            temp_data[field] = na.concatenate(
                 [self._get_data_from_grid(grid, field)
-                 for grid in self._grids])
+                 for grid in self._get_grids()])
+            # Now the next field can use this field
+            self[field] = temp_data[field] 
+        # We finalize
+        temp_data = self._mpi_catdict(temp_data)
+        # And set, for the next group
+        for field in temp_data.keys():
+            self[field] = temp_data[field]
 
 
     def _generate_field(self, field):
@@ -623,9 +631,9 @@
 
     def _generate_coords(self):
         points = []
-        for grid in self._grids:
+        for grid in self._get_grids():
             points.append(self._generate_grid_coords(grid))
-        t = na.concatenate(points)
+        t = self._mpi_catarray(na.concatenate(points))
         self['px'] = t[:,0]
         self['py'] = t[:,1]
         self['pz'] = t[:,2]
@@ -782,9 +790,9 @@
 
     def _generate_coords(self):
         points = []
-        for grid in self._grids:
+        for grid in self._get_grids():
             points.append(self._generate_grid_coords(grid))
-        t = na.concatenate(points)
+        t = self._mpi_catarray(na.concatenate(points))
         pos = (t[:,0:3] - self.center)
         self['px'] = na.dot(pos, self._x_vec)
         self['py'] = na.dot(pos, self._y_vec)
@@ -824,7 +832,7 @@
         L_name = ("%s" % self._norm_vec).replace(" ","_")[1:-1]
         return "%s_c%s_L%s" % (self.fields[0], cen_name, L_name)
 
-class AMRProjBase(AMR2DData, ParallelAnalysisInterface):
+class AMRProjBase(AMR2DData):
     _top_node = "/Projections"
     _key_fields = AMR2DData._key_fields + ['weight_field']
     def __init__(self, axis, field, weight_field = None,



More information about the yt-svn mailing list