[Yt-dev] AMR3D

gso at physics.ucsd.edu gso at physics.ucsd.edu
Thu May 5 02:31:59 PDT 2011


Hi all,
I've been trying to develop an ellipsoid container for YT to wrap around
the particles from the halo profiler as an object.  I think I am stuck
because I don't quite understand parts of the code.

I'll try walk through sections of AMRSphereBase describing my
understanding of the code.  I have the corresponding portion for the
ellipsoid I wrote up at this URL to compare with the sphere:
http://paste.enzotools.org/show/1611/

So please correct my misunderstanding of each section

in _get_list_of_grids(self, field = None):
-This section is trying to get a list of root grid tiles that may have
data within the sphere.
- It determines the grids with find_sphere_grids().
- It changes them to a list.
- It sorts them by level then x y z.
- It returns the list as an array.

in _is_fully_enclosed(self, grid):
-This section is to see if the grids have all corners inside the sphere.
- It finds the absolute displacement of each component of the corner from
center.
- It finds the shortest path considering periodic BC.
- It finds the distance in 3D of the corner from the center of sphere.
- It returns true if all corners are within sphere, false if not.

in _get_cut_mask(self, grid, field=None):
I have a conceptual question here, what does cut mask mean? My impression
from the code is that if the cell is part of the object it becomes part of
the cut mask(cm=cutmask)?
-This section is the place that determines if each individual cells within
the possible grids is inside the sphere.  (I have a feeling I'm completely
wrong on this point)
- It returns True if the grid is fully enclosed, skip checking for child
mask.
- It check if grid is not the same type as FakeGridForParticles,
GridChildMaskWrapper (which means it hasn't been cached yet) and if grid
is already part of the cut mask, if so return the cut mask as is.
- Check which of the cells in grids are part of the sphere as well as
child mask and assign it to cut mask
- Last, after cut mask is calculated, it check if it hasn't been cached
yet, if not, cache it to self._cut_mask[grid.id]
- Returns the cut mask

To emulate what's done by calling "RadiusCode", at first I thought of
trying to define another derived quantity call it "EllipseIn" and
calculate the eqn of the ellipsoid (<1 in, >1 out) at another place, but
in the end I thought I might as well just do the calculation on the spot. 
Unfortunately, I ran into some trouble with the dimension of the x,y,z.

I am still kind of fuzzy on how _get_cut_mask iterates through the cells
in the grid and flag them as part of the object.  It seem
self._cut_mask=cm where cm are just a bunch of True and False won't give
information on which cell is being considered.  That's why I was concerned
that maybe this isn't the place sphere check for cells either.

Any expert help on AMR3D is greatly appreciated.

From
G.S.





More information about the yt-dev mailing list