<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Kathy,<div class=""><br class=""></div><div class="">The reason it does not work is because data[“dens”]/(2.36*10**(-24)) has units of g/cm**3, but the field you want to define has units of cm**-3. yt 3.x is unit-aware, unlike yt 2.x. You’ll have to get your field definition into dimensionally correct units. </div><div class=""><br class=""></div><div class="">It looks like you’re taking the gas density and dividing it by some mean molecular weight times the proton mass. It would be better to do this a bit more explicitly:</div><div class=""><br class=""></div><div class="">from yt.utilities.physical_constants import mp</div><div class="">mu = 1.0 # set mu to whatever your mean molecular weight is</div><div class=""><br class=""></div><div class=""><div dir="ltr" class=""><div class="">def _numdens(field, data):<br class="">    return data["dens"]/(mu*mp)<br class="">ds.add_field("numdens", function=_numdens, units="1/cm**3”)</div></div><div class=""><br class=""></div>Since mp has units of grams, this will get the array you’re returning into a dimensionally correct state. </div><div class=""><br class=""></div><div class="">To find out more about how units are now handled in yt, see:</div><div class=""><br class=""></div><div class=""><a href="http://yt-project.org/docs/3.1/analyzing/units/index.html#units" class="">http://yt-project.org/docs/3.1/analyzing/units/index.html#units</a></div><div class=""><br class=""></div><div class="">Best,</div><div class=""><br class=""></div><div class="">John</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Apr 7, 2015, at 4:33 PM, Kathy Eastwood <<a href="mailto:kathy.eastwood@nau.edu" class="">kathy.eastwood@nau.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class="">Hi, I *think* I introduced this problem when switching from version 2 to version 3...I am currently running version 3.1.<br class=""><br class=""></div>I define a derived field, number density, from the original density field, but something seems to be wrong with the units. I cannot make a sliceplot (as I used to be able to, in the old version), and I get other "unit conversion errors".<br class=""><br class=""></div><div class="">thanks,<br class=""></div><div class="">kathy<br class=""></div><div class=""><br class=""></div>This cell works ok:<br class=""><div class=""><br class="">def _numdens(field, data):<br class="">    return data["dens"]/(2.36*10**(-24)) <br class="">ds.add_field("numdens", function=_numdens, units="1/cm**3")<br class=""><br class=""></div><div class="">This cell does NOT work, and I get a very similar error when trying to do a sliceplot:<br class=""><br class="">maxval_numdens, maxloc_numdens = ds.find_max('numdens')<br class="">print maxval_numdens<br class="">print maxloc_numdens<br class=""><br class=""><br class=""><pre class=""><span class="">YTUnitConversionError</span>                     Traceback (most recent call last)
<span class=""><ipython-input-12-8b3af9af1cf1></span> in <span class=""><module><span class="">()</span>
<span class="">----> 1<span class=""> </span>maxval_numdens</span><span class="">,</span> </span>maxloc_numdens <span class="">=</span> ds<span class="">.</span>find_max<span class="">(</span><span class="">'numdens'</span><span class="">)</span><span class=""></span>
<span class="">      2</span> <span class="">print</span> maxval_numdens<span class=""></span>
<span class="">      3</span> <span class="">print</span> maxloc_numdens<span class=""></span>

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/data_objects/static_output.pyc</span> in <span class="">find_max<span class="">(self, field)</span>
<span class="">    524</span>         </span>source <span class="">=</span> self<span class="">.</span>all_data<span class="">(</span><span class="">)</span><span class=""></span>
<span class="">    525</span>         max_val<span class="">,</span> maxi<span class="">,</span> mx<span class="">,</span> my<span class="">,</span> mz <span class="">=</span><span class=""> </span><span class="">\</span><span class=""></span>
<span class="">--> 526<span class="">             </span>source</span><span class="">.</span>quantities<span class="">.</span>max_location<span class="">(</span>field<span class="">)</span><span class=""></span>
<span class="">    527</span>         <a href="http://mylog.info/" class="">mylog.info</a>("Max Value is %0.5e at %0.16f %0.16f %0.16f",
<span class="">    528</span>               max_val, mx, my, mz)

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.pyc</span> in <span class="">__call__<span class="">(self, field)</span>
<span class="">    524</span> <span class=""></span></span>
<span class="">    525</span>     <span class="">def</span> __call__<span class="">(</span>self<span class="">,</span> field<span class="">)</span><span class="">:</span><span class=""></span>
<span class="">--> 526<span class="">         </span>rv</span> <span class="">=</span> super<span class="">(</span>MaxLocation<span class="">,</span> self<span class="">)</span><span class="">.</span>__call__<span class="">(</span>field<span class="">)</span><span class=""></span>
<span class="">    527</span>         <span class="">if</span> len<span class="">(</span>rv<span class="">)</span> <span class="">==</span> <span class="">1</span><span class="">:</span> rv <span class="">=</span> rv<span class="">[</span><span class="">0</span><span class="">]</span><span class=""></span>
<span class="">    528</span>         <span class="">return</span> rv<span class=""></span>

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.pyc</span> in <span class="">__call__<span class="">(self, *args, **kwargs)</span>
<span class="">     54</span>         </span>storage <span class="">=</span> <span class="">{</span><span class="">}</span><span class=""></span>
<span class="">     55</span>         <span class="">for</span> sto<span class="">,</span> ds <span class="">in</span> parallel_objects<span class="">(</span>chunks<span class="">,</span> <span class="">-</span><span class="">1</span><span class="">,</span> storage <span class="">=</span> storage<span class="">)</span><span class="">:</span><span class=""></span>
<span class="">---> 56<span class="">             </span>sto</span><span class="">.</span>result <span class="">=</span> self<span class="">.</span>process_chunk<span class="">(</span>ds<span class="">,</span> <span class="">*</span>args<span class="">,</span> <span class="">**</span>kwargs<span class="">)</span><span class=""></span>
<span class="">     57</span>         <span class=""># Now storage will have everything, and will be done via pickling, so</span><span class=""></span><span class=""></span>
<span class="">     58</span>         <span class=""># the units will be preserved.  (Credit to Nathan for this</span><span class=""></span><span class=""></span>

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.pyc</span> in <span class="">process_chunk<span class="">(self, data, field)</span>
<span class="">    535</span>         </span>mz <span class="">=</span> array_like_field<span class="">(</span>data<span class="">,</span> <span class="">-</span><span class="">1</span><span class="">,</span> <span class="">"z"</span><span class="">)</span><span class=""></span>
<span class="">    536</span>         maxi <span class="">=</span> <span class="">-</span><span class="">1</span><span class=""></span>
<span class="">--> 537<span class="">         <span class="">if</span> </span>data</span><span class="">[</span>field<span class="">]</span><span class="">.</span>size <span class="">></span> <span class="">0</span><span class="">:</span><span class=""></span>
<span class="">    538</span>             maxi <span class="">=</span> np<span class="">.</span>argmax<span class="">(</span>data<span class="">[</span>field<span class="">]</span><span class="">)</span><span class=""></span>
<span class="">    539</span>             ma <span class="">=</span> data<span class="">[</span>field<span class="">]</span><span class="">[</span>maxi<span class="">]</span><span class=""></span>

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc</span> in <span class="">__getitem__<span class="">(self, key)</span>
<span class="">    246</span>                 <span class="">return</span> </span>self<span class="">.</span>field_data<span class="">[</span>f<span class="">]</span><span class=""></span>
<span class="">    247</span>             <span class="">else</span><span class="">:</span><span class=""></span>
<span class="">--> 248<span class="">                 </span>self</span><span class="">.</span>get_data<span class="">(</span>f<span class="">)</span><span class=""></span>
<span class="">    249</span>         <span class=""># fi.units is the unit expression string. We depend on the registry</span><span class=""></span><span class=""></span>
<span class="">    250</span>         <span class=""># hanging off the dataset to define this unit object.</span><span class=""></span><span class=""></span>

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc</span> in <span class="">get_data<span class="">(self, fields)</span>
<span class="">    691</span> <span class=""></span></span>
<span class="">    692</span>         fields_to_generate <span class="">+=</span> gen_fluids <span class="">+</span> gen_particles<span class=""></span>
<span class="">--> 693<span class="">         </span>self</span><span class="">.</span>_generate_fields<span class="">(</span>fields_to_generate<span class="">)</span><span class=""></span>
<span class="">    694</span>         <span class="">for</span> field <span class="">in</span> self<span class="">.</span>field_data<span class="">.</span>keys<span class="">(</span><span class="">)</span><span class="">:</span><span class=""></span>
<span class="">    695</span>             <span class="">if</span> field <span class="">not</span> <span class="">in</span> ofields<span class="">:</span><span class=""></span>

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.pyc</span> in <span class="">_generate_fields<span class="">(self, fields_to_generate)</span>
<span class="">    717</span>                         <span class="">raise</span> </span>RuntimeError<span class=""></span>
<span class="">    718</span>                     self<span class="">.</span>field_data<span class="">[</span>field<span class="">]</span> <span class="">=</span> fd<span class=""></span>
<span class="">--> 719<span class="">                     </span>fd</span><span class="">.</span>convert_to_units<span class="">(</span>fi<span class="">.</span>units<span class="">)</span><span class=""></span>
<span class="">    720</span>                 <span class="">except</span> GenerationInProgress <span class="">as</span> gip<span class="">:</span><span class=""></span>
<span class="">    721</span>                     <span class="">for</span> f <span class="">in</span> gip<span class="">.</span>fields<span class="">:</span><span class=""></span>

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/units/yt_array.pyc</span> in <span class="">convert_to_units<span class="">(self, units)</span>
<span class="">    387</span> <span class=""></span></span>
<span class="">    388</span>         """
<span class="">--> 389<span class="">         </span>new_units</span> <span class="">=</span> self<span class="">.</span>_unit_repr_check_same<span class="">(</span>units<span class="">)</span><span class=""></span>
<span class="">    390</span>         <span class="">(</span>conversion_factor<span class="">,</span> offset<span class="">)</span> <span class="">=</span> self<span class="">.</span>units<span class="">.</span>get_conversion_factor<span class="">(</span>new_units<span class="">)</span><span class=""></span>
<span class="">    391</span> <span class=""></span>

<span class="">/home/kde/yt-x86_64/src/yt-hg/yt/units/yt_array.pyc</span> in <span class="">_unit_repr_check_same<span class="">(self, units)</span>
<span class="">    373</span>         <span class="">if</span> <span class="">not</span> </span>self<span class="">.</span>units<span class="">.</span>same_dimensions_as<span class="">(</span>units<span class="">)</span><span class="">:</span><span class=""></span>
<span class="">    374</span>             raise YTUnitConversionError(
<span class="">--> 375<span class="">                 self.units, self.units.dimensions, units, units.dimensions)
</span><span class="">    376</span> <span class=""></span></span>
<span class="">    377</span>         <span class="">return</span> units<span class=""></span>

<span class="">YTUnitConversionError</span>: Unit dimensionalities do not match. Tried to convert between code_mass/code_length**3 (dim (mass)/(length)**3) and cm**(-3) (dim (length)**(-3)).</pre><br class=""><br class=""></div><div class=""><br class=""><br clear="all" class=""><div class=""><div class=""><br class="">-- <br class=""><div class="gmail_signature">Kathy DeGioia Eastwood, Ph.D.<br class="">Professor of Physics and Astronomy<br class="">Northern Arizona University<br class="">Flagstaff, AZ 86011-6010<br class="">Ph: 928-523-7159   FX: 928-523-1371<br class=""><a href="mailto:Kathy.Eastwood@nau.edu" target="_blank" class="">Kathy.Eastwood@nau.edu</a><br class="">deliveries: 602 S. Humphreys St., Bldg 19 Rm 209</div>
</div></div></div></div>
_______________________________________________<br class="">yt-users mailing list<br class=""><a href="mailto:yt-users@lists.spacepope.org" class="">yt-users@lists.spacepope.org</a><br class="">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org<br class=""></div></blockquote></div><br class=""></div></body></html>