[Yt-svn] yt-commit r510 - trunk/yt/lagos
mturk at wrangler.dreamhost.com
mturk at wrangler.dreamhost.com
Fri May 30 09:40:17 PDT 2008
Author: mturk
Date: Fri May 30 09:40:15 2008
New Revision: 510
URL: http://yt.spacepope.org/changeset/510
Log:
Added -- *reluctantly* -- another field to the DerivedField definition, which
describes whether or not a field is in all the grids. If it's not, then pff,
it gets zero'd out. This enables us, for instance, to do projections of the
field 'dark matter density.'
Modified:
trunk/yt/lagos/BaseDataTypes.py
trunk/yt/lagos/BaseGridType.py
trunk/yt/lagos/DerivedFields.py
Modified: trunk/yt/lagos/BaseDataTypes.py
==============================================================================
--- trunk/yt/lagos/BaseDataTypes.py (original)
+++ trunk/yt/lagos/BaseDataTypes.py Fri May 30 09:40:15 2008
@@ -297,6 +297,27 @@
else: # Can't find the field, try as it might
raise exceptions.KeyError(field)
+ def get_data(self, fields=None, in_grids=False):
+ if self._grids == None:
+ self._get_list_of_grids()
+ points = []
+ #if not self.has_key('dx'):
+ #self._generate_coords()
+ if not fields:
+ fields_to_get = self.fields
+ else:
+ fields_to_get = ensure_list(fields)
+ mylog.debug("Going to obtain %s (%s)", fields_to_get, self.fields)
+ for field in fields_to_get:
+ if self.data.has_key(field):
+ continue
+ mylog.info("Getting field %s from %s", field, len(self._grids))
+ if field not in self.hierarchy.field_list and not in_grids:
+ if self._generate_field(field):
+ continue # True means we already assigned it
+ self[field] = na.concatenate(
+ [self._get_data_from_grid(grid, field)
+ for grid in self._grids])
class EnzoOrthoRayBase(Enzo1DData):
def __init__(self, axis, coords, fields=None, pf=None, **kwargs):
@@ -320,28 +341,6 @@
& (self.py < self.pf.hierarchy.gridRightEdge[:,self.py_ax]))
self._grids = self.hierarchy.grids[y]
- def get_data(self, fields=None, in_grids=False):
- if self._grids == None:
- self._get_list_of_grids()
- points = []
- #if not self.has_key('dx'):
- #self._generate_coords()
- if not fields:
- fields_to_get = self.fields
- else:
- fields_to_get = ensure_list(fields)
- mylog.debug("Going to obtain %s (%s)", fields_to_get, self.fields)
- for field in fields_to_get:
- if self.data.has_key(field):
- continue
- mylog.info("Getting field %s from %s", field, len(self._grids))
- if field not in self.hierarchy.field_list and not in_grids:
- if self._generate_field(field):
- continue # True means we already assigned it
- self[field] = na.concatenate(
- [self._get_data_from_grid(grid, field)
- for grid in self._grids])
-
def _get_data_from_grid(self, grid, field):
# We are orthogonal, so we can feel free to make assumptions
# for the sake of speed.
@@ -545,7 +544,9 @@
sl = tuple(sl)
if fieldInfo.has_key(field) and fieldInfo[field].particle_type:
return grid[field]
- if not grid.has_key(field):
+ elif field in fieldInfo and fieldInfo[field].not_in_all:
+ dv = grid[field][sl]
+ elif not grid.has_key(field):
conv_factor = 1.0
if fieldInfo.has_key(field):
conv_factor = fieldInfo[field]._convert_function(self)
Modified: trunk/yt/lagos/BaseGridType.py
==============================================================================
--- trunk/yt/lagos/BaseGridType.py (original)
+++ trunk/yt/lagos/BaseGridType.py Fri May 30 09:40:15 2008
@@ -97,8 +97,11 @@
try:
self[field] = self.readDataFast(field) * conv_factor
except self._read_exception:
- if field in fieldInfo and fieldInfo[field].particle_type:
- self[field] = na.array([],dtype='float64')
+ if field in fieldInfo:
+ if fieldInfo[field].particle_type:
+ self[field] = na.array([],dtype='float64')
+ if fieldInfo[field].not_in_all:
+ self[field] = na.zeros(self.ActiveDimensions, dtype='float64')
else: raise
else:
self._generate_field(field)
Modified: trunk/yt/lagos/DerivedFields.py
==============================================================================
--- trunk/yt/lagos/DerivedFields.py (original)
+++ trunk/yt/lagos/DerivedFields.py Fri May 30 09:40:15 2008
@@ -130,7 +130,7 @@
units = "", projected_units = "",
take_log = True, validators = None,
particle_type = False, vector_field=False,
- display_field = True,
+ display_field = True, not_in_all=False,
projection_conversion = "cm"):
self.name = name
self._function = function
@@ -148,6 +148,7 @@
self.vector_field = vector_field
self.projection_conversion = projection_conversion
self.display_field = display_field
+ self.not_in_all = not_in_all
def check_available(self, data):
for validator in self.validators:
validator(data)
@@ -350,8 +351,10 @@
add_field("particle mass", function=particle_func("particle_mass"),
validators=[ValidateSpatial(0)], particle_type=True)
-add_field("Dark matter density", function=lambda a,b:None,
- display_field=False)
+add_field("Dark matter density", function=lambda a,b: None,
+ validators=[ValidateDataField("Dark matter density"),
+ ValidateSpatial(0)],
+ not_in_all = True)
def _ParticleMass(field, data):
particles = data["particle_mass"].astype('float64') * \
More information about the yt-svn
mailing list