[yt-dev] Downgrading Grid Resolution in yt

Matthew Turk matthewturk at gmail.com
Fri Jun 1 14:29:21 PDT 2012

Hi Cameron,

The grid_collection_max_level that I just added in 63ff8d95dc50 should
do most of what you're looking for.  Here's some example code:



On Fri, Jun 1, 2012 at 2:59 PM, Matthew Turk <matthewturk at gmail.com> wrote:
> On Fri, Jun 1, 2012 at 12:26 PM, Cameron Hummels
> <chummels at astro.columbia.edu> wrote:
>> Hi Matt,
>> Thanks for the quick responses!
>>> pf.h.grids has an array of grids. This is definitely in the docs. You can
>>> get their LeftEdge and RightEdge, and they also have the
>>> get_global_startindex function which gives it to you in level-relative
>>> integers.
>> I'll look into this, thanks!
>>> >
>>> >
>>> >> I also believe that if you ask for a covering grid at level 9, and it
>>> >> covers grids at level 10, it will not use the level 10 grids when
>>> >> calculating the constituent values.  There's this trick we do to
>>> >> figure out if the child masking should be taken into account with
>>> >> covering grids, and the criteria is: is this the final level we want
>>> >> to sample to?
>>> >
>>> > That sounds great.  So all I want to do is simply ignore child masking
>>> > data from levels on the highest level of refinement.  But again, is there
>>> > any function which does this publicly, or is it all buried in covering_grid?
>>> What I am getting at is that you could just use covering grid and specify
>>> a lower level than the highest.
>> Your suggestion will not universally downgrade the resolution by 1, it will
>> only downgrade the resolution of items at the *top* level of refinement by
>> 1, but grids on lower refinement levels will remain the same.  I'm looking
>> for something that will downgrade refinement everywhere by 1, including
>> regions at lower refinement.
>> Any ideas on this, or is this just going to take an additional set of
>> homemade functions inspecting each grid individually as per
>> get_global_startindex() from above?
> I think I am starting to understand.  You don't want to use the
> (created-by-your-sim-code) lower-resolution, overlapped-with data
> because you want the high resolution stuff downgraded a level.  I
> believe this is what happens, by the way, in AMR codes.  But moving
> beyond that, I guess what I see as being a possibility will require
> understanding *how* you want to degrade the resolution (i.e., ensuring
> your conservation equations are satisfied) and then applying something
> like this:
> # this simply averages
> my_new_array = na.zeros( [i/2 for i in cg["Density"].shape], dtype="float64")
> for i in range(2):
>    for j in range(2):
>        for k in range(2):
>            my_new_array += cg["Density"][i::2,j::2,k::2]
> my_new_array /= 8.0
> There may be additional issues (and my code might be wrong, I am
> wondering if I messed up the slicing there) but something like this
> would certainly take the number of cells and combine octs into a
> single cell.
> -Matt
>> Thanks again for all of the help with this!
>> Cameron
>> _______________________________________________
>> yt-dev mailing list
>> yt-dev at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org

More information about the yt-dev mailing list