[yt-dev] data on different AMR levels

Elizabeth Tasker tasker at astro1.sci.hokudai.ac.jp
Wed Jan 16 18:52:46 PST 2013


Hi Mike and Matt,

Thank you! Both those solutions look great.

I like Mike's a lot for its transparency, but possibly Matt's might end up making slightly neater code.

One question, Matt:

> Okay, sorry for being dense.  But basically what I'm getting is that
> you want the functionality of covering grids, but you want to be able
> to restrict the grids from going above some level L, right?

Or below. I just want cells on one level only. 

> 
> And for the Level 1 case you mention above, do you want contributions
> from Level 0?  (That's not so hard to do.)

No. So I want an array that contains only cells from level 1, with no contributions from 0 or 2. 

> To do this with a covering grid you could pre-allocate:
> 
> Li = 0
> Lo = 3
> 
> cg = pf.h.covering_grid(Li, [0, 0, 0], pf.domain_dimensions * pf.refine_by**Li)
> output = np.empty(pf.domain_dimensions * pf.refine_by**Lo)
> nd = pf.refine_by**(Lo-li)
> for i in range(nd):
>    for j in range(nd):
>        for k in range(nd):
>            output[i::nd,j::nd,k::nd] = cg[field]


Ah ok! So this is the same as Mike's method in that a covering_grid is created at the resolution of the cell size on the specified level, and then the array values are multiplied to give the correct number for a higher resolution? (Which works fine for the basic quantities; density, energy and velocity but won't for cell mass -- which is totally fine).

My only question is:

If I do this for level (e.g.) 2 and level 2 doesn't cover the whole domain -- what does the covering grid do when there are no level 2 cells over a region of space?

Thanks again!

Elizabeth


More information about the yt-dev mailing list