[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