[yt-users] Clearing a derived field from all grids
Elizabeth Tasker
tasker at astro1.sci.hokudai.ac.jp
Tue Dec 13 01:14:36 PST 2011
Hi Matt,
Sorry, this is still a problem for my set-up.
The issue is that EffectivePotential is only created on some grids,
not all of them, so if I do:
for g in pf.h.grids: del g[field_name]
it freaks out when it can't find the field.
But, I don't want to delete the grids as I go, because then I end up
calculating EffectivePotential a ridiculous number of times.
Yet, if I don't clear it as we go through that c loop, my results get
screwed up.
So what I need is:
for c in (nclouds):
grids, cis = kd.locate_neighbors_from_position(position)
for n in range(26):
phi = grids[n]["EffectivePotential"][cis[n]]
<< clear all the grids that have EffectivePotential on them before
c increments and it needs to be recalculated>>
Is it possible to hack yt so that
for g in pf.h.grids: del g[field_name]
just chills out and moves on if it can't find the field_name? Or do a
(if this field exists, delete grid) line?
Elizabeth
On 13 December 2011 12:14, Matthew Turk <matthewturk at gmail.com> wrote:
> Hi Elizabeth,
>
> Yes, sorry, I misread 'ng'. I'll be more explicit -- if you have a
> GridPatch object, you can do "del grid[field_name]" and it will remove
> it. One thing you can do is iterate over the grids, as you note, like
> this:
>
> for g in pf.h.grids: del g[field_name]
>
> Good luck.
>
> -Matt
>
> On Mon, Dec 12, 2011 at 8:58 PM, Elizabeth Tasker
> <tasker at astro1.sci.hokudai.ac.jp> wrote:
>> Hi Matt,
>>
>> Unfortunately, that doesn't work.
>>
>> I can do:
>>
>> del ng[n][fieldname]
>>
>> But then I'd have to recreate the field afresh for each grid (very
>> slow), as opposed to just when I rerun the whole loop again:
>>
>> for c in (nclouds):
>> grids, cis = kd.locate_neighbors_from_position(position)
>> for n in range(26):
>> phi = grids[n]["EffectivePotential"][cis[n]]
>> del grids[n]["EffectivePotential"]
>>
>> I really want to delete every c-loop, not every n loop.
>>
>> Possibly the best way is to loop over the n loop again and delete the
>> grids afterwards:
>>
>> for n in range(26):
>> del grids[n]["EffectivePotential"]
>>
>> Which is fine, I was just checking if there was a neater way!
>>
>> Elizabeth
>>
>>
>> On 12 December 2011 20:18, Matthew Turk <matthewturk at gmail.com> wrote:
>>> Hi Elizabeth,
>>>
>>> You can do:
>>>
>>> del ng[fieldname]
>>>
>>> -Matt
>>>
>>> On Dec 12, 2011 5:45 AM, "Elizabeth Tasker"
>>> <tasker at astro1.sci.hokudai.ac.jp> wrote:
>>>>
>>>> Hi,
>>>>
>>>> Is there a way of deleting a single derived field from all grids?
>>>>
>>>> I seem to be having a problem with my derived field not being
>>>> re-calculated for every element in a loop (it needs to be). Therefore,
>>>> if I run the complete loop, I get an incorrect result for some of the
>>>> elements which are totally fine if I tell the code to just calculate
>>>> that element in a single sweep.
>>>>
>>>> I've tried deleting the individual elements that use that variable,
>>>> but it doesn't seem to be enough, e.g.
>>>>
>>>> ng, nc = kd.locate_neighbors_from_position(nposn)
>>>> .
>>>> .
>>>> .
>>>> del ng
>>>>
>>>>
>>>> Elizabeth
>>>> _______________________________________________
>>>> yt-users mailing list
>>>> yt-users at lists.spacepope.org
>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>>>
>>> _______________________________________________
>>> yt-users mailing list
>>> yt-users at lists.spacepope.org
>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
More information about the yt-users
mailing list