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

Prateek Gupta prateekgidolia at gmail.com
Fri Aug 4 16:18:11 PDT 2017


I think just applying units to AveMomtX field while defining will work if
you derived it in yt. May be while defining a new field (AveMomtX), it
doesn't get units of momentum, it seems as "dimensionless" quantity.
But if you are taking AveMomtX as a new field from Enzo itself, after
modification of Enzo code, then yt required to know about this that
this(AveMomtX) is also the field in Enzo.


Best Regards
-Prateek Gupta

On Thu, Aug 3, 2017 at 6:07 PM, Nathan Goldbaum <nathan12343 at gmail.com>
wrote:

> 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
>>
>
> _______________________________________________
> 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/20170805/939f1676/attachment-0001.html>


More information about the yt-users mailing list