[yt-users] FLASH and Off Axis Projections

Cameron Hummels chummels at gmail.com
Thu Jun 11 10:45:24 PDT 2015


The issue (as you may have guessed) is that the units aren't agreeing in
this example.  Try this:

L = ds.arr([-1, 1, 0], 'code_length') # this explicltly sets the projection
vector to be in code length instead of unitary
yt.OffAxisProjectionPlot(ds, L, 'dens')

On Thu, Jun 11, 2015 at 10:39 AM, Jeffrey Alan Gritton <jgritton at uga.edu>
wrote:

>  Thank you John,
>
>
>  I'm using the second example here,
> http://yt-project.org/doc/visualizing/plots.html#off-axis-projections.
> I'm also using version 3.1 of YT.
>
>
>  My FLASH domain is set up as follows,
>
> nblockx        = 2
> nblocky        = 1
> nblockz        = 5
>
>
>  lrefine_min     = 5
> lrefine_max     = 5
>
>
>  xl_boundary_type = "outflow"
> xr_boundary_type = "outflow"
> yl_boundary_type = "reflect"
> yr_boundary_type = "outflow"
> zl_boundary_type = "user" #For wind tunnel
> zr_boundary_type = "outflow"
>
>
>  This generates a 3D array of [x,y,z]=[256,128,640] cells (20971520 cells
> in total).
>
>
>
>  Doing everything from the prompt all I use is:
>
> ds = yt.load("4.2.1_hdf5_plt_cnt_0150")
>
> prj = yt.OffAxisProjectionPlot(ds, [-1,1,0], 'dens')
>
>
>  The "..." from before was just the traceback output which I'll add to
> the end of this.
>
>
> By adding a few things to yt.OffAxisProjectionPlot I've generated a few
> separate errors:
>
> Adding "depth=(0.5,"unitary")" generates the YTUnitOperationError again.
>
> Adding "width=(0.5,"unitary")", similar to the example in the cookbook,
> generates the periodic boundary error.
>
>
>  Adding both depth and width generates the periodic boundary error as
> well.
>
> Fooling yt using ds.perodicity = (True,True,True) and using a "width" or
> "width" and "depth" causes YT to suffer a segmentation fault.
>
>
>  and using ds.perodicity and just "depth" generates the
> YTUnitOperationError again.
>
>
>  -Jeff
>
>
>
>
> In [8]: prj = yt.OffAxisProjectionPlot(ds, [-1,1,0], 'dens')
> ---------------------------------------------------------------------------
> YTUnitOperationError                      Traceback (most recent call last)
> /usr/local/bin/iyt in <module>()
> ----> 1 prj = yt.OffAxisProjectionPlot(ds, [-1,1,0], 'dens')
>
> /usr/local/lib/python2.7/dist-packages/yt/visualization/plot_window.pyc in
> __init__(self, ds, normal, fields, center, width, depth, axes_unit,
> weight_field, max_level, north_vector, volume, no_ghost, le, re,
> interpolated, fontsize, method)
>    1442                  le=None, re=None, interpolated=False,
> fontsize=18, method="integrate"):
>    1443         (bounds, center_rot) = \
> -> 1444
> get_oblique_window_parameters(normal,center,width,ds,depth=depth)
>    1445         fields = ensure_list(fields)[:]
>    1446         oap_width = ds.arr((bounds[1] - bounds[0],
>
> /usr/local/lib/python2.7/dist-packages/yt/visualization/plot_window.pyc in
> get_oblique_window_parameters(normal, center, width, ds, depth)
>     129 def get_oblique_window_parameters(normal, center, width, ds,
> depth=None):
>     130     display_center, center =
> ds.coordinates.sanitize_center(center, 4)
> --> 131     width = ds.coordinates.sanitize_width(normal, width, depth)
>     132
>     133     if len(width) == 2:
>
> /usr/local/lib/python2.7/dist-packages/yt/geometry/coordinates/coordinate_handler.pyc
> in sanitize_width(self, axis, width, depth)
>     146                 # axis is actually the normal vector
>     147                 # for an off-axis data object.
> --> 148                 mi = np.argmin(self.ds.domain_width)
>     149                 w = self.ds.domain_width[[mi,mi]]
>     150             width = (w[0], w[1])
>
> /usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.pyc in argmin(a,
> axis)
>     752     except AttributeError:
>     753         return _wrapit(a, 'argmin', axis)
> --> 754     return argmin(axis)
>     755
>     756
>
> /usr/local/lib/python2.7/dist-packages/yt/units/yt_array.pyc in
> __rsub__(self, left_object)
>     714     def __rsub__(self, left_object):
>     715         """ See __sub__. """
> --> 716         lo = sanitize_units_add(self, left_object, "subtraction")
>     717         return YTArray(super(YTArray, self).__rsub__(lo))
>     718
>
> /usr/local/lib/python2.7/dist-packages/yt/units/yt_array.pyc in
> sanitize_units_add(this_object, other_object, op_string)
>     132     else:
>     133         if not inp.units.is_dimensionless:
> --> 134             raise YTUnitOperationError(op_string, inp.units,
> dimensionless)
>     135     return ret
>     136
>
> YTUnitOperationError: The subtraction operator for YTArrays with units
> (code_length) and (1) is not well defined.
>  ------------------------------
> *From:* yt-users <yt-users-bounces at lists.spacepope.org> on behalf of John
> Zuhone <jzuhone at gmail.com>
> *Sent:* Thursday, June 11, 2015 12:10 PM
> *To:* Discussion of the yt analysis package
> *Subject:* Re: [yt-users] FLASH and Off Axis Projections
>
>  Hi Jeff,
>
>  Which cookbook example are you using? I think you might have to paste
> the script in full that shows the YTUnitOperationError, because I can’t
> produce that one over here with a FLASH dataset I have using the two lines
> you posted.
>
>  As far as the indices/periodic boundaries error, I have seen this one
> before, and it has to do with the fact that when you project along the
> whole depth of the domain, to do the off-axis projection it wants to create
> guard cells that are outside the domain, and it doesn’t know how to do that
> unless the boundary is periodic. This is something we probably need to fix
> for non-periodic datasets. You can do two things here:
>
>  1) You can adjust the depth of the projection so it doesn’t span the
> entire domain, by changing the “depth” of the projection. This example only
> projects through half the domain size:
>
>  prj = yt.OffAxisProjectionPlot(ds, [-1,1,0], 'dens',
> depth=(0.5,"unitary”))
>
>  where “unitary” refers to the size of the domain.
>
>  2) You can override the periodicity for the dataset by doing this:
>
>  ds.periodicity = (True, True, True)
>
>  which will fool yt into thinking the domain is periodic. Depending on
> what your data is like, the resulting image would probably be fine,
> especially if the stuff on the edges is of low significance.
>
>  Best,
>
>  John Z
>
>   On Jun 11, 2015, at 11:56 AM, Jeffrey Alan Gritton <jgritton at uga.edu>
> wrote:
>
>  Hi all,
>
>  I'm having a bit of a problem with off axis projections and my FLASH
> domains. I want to create an off axis projection for the entire domain.
> However, I try to follow the Cookbook I run into one of two errors. The
> first being:
>
>  ds = yt.load("4.2.1_hdf5_plt_cnt_0150")
> prj = yt.OffAxisProjectionPlot(ds, [-1,1,0], 'dens')
> ...
> ...
>  YTUnitOperationError: The subtraction operator for YTArrays with units
> (code_length) and (1) is not well defined.
>
>
> The second I can't recreate at the moment but yt throws an error back
> complaining about accessing indicies outside of the array and suggests
> overriding periodic boundaries. My domain has no periodic boundaries. Has
> anyone ever run into this?
>
>
>  Thank you for your help,
>
>  Jeff
>  _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>


-- 
Cameron Hummels
Postdoctoral Researcher
Steward Observatory
University of Arizona
http://chummels.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20150611/90ad31da/attachment.html>


More information about the yt-users mailing list