<div dir="ltr">Interesting.  I was totally unaware of this functionality, as it doesn't appear to be documented.  I'd still be a fan of the force_units kwarg, though.  But this may help for Elizabeth's current quandary.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 24, 2015 at 7:32 AM, Matthew Turk <span dir="ltr"><<a href="mailto:matthewturk@gmail.com" target="_blank">matthewturk@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If absolutely necessary, you can "force" units with:<br>
<br>
data.apply_units(array_to_override, unit_string)<br>
<div class="HOEnZb"><div class="h5"><br>
On Tue, Nov 24, 2015 at 9:31 AM, Cameron Hummels <<a href="mailto:chummels@gmail.com">chummels@gmail.com</a>> wrote:<br>
> I would be a fan of making a "force_units" kwarg to enable one to create a<br>
> new field with different units than those specified.  This could resolve<br>
> some of the problems with native frontend fields being stuck in the wrong<br>
> unit, like I was running into last week.  As long as force_unit is off by<br>
> default, it would just enable us to give full control to the user.<br>
><br>
> On Tue, Nov 24, 2015 at 4:25 AM, Nathan Goldbaum <<a href="mailto:nathan12343@gmail.com">nathan12343@gmail.com</a>><br>
> wrote:<br>
>><br>
>> Hi Elizabeth,<br>
>><br>
>> This is discussed in the docs here:<br>
>><br>
>><br>
>> <a href="http://yt-project.org/doc/developing/creating_derived_fields.html#defining-a-new-field" rel="noreferrer" target="_blank">http://yt-project.org/doc/developing/creating_derived_fields.html#defining-a-new-field</a><br>
>><br>
>> You can do one of two things. First, the way I'd handle this is to ensure<br>
>> that your field definition is returning data that have units of Kelvin.<br>
>><br>
>> For example, something like:<br>
>><br>
>>     from yt.utilities.physical_constants import kb, mh<br>
>><br>
>>     mu = 0.6<br>
>><br>
>>     @derived_field(name=‘Temp’, units=“K”)<br>
>>     def _Temp(field, data):<br>
>>         return data['thermal_energy'] / kb * mu * mh<br>
>><br>
>> You could also make mu a field parameter rather than a constant, or if you<br>
>> have a simulation where mu varies with position, make a mean molecular<br>
>> weight derived field.<br>
>><br>
>> You can also ensure that your field definition returning a dimensionless<br>
>> value by stripping the units:<br>
>><br>
>>     @derived_field(name=‘Temp’, units=“K”)<br>
>>     def _Temp(field, data):<br>
>>         ret = data['thermal_energy'])<br>
>>         return ret.ndarray_view()<br>
>><br>
>> We don't currently have a way to *force* the units to be whatever you<br>
>> specify in add_field. That said, I don't think it would be terribly hard to<br>
>> implement.<br>
>><br>
>> We already have units='auto', which forces the units to be the same as the<br>
>> return value of your field function. We might add a keyword<br>
>> 'force_units=True' to add_field which does what you're looking for. I'd be<br>
>> happy to review a pull request adding this, or feel free to open an issue<br>
>> about it to add to our project backlog.<br>
>><br>
>> Also, worth pointing out that this was designed this way not to anger<br>
>> users, but to protect them from making mistakes in their field units, which<br>
>> we found to be a common cause of bugs in yt-2. It does mean you need to "buy<br>
>> into" the unit system in your field definition, but the bonus is that you<br>
>> can be much more sure that you're not making a mistake.<br>
>><br>
>> Hope that helps,<br>
>><br>
>> Nathan<br>
>><br>
>> On Tue, Nov 24, 2015 at 12:41 AM, Elizabeth Tasker<br>
>> <<a href="mailto:tasker@astro1.sci.hokudai.ac.jp">tasker@astro1.sci.hokudai.ac.jp</a>> wrote:<br>
>>><br>
>>> Hi everyone,<br>
>>><br>
>>> While using yt-3, I created a derived field:<br>
>>><br>
>>> @derived_field(name=‘Temp’, units=“K”)<br>
>>> def _Temp …..<br>
>>><br>
>>> It crashes with a YTFieldUnitError because it believes the units should<br>
>>> be cm**2/s**2. I understand why yt thinks this — I’m using thermal_energy in<br>
>>> the definition for Temp. However, the units are truly Kelvin and I think I<br>
>>> should be able to specify whatever I like in “units”!<br>
>>><br>
>>> Is there a way to stop yt crashing when it disagrees with your life<br>
>>> choices?<br>
>>><br>
>>> Elizabeth<br>
>>> _______________________________________________<br>
>>> yt-users mailing list<br>
>>> <a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
>>> <a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" rel="noreferrer" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> yt-users mailing list<br>
>> <a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
>> <a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" rel="noreferrer" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
>><br>
><br>
><br>
><br>
> --<br>
> Cameron Hummels<br>
> NSF Postdoctoral Fellow<br>
> Department of Astronomy<br>
> California Institute of Technology<br>
> <a href="http://chummels.org" rel="noreferrer" target="_blank">http://chummels.org</a><br>
><br>
> _______________________________________________<br>
> yt-users mailing list<br>
> <a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
> <a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" rel="noreferrer" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
><br>
_______________________________________________<br>
yt-users mailing list<br>
<a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
<a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" rel="noreferrer" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>Cameron Hummels<div><span style="font-size:12.8000001907349px">NSF Postdoctoral Fellow</span></div><div><span style="font-size:12.8000001907349px">Department of Astronomy</span></div><div><span style="font-size:12.8000001907349px">California Institute of Technology</span><br></div><div><a href="http://chummels.org" style="font-size:12.8000001907349px" target="_blank">http://chummels.org</a><br></div></div></div></div>
</div>