Hi Hsi-Yu,

Sorry for the delay in replying.

On Friday, February 21, 2014, <hyschive@ntu.edu.tw> wrote:
Dear all,

I'm a new user of yt and is trying to use it for analyzing our octree AMR data, which is similar to FLASH. We are stilling testing yt version 2.x, and currently we are able to create a slice image together with the underlying AMR grid distribution WITHOUT providing any parent-children relation between each grid. However, after we further set up the parent-children relation, the plot (e.g., the SlicePlot command) failed with the following error messages:

===============Error Message================================================

ValueError                                Traceback (most recent call last)

<ipython-input-3-e98bfe3813b1> in <module>()

----> 1 p=SlicePlot(pf,2,"Density",center=(0.501,0.501,0.501))



/work1/ftd/yt-x86_64/src/yt-hg/yt/visualization/plot_window.pyc in __init__(self, pf, axis, fields, center, width, origin)

    805         slc = pf.h.slice(axis, center[axis], fields=fields)

    806         print slc,bounds,origin

--> 807         PWViewerMPL.__init__(self, slc, bounds, origin=origin)

    808

    809 class ProjectionPlot(PWViewerMPL):



/work1/ftd/yt-x86_64/src/yt-hg/yt/visualization/plot_window.pyc in __init__(self, *args, **kwargs)

    446                 self._field_transform[field] = linear_transform

    447

--> 448         if setup: self._setup_plots()

    449

    450     @invalidate_plot



/work1/ftd/yt-x86_64/src/yt-hg/yt/visualization/plot_window.pyc in _setup_plots(self)

    617             print self.plots[f].image,self.plots[f].cax

    618             self.plots[f].cb = self.plots[f].figure.colorbar(

--> 619                 self.plots[f].image, cax = self.plots[f].cax)

    620

    621             if self.oblique == False:



/work1/ftd/yt-x86_64/lib/python2.7/site-packages/matplotlib/figure.pyc in colorbar(self, mappable, cax, ax, **kw)

   1194                 cax, kw = cbar.make_axes(ax, **kw)

   1195         cax.hold(True)

-> 1196         cb = cbar.Colorbar(cax, mappable, **kw)

   1197

   1198         def on_changed(m):



/work1/ftd/yt-x86_64/lib/python2.7/site-packages/matplotlib/colorbar.pyc in __init__(self, ax, mappable, **kw)

    741                 kw['alpha'] = mappable.get_alpha()

    742

--> 743             ColorbarBase.__init__(self, ax, **kw)

    744

    745



/work1/ftd/yt-x86_64/lib/python2.7/site-packages/matplotlib/colorbar.pyc in __init__(self, ax, cmap, norm, alpha, values, boundaries, orientation, extend, spacing, ticks, format, drawedges, filled)

    256         # The rest is in a method so we can recalculate when clim changes.

    257         self.config_axis()

--> 258         self.draw_all()

    259

   260     def _patch_ax(self):



/work1/ftd/yt-x86_64/lib/python2.7/site-packages/matplotlib/colorbar.pyc in draw_all(self)

    270         and do all the drawing.

    271         '''

--> 272         self._process_values()

    273         self._find_range()

    274         X, Y = self._mesh()



/work1/ftd/yt-x86_64/lib/python2.7/site-packages/matplotlib/colorbar.pyc in _process_values(self, b)

    568                 self.norm.vmin = 0

    569                 self.norm.vmax = 1

--> 570             b = self.norm.inverse(self._uniform_y(self.cmap.N+1))

    571             if self.extend in ('both', 'min'):

    572                 b[0] = b[0] - 1



/work1/ftd/yt-x86_64/lib/python2.7/site-packages/matplotlib/colors.pyc in inverse(self, value)

    946         if cbook.iterable(value):

    947             val = ma.asarray(value)

--> 948             return vmin * ma.power((vmax/vmin), val)

    949         else:

    950             return vmin * pow((vmax/vmin), value)



/work1/ftd/yt-x86_64/lib/python2.7/site-packages/numpy/ma/core.pyc in __mul__(self, other)

   3640     def __mul__(self, other):

   3641         "Multiply other by self, and return a new masked array."

-> 3642         return multiply(self, other)

  3643     #

   3644     def __rmul__(self, other):



/work1/ftd/yt-x86_64/lib/python2.7/site-packages/numpy/ma/core.pyc in __call__(self, a, b, *args, **kwargs)

    934         # Case 1. : scalar

    935         if not result.ndim:

--> 936             if m:

    937                 return masked

    938             return result



ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

==========End of Error Message==================================================


So, my questions are as follows.
1. What is the necessary information for constructing the tree structure in yt?Currently the SlicePlot command failed only after we set up the "Parent" and "Children" variables for each grid in the function "_populate_grid_objects".

Typically the information is necessary just to check the masking of grid objects; Parent is considerably less important for this than Children.

There is a diagnostic that can be run to examine the volume:

vol = 0.0
dv = pf.domain_width.prod(dtype="float64")
for g in pf.h.grids:
    vol += g.dds.prod(dtype="float64") * g.child_mask.sum()
print np.abs(vol - dv)/dv

What it looks like is happening, based on the error message, is that somehow the total values in a slice are being set to the same thing everywhere.  This diagnostic -- which should produce a value of 0.0 -- should help track that down.
 

2. Does the SlicePlot command need to know the parent-children relation of each grid? If no, why it will fail after we set up the relation?

It only needs to know the children of a grid, so that it can mask out overlapping regions.
 

3. Will yt automatically construct the "neighbor" information for nearby grids at the same AMR refinement level? If no, how does it handle the operations requiring spatial derivative (e.g., curl and divergence)?

It will do so, yup.
 

Any suggestion will be welcome, and thanks for the help in advance :)

I suspect something might be going wrong with the way the children pointers are set up.  Can you show how you're constructing them?  It's possible that there is an off-by-one or something that is creeping in.

-Matt
 

Sincerely,
Hsi-Yu





_______________________________________________
yt-dev mailing list
yt-dev@lists.spacepope.org
http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org