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

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Mon Apr 20 14:56:31 PDT 2009


Author: mturk
Date: Mon Apr 20 14:56:29 2009
New Revision: 1267
URL: http://yt.spacepope.org/changeset/1267

Log:
Radius and ParticleRadius and their unit-converted friends are all now
periodic, as are AMRSpheres.  Also fixed a regression in the unit tests where a
None center replaced the default of 0.



Modified:
   trunk/yt/lagos/BaseDataTypes.py
   trunk/yt/lagos/HierarchyType.py
   trunk/yt/lagos/UniversalFields.py

Modified: trunk/yt/lagos/BaseDataTypes.py
==============================================================================
--- trunk/yt/lagos/BaseDataTypes.py	(original)
+++ trunk/yt/lagos/BaseDataTypes.py	Mon Apr 20 14:56:29 2009
@@ -636,7 +636,7 @@
         """
         AMR2DData.__init__(self, axis, fields, pf, **kwargs)
         self.center = center
-        self.set_field_parameter('center',center)
+        if center is not None: self.set_field_parameter('center',center)
         self.coord = coord
         if node_name is False:
             self._refresh_data()
@@ -905,7 +905,7 @@
         AMR2DData.__init__(self, axis, field, pf, node_name = None, **kwargs)
         self._field_cuts = field_cuts
         self.center = center
-        self.set_field_parameter('center',center)
+        if center is not None: self.set_field_parameter('center',center)
         self._node_name = node_name
         self._initialize_source(source)
         self._grids = self.source._grids
@@ -1773,6 +1773,7 @@
             raise SyntaxError("Your radius is smaller than your finest cell!")
         self.set_field_parameter('radius',radius)
         self.radius = radius
+        self.DW = self.pf["DomainRightEdge"] - self.pf["DomainLeftEdge"]
         self._refresh_data()
 
     def _get_list_of_grids(self, field = None):
@@ -1783,7 +1784,9 @@
         self._grids = na.array(grids)
 
     def _is_fully_enclosed(self, grid):
-        corner_radius = na.sqrt(((grid._corners - self.center)**2.0).sum(axis=1))
+        r = na.abs(grid._corners - self.center)
+        r = na.minimum(r, na.abs(self.DW[None,:]-r))
+        corner_radius = na.sqrt((r**2.0).sum(axis=1))
         return na.all(corner_radius <= self.radius)
 
     @restore_grid_state # Pains me not to decorate with cache_mask here

Modified: trunk/yt/lagos/HierarchyType.py
==============================================================================
--- trunk/yt/lagos/HierarchyType.py	(original)
+++ trunk/yt/lagos/HierarchyType.py	Mon Apr 20 14:56:29 2009
@@ -424,8 +424,11 @@
         """
         centers = (self.gridRightEdge + self.gridLeftEdge)/2.0
         long_axis = na.maximum.reduce(self.gridRightEdge - self.gridLeftEdge, 1)
-        t = centers - center
-        dist = na.sqrt(t[:,0]**2+t[:,1]**2+t[:,2]**2)
+        t = na.abs(centers - center)
+        DW = self.parameter_file["DomainRightEdge"] \
+           - self.parameter_file["DomainLeftEdge"]
+        na.minimum(t, na.abs(DW-t), t)
+        dist = na.sqrt(na.sum((t**2.0), axis=1))
         gridI = na.where(na.logical_and((self.gridDxs<=radius)[:,0],(dist < (radius + long_axis))) == 1)
         return self.grids[gridI], gridI
 

Modified: trunk/yt/lagos/UniversalFields.py
==============================================================================
--- trunk/yt/lagos/UniversalFields.py	(original)
+++ trunk/yt/lagos/UniversalFields.py	Mon Apr 20 14:56:29 2009
@@ -575,18 +575,23 @@
           units=r"M_{\odot}\rm{km}\rm{Mpc}/\rm{s}",
           particle_type=True)
 
-
 def _ParticleRadius(field, data):
     center = data.get_field_parameter("center")
-    radius = na.sqrt((data["particle_position_x"] - center[0])**2.0 +
-                     (data["particle_position_y"] - center[1])**2.0 +
-                     (data["particle_position_z"] - center[2])**2.0)
+    DW = data.pf["DomainRightEdge"] - data.pf["DomainLeftEdge"]
+    radius = na.zeros(data["particle_position_x"].shape, dtype='float64')
+    for i, ax in enumerate('xyz'):
+        r = na.abs(data["particle_position_%s" % ax] - center[i])
+        radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+    na.sqrt(radius, radius)
     return radius
 def _Radius(field, data):
     center = data.get_field_parameter("center")
-    radius = na.sqrt((data["x"] - center[0])**2.0 +
-                     (data["y"] - center[1])**2.0 +
-                     (data["z"] - center[2])**2.0)
+    DW = data.pf["DomainRightEdge"] - data.pf["DomainLeftEdge"]
+    radius = na.zeros(data["x"].shape, dtype='float64')
+    for i, ax in enumerate('xyz'):
+        r = na.abs(data[ax] - center[i])
+        radius += na.minimum(r, na.abs(DW[i]-r))**2.0
+    na.sqrt(radius, radius)
     return radius
 def _ConvertRadiusCGS(data):
     return data.convert("cm")



More information about the yt-svn mailing list