
Hi all, I need some help with the ghost zone generation. Right now it's too slow, because it performs a cascading interpolation from the lowest levels to the highest levels, filling in available cells, then interpolating to the next level and repeating the process. Looking over the Enzo source code, I think we can do better: I think we should be able to replicate the Enzo logic much more closely, which only implicitly requires cascading interpolation, by checking parents and sibling grids. The issue of Subling grids I think we will also need to address. The current code is in AMRIntSmoothedCoveringGridBase. It's not that pretty. Does anybody have any ideas on whether or not we can do this better than it currently is done? Getting vertex centered data requires the ghost zones, and right now getting ghost zones is *easily* the most time consuming step of the volume rendering for many datasets. Dave, John, I know you've both dealt with this issue but if anybody has any ideas, they'd be greatly appreciated! -Matt

I don't completely follow what you mean by 'cascading interpolation,' but it sounds like more work than you need to do How I would naively start would be- for L in range(0,max_level): for g1 in range(0, len(grids(L)): interpolate ghost zones from g1.parent to g1 for g2 in range( g1, len(grids(L)): copy zones from g1 to g2 If you're working in some extracted region, the g2 loop might need to be expanded to include all the grids that might be of interest (probably all children with the same parent and all children of the parents siblings will do it). This ensures that all GZ covered by a sibling active zone get covered, and all remaining zones are interpolated from the most relevant data. d. On Mon, Mar 29, 2010 at 12:24 PM, Matthew Turk <matthewturk@gmail.com> wrote:
Hi all,
I need some help with the ghost zone generation. Right now it's too slow, because it performs a cascading interpolation from the lowest levels to the highest levels, filling in available cells, then interpolating to the next level and repeating the process. Looking over the Enzo source code, I think we can do better: I think we should be able to replicate the Enzo logic much more closely, which only implicitly requires cascading interpolation, by checking parents and sibling grids. The issue of Subling grids I think we will also need to address. The current code is in AMRIntSmoothedCoveringGridBase. It's not that pretty.
Does anybody have any ideas on whether or not we can do this better than it currently is done? Getting vertex centered data requires the ghost zones, and right now getting ghost zones is *easily* the most time consuming step of the volume rendering for many datasets. Dave, John, I know you've both dealt with this issue but if anybody has any ideas, they'd be greatly appreciated!
-Matt _______________________________________________ Yt-dev mailing list Yt-dev@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
-- Sent from my Stone Tablet and carried by my Pterodactyl.

I think we can closely follow what Enzo does to calculate the ghost zones. Dave outlined a good first shot at it. We can probably make the function work on a grid-by-grid basis because during the rendering, we don't necessarily need all of the grids, depending on the viewing angle and cutting planes. We can create a routine that's similar to Grid_CheckForOverlap.C in Enzo to check for overlapping siblings and SUBlings. It'd probably be best to implement it stepwise in the steps how Enzo was developed. Phase 1: Ghost zones from interpolating the parent and copying any overlapping siblings Phase 2: Include SUBlings Phase 3: Accelerate routine with a fast sibling locator For the interpolation from the parent, nearest neighbor interpolation would be fine for an initial implementation, and then we can experiment with different interpolation schemes. John On 29 Mar 2010, at 15:43, david collins wrote:
I don't completely follow what you mean by 'cascading interpolation,' but it sounds like more work than you need to do
How I would naively start would be-
for L in range(0,max_level): for g1 in range(0, len(grids(L)): interpolate ghost zones from g1.parent to g1 for g2 in range( g1, len(grids(L)): copy zones from g1 to g2
If you're working in some extracted region, the g2 loop might need to be expanded to include all the grids that might be of interest (probably all children with the same parent and all children of the parents siblings will do it).
This ensures that all GZ covered by a sibling active zone get covered, and all remaining zones are interpolated from the most relevant data.
d.
On Mon, Mar 29, 2010 at 12:24 PM, Matthew Turk <matthewturk@gmail.com> wrote:
Hi all,
I need some help with the ghost zone generation. Right now it's too slow, because it performs a cascading interpolation from the lowest levels to the highest levels, filling in available cells, then interpolating to the next level and repeating the process. Looking over the Enzo source code, I think we can do better: I think we should be able to replicate the Enzo logic much more closely, which only implicitly requires cascading interpolation, by checking parents and sibling grids. The issue of Subling grids I think we will also need to address. The current code is in AMRIntSmoothedCoveringGridBase. It's not that pretty.
Does anybody have any ideas on whether or not we can do this better than it currently is done? Getting vertex centered data requires the ghost zones, and right now getting ghost zones is *easily* the most time consuming step of the volume rendering for many datasets. Dave, John, I know you've both dealt with this issue but if anybody has any ideas, they'd be greatly appreciated!
-Matt _______________________________________________ Yt-dev mailing list Yt-dev@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
-- Sent from my Stone Tablet and carried by my Pterodactyl. _______________________________________________ Yt-dev mailing list Yt-dev@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org

Hi guys, Thanks very much for this. Reading this over, I can see that the ghost zone generation really should be a Special Thing and not just a particular application of another routine. I will utilize this, following the enzo mechanisms, when I rewrite the ghost zone generation... Thanks again, Matt On Tue, Mar 30, 2010 at 6:29 AM, John Wise <jwise@astro.princeton.edu> wrote:
I think we can closely follow what Enzo does to calculate the ghost zones. Dave outlined a good first shot at it.
We can probably make the function work on a grid-by-grid basis because during the rendering, we don't necessarily need all of the grids, depending on the viewing angle and cutting planes. We can create a routine that's similar to Grid_CheckForOverlap.C in Enzo to check for overlapping siblings and SUBlings. It'd probably be best to implement it stepwise in the steps how Enzo was developed.
Phase 1: Ghost zones from interpolating the parent and copying any overlapping siblings Phase 2: Include SUBlings Phase 3: Accelerate routine with a fast sibling locator
For the interpolation from the parent, nearest neighbor interpolation would be fine for an initial implementation, and then we can experiment with different interpolation schemes.
John
On 29 Mar 2010, at 15:43, david collins wrote:
I don't completely follow what you mean by 'cascading interpolation,' but it sounds like more work than you need to do
How I would naively start would be-
for L in range(0,max_level): for g1 in range(0, len(grids(L)): interpolate ghost zones from g1.parent to g1 for g2 in range( g1, len(grids(L)): copy zones from g1 to g2
If you're working in some extracted region, the g2 loop might need to be expanded to include all the grids that might be of interest (probably all children with the same parent and all children of the parents siblings will do it).
This ensures that all GZ covered by a sibling active zone get covered, and all remaining zones are interpolated from the most relevant data.
d.
On Mon, Mar 29, 2010 at 12:24 PM, Matthew Turk <matthewturk@gmail.com> wrote:
Hi all,
I need some help with the ghost zone generation. Right now it's too slow, because it performs a cascading interpolation from the lowest levels to the highest levels, filling in available cells, then interpolating to the next level and repeating the process. Looking over the Enzo source code, I think we can do better: I think we should be able to replicate the Enzo logic much more closely, which only implicitly requires cascading interpolation, by checking parents and sibling grids. The issue of Subling grids I think we will also need to address. The current code is in AMRIntSmoothedCoveringGridBase. It's not that pretty.
Does anybody have any ideas on whether or not we can do this better than it currently is done? Getting vertex centered data requires the ghost zones, and right now getting ghost zones is *easily* the most time consuming step of the volume rendering for many datasets. Dave, John, I know you've both dealt with this issue but if anybody has any ideas, they'd be greatly appreciated!
-Matt _______________________________________________ Yt-dev mailing list Yt-dev@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
-- Sent from my Stone Tablet and carried by my Pterodactyl. _______________________________________________ Yt-dev mailing list Yt-dev@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
_______________________________________________ Yt-dev mailing list Yt-dev@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
participants (3)
-
david collins
-
John Wise
-
Matthew Turk