Hi Stephanie,

If you have a loaded dataset, you can convert an ndarray that you know is in centimeters to a YTArray in code_length units like so:

arr_in_code_length = ds.arr(ndarray_in_centimeters, 'cm').to('code_length')

In addition, I don't think you actually need to convert to code_length units if you are passing this array to yt, since yt will internally do the conversion if you hand it a YTArray with units, so just creating an array like this is sufficient:

from yt.units import cm

arr_in_cm = ndarray_in_centimeters * cm

And then pass arr_in_cm to some yt function.

If all you want is the conversion factor from CGS to code length units, then you can inspect ds.length_unit. For example, the conversion from code length units to CGS is ds.length_unit.in_cgs(). There are a number of unit attributes that are attached to datasets (ds.mass_unit, ds.velocity_unit, ds.pressure_unit) that are useful for this sort of thing.

Hope that helps!


On Mon, Jun 19, 2017 at 7:38 PM, Stephanie Tonnesen <stonnes@gmail.com> wrote:
Hi yt-users!

I have what I think should be a relatively simple question.  I am trying to make a 3D image of a region of a cosmological simulation, and plot points in the image.  I define my region with box(left_edge,right_edge) where left_edge and right_edge are in code units.  However, the points that I read in from an earlier file are in cgs units.  Since the file was written using yt output, I would like to just let yt do the conversions, but nothing has units attached.  I want the 3d image to get everything into the same units.  I feel like there are a few ways I could fix this problem--1)  tell yt that my points are in cgs units, 2) force the create_scene to be in cgs units, 3) get yt to tell me the conversion factor from code units to cgs units.  

Unfortunately, I don't know how to do any of these things!  

Can someone give me some advice on what to do here?



Dr. Stephanie Tonnesen
Alvin E. Nashman Postdoctoral Fellow
Carnegie Observatories, Pasadena, CA

yt-users mailing list