[yt-users] problem with units when defining difference of velocity-like fields

Nathan Goldbaum nathan12343 at gmail.com
Thu Aug 3 05:37:01 PDT 2017


What are the units of AveMomtX right now? It seems it's getting read in as
dimensionless, probably because it's not a field yt knows about. To fix
this error you will need to apply units to the AveMomtX field in your field
definition. If you've modified the Enzo code to add this new field to your
Enzo outputs, you could also modify yt's Enzo frontend to "teach" yt about
the new field you've added. See yt/frontends/enzo/fields.py, specifically
the known_other_fields tuple.

On Thu, Aug 3, 2017 at 3:28 AM Wolfram Schmidt <
wolfram.schmidt at uni-hamburg.de> wrote:

> Dear all,
>
> I encountered a problem when defining a the fluctuation of the velocity
> with respect to a smoothed velocity as derived field in yt:
>
> def _fluc_velocity_x(field, data):
>      return data["x-velocity"] - data["AveMomtX"]/data["density"]
>
> ds.add_field("fluc_velocity_x", function=_fluc_velocity_x,
> force_override=True)
>
> Here x-velocity and density are standard baryon fields defined in Enzo
> and AveMomtX is an additional baryon field for smoothed momentum.
>
> When I load a data dump and execute the above definition, I get the
> following error:
>
>
> /lrz/sys/tools/python/2.7_anaconda_nompi/lib/python2.7/site-packages/yt/units/yt_array.py
> in sanitize_units_add(this_object, other_object, op_string)
>      126     if isinstance(ret, YTArray):
>      127         if not inp.units.same_dimensions_as(ret.units):
> --> 128             raise YTUnitOperationError(op_string, inp.units,
> ret.units)
>      129         ret = ret.in_units(inp.units)
>      130     # If the other object is not a YTArray, the only valid case
> is adding
>
> YTUnitOperationError: The subtraction operator for YTArrays with units
> (code_velocity) and (code_length**3/code_mass) is not well defined.
>
> After looking into
> http://yt-project.org/doc/analyzing/units/fields_and_unit_conversion.html,
> I tried
>
> ds.add_field("fluc_velocity_x", units="cm/s", function=_fluc_velocity_x,
> force_override=True)
>
> but this results in the same error as before. Apparently, the problem is
> that yt does not recognize that momentum divided by density is a
> velocity and therefore cannot match the units to the first term
> (x-velocity).
>
> There are unit conversion functions such as .in_cgs(), but they are not
> applicable to the data objects in the above definition.
>
> So can anyone tell me how to fix this?
>
> Cheers,
>
> Wolfram
>
>
>
> _______________________________________________
> 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/20170803/3e8da838/attachment-0001.html>


More information about the yt-users mailing list