[yt-users] problem with units when defining difference of velocity-like fields
Wolfram Schmidt
wolfram.schmidt at uni-hamburg.de
Thu Aug 3 01:28:38 PDT 2017
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
More information about the yt-users
mailing list