[yt-users] ray problem with cell volume

Elizabeth Tasker taskere at mcmaster.ca
Mon May 2 08:16:14 PDT 2011


Thank you!

Matthew Turk wrote:
> Hi Elizabeth,
>
> This should now be fixed in the yt branch tip.  A fix for ortho rays
> wasn't apply to non-ortho rays.
>
> -Matt
>
> On Thu, Apr 28, 2011 at 11:33 AM, Elizabeth Tasker <taskere at mcmaster.ca> wrote:
>   
>> Hi,
>>
>> When using the ray feature in yt, we hit problems if we try to plot any
>> variable that contains the cell volume. e.g.
>>
>> def _Momentum(field, data):
>>   return (data["Density"]*data["CellVolume"]*sqrt(
>>        data["x-velocity"]**2.0
>>        + data["y-velocity"]**2.0
>>        + data["z-velocity"]**2.0 ))
>>
>>
>>
>> ray = pf.h.ray([0.5, 0.5, 0.5], [1.0,1.0,1.0], "Momentum")
>>   pylab.plot(ray["RadiusCode"], ray["Momentum"], 'o')
>>
>>
>> Gives:
>>
>>
>>
>> IndexError                                Traceback (most recent call last)
>> /saw_sfs/work/chris/yt/scripts/iyt in <module>()
>> ----> 1                                             2
>>                       3                                             4
>>                                       5
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in
>> __getitem__(self, key)
>>   274             if key not in self.fields:
>>        275                 self.fields.append(key)
>>          --> 276             self.get_data(key)
>>                    277         return self.data[key]
>>                         278
>>
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in get_data(self,
>> fields, in_grids)
>>   445             mylog.info("Getting field %s from %s", field,
>> len(self._grids))             446             if field not in
>> self.hierarchy.field_list and not in_grids:              --> 447
>>     if field not in ("dts", "t") and self._generate_field(field):
>> 448                     continue # True means we already assigned it
>>                449             self[field] = na.concatenate(
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in
>> _generate_field(self, field)
>>   423                 return False
>>              424             else:
>>                      --> 425                 self[field] =
>> self.pf.field_info[field](self)                       426
>> return True                                                         427
>>     else: # Can't find the field, try as it might
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/field_info_container.pyc in
>> __call__(self, data)
>>   292         ii = self.check_available(data)
>>            293         original_fields = data.keys() # Copy
>>                  --> 294         dd = self._function(self, data)
>>                              295         dd *= self._convert_function(data)
>>                                       296         for field_name in
>> data.keys():
>> /saw_sfs/work/chris/yt/scripts/iyt in _Momentum(field, data)
>>    14                                                        15 def
>> _Momentum(field, data):                        ---> 16     return
>> (data["Density"]*data["CellVolume"]*sqrt(
>>    17          data["x-velocity"]**2.0
>>
>>    18          + data["y-velocity"]**2.0
>>
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in
>> __getitem__(self, key)
>>   274             if key not in self.fields:
>>        275                 self.fields.append(key)
>>          --> 276             self.get_data(key)
>>                    277         return self.data[key]
>>                         278
>>
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in get_data(self,
>> fields, in_grids)
>>   445             mylog.info("Getting field %s from %s", field,
>> len(self._grids))             446             if field not in
>> self.hierarchy.field_list and not in_grids:              --> 447
>>     if field not in ("dts", "t") and self._generate_field(field):
>> 448                     continue # True means we already assigned it
>>                449             self[field] = na.concatenate(
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in
>> _generate_field(self, field)
>>   423                 return False
>>              424             else:
>>                      --> 425                 self[field] =
>> self.pf.field_info[field](self)                       426
>> return True
>>   427         else: # Can't find the field, try as it might
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/field_info_container.pyc in
>> __call__(self, data)
>>   292         ii = self.check_available(data)
>>   293         original_fields = data.keys() # Copy
>> --> 294         dd = self._function(self, data)
>>   295         dd *= self._convert_function(data)
>>   296         for field_name in data.keys():
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/universal_fields.pyc in
>> _CellVolume(field, data)
>>   392
>>   393 def _CellVolume(field, data):
>> --> 394     if data['dx'].size == 1:
>>   395         try:
>>   396             return data['dx']*data['dy']*data['dx']*\
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in
>> __getitem__(self, key)
>>   274             if key not in self.fields:
>>   275                 self.fields.append(key)
>> --> 276             self.get_data(key)
>>   277         return self.data[key]
>>   278
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in get_data(self,
>> fields, in_grids)
>>   449             self[field] = na.concatenate(
>>   450                 [self._get_data_from_grid(grid, field)
>> --> 451                  for grid in self._grids])
>>   452             if not self.data.has_key(field):
>>   453                 continue
>>
>> /saw_sfs/work/chris/yt/yt/data_objects/data_containers.pyc in
>> _get_data_from_grid(self, grid, field)
>>   558         if field == 'dts': return self._dts[grid.id][mask]
>>   559         if field == 't': return self._ts[grid.id][mask]
>> --> 560         return grid[field][mask]
>>   561
>>   562     @cache_mask
>>
>> IndexError: invalid index to scalar variable.
>>
>>
>>
>> Any ideas?
>>
>> Elizabeth
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>
>>     
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>   




More information about the yt-users mailing list