<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div dir="ltr"><div><div>Hi, I *think* I introduced this problem when switching from version 2 to version 3...I am currently running version 3.1.<br><br></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><br></div><div>thanks,<br></div><div>kathy<br></div><div><br></div>This cell works ok:<br><div><br>def _numdens(field, data):<br> return data["dens"]/(2.36*10**(-24)) <br>ds.add_field("numdens", function=_numdens, units="1/cm**3")<br><br></div><div>This cell does NOT work, and I get a very similar error when trying to do a sliceplot:<br><br>maxval_numdens, maxloc_numdens = ds.find_max('numdens')<br>print maxval_numdens<br>print maxloc_numdens<br><br><br><pre><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">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><br></div><div><br><br clear="all"><div><div><br>-- <br><div class="gmail_signature">Kathy DeGioia Eastwood, Ph.D.<br>Professor of Physics and Astronomy<br>Northern Arizona University<br>Flagstaff, AZ 86011-6010<br>Ph: 928-523-7159 FX: 928-523-1371<br><a href="mailto:Kathy.Eastwood@nau.edu" target="_blank">Kathy.Eastwood@nau.edu</a><br>deliveries: 602 S. Humphreys St., Bldg 19 Rm 209</div>
</div></div></div></div>