[yt-users] TotalMass for ORION data

Nathan Goldbaum nathan12343 at gmail.com
Mon May 6 16:55:43 PDT 2013


Hey Mark,

Clearly this behavior is undesirable and thanks for bringing it to our
attention.  I'll file an issue so we can be sure to fix this before the
next major release.

For now, you should be able to get the desired effect with the following:

 dd.quantities["TotalQuantity"]('CellMassMsun')

That will return the total gas mass in solar mass units.  If you want it in
CGS or code units, just use 'CellMass' or 'CellMassCode' respectively
instead of 'CellMassMsun'.  If you have any sink particles in your
simulation, they won't be included in the sum, so you'll have to do that by
hand.

-Nathan


On Mon, May 6, 2013 at 4:49 PM, Mark Krumholz <krumholz at ucolick.org> wrote:

>
> Hi All,
>
> I just updated to the latest version of yt, hoping that this would be
> fixed, but it seems not to be: the "TotalMass" function is broken for Orion
> data, and, from what I can tell, for any data set that doesn't contain dark
> matter particles. Here's what I get when I try to use it:
>
> In [1]: pf=load('data.0030.3d.hdf5')
> yt : [WARNING  ] 2013-05-06 16:43:36,339 Setting 1.0 in code units to be
> 1.0 cm
> yt : [WARNING  ] 2013-05-06 16:43:36,339 No time units.  Setting 1.0 = 1
> second.
> yt : [INFO     ] 2013-05-06 16:43:36,340 Parameters: current_time
>      = 6.78585436617e+13
> yt : [INFO     ] 2013-05-06 16:43:36,340 Parameters: domain_dimensions
>     = [256 256 256]
> yt : [INFO     ] 2013-05-06 16:43:36,341 Parameters: domain_left_edge
>      = [ -1.68000000e+18  -1.68000000e+18  -1.68000000e+18]
> yt : [INFO     ] 2013-05-06 16:43:36,341 Parameters: domain_right_edge
>     = [  1.68000000e+18   1.68000000e+18   1.68000000e+18]
>
> In [2]: dd=pf.h.all_data()
> ^[[Ayt : [INFO     ] 2013-05-06 16:43:53,804 Adding unknown field
> gravitational-potential to list of fields
>
> In [3]: dd.quantities["TotalMass"]()
> ---------------------------------------------------------------------------
> KeyError                                  Traceback (most recent call last)
> /home3/mkrumhol/yt-x86_64/src/yt-hg/scripts/iyt in <module>()
> ----> 1 dd.quantities["TotalMass"]()
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.pyc
> in __call__(self, *args, **kwargs)
>      90                           self._data_source.pf.h.io)
>      91         if lazy_reader and not self.force_unlazy:
> ---> 92             return self._call_func_lazy(args, kwargs)
>      93         else:
>      94             return self._call_func_unlazy(args, kwargs)
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.pyc
> in _call_func_lazy(self, args, kwargs)
>      97         self.retvals = [ [] for i in range(self.n_ret)]
>      98         for gi,g in enumerate(self._get_grids()):
> ---> 99             rv = self.func(GridChildMaskWrapper(g,
> self._data_source), *args, **kwargs)
>     100             if not iterable(rv): rv = (rv,)
>     101             for i in range(self.n_ret):
> self.retvals[i].append(rv[i])
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.pyc
> in _TotalMass(data)
>     152     """
>     153     baryon_mass = data["CellMassMsun"].sum()
> --> 154     particle_mass = data["ParticleMassMsun"].sum()
>     155     return [baryon_mass + particle_mass]
>     156 def _combTotalMass(data, total_mass):
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.pyc
> in __getitem__(self, item)
>      58     def __getitem__(self, item):
>      59         if item not in self.local_cache:
> ---> 60             data = self.data_source._get_data_from_grid(self.grid,
> item)
>      61             self.local_cache[item] = data
>      62         return self.local_cache[item]
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc in
> save_state(self, grid, field, *args, **kwargs)
>      93         old_keys = grid.field_data.keys()
>      94         grid.field_parameters = self.field_parameters
> ---> 95         tr = func(self, grid, field, *args, **kwargs)
>      96         grid.field_parameters = old_params
>      97         grid.field_data = YTFieldData( [(k, grid.field_data[k])
> for k in old_keys] )
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc in
> _get_data_from_grid(self, grid, field)
>    2643             return np.array([f[i,:][pointI] for i in range(3)])
>    2644         else:
> -> 2645             tr = grid[field]
>    2646             if tr.size == 1: # dx, dy, dz, cellvolume
>    2647                 tr = tr * np.ones(grid.ActiveDimensions,
> dtype='float64')
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/grid_patch.pyc in
> __getitem__(self, key)
>     155         """
>     156         if key not in self.field_data:
> --> 157             self.get_data(key)
>     158         return self.field_data[key]
>     159
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/grid_patch.pyc in
> get_data(self, field, convert)
>     198                     else: raise
>     199             else:
> --> 200                 self._generate_field(field)
>     201         return self.field_data[field]
>     202
>
> /home3/mkrumhol/yt-x86_64/src/yt-hg/yt/data_objects/grid_patch.pyc in
> _generate_field(self, field)
>     145                 self[field] = self.pf.field_info[field](self)
>     146         else: # Can't find the field, try as it might
> --> 147             raise exceptions.KeyError(field)
>     148
>     149     def has_key(self, key):
>
> KeyError: 'ParticleMassMsun'
>
> This isn't a huge deal, because I can use "TotalQuantity" on "Density" as
> a workaround, but I thought I would report it.
>
> --
> Mark Krumholz
> krumholz at ucolick.org
>
>
>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20130506/4d0a1354/attachment.htm>


More information about the yt-users mailing list