[yt-users] problems with the projection tool

luigi at ita.uni-heidelberg.de luigi at ita.uni-heidelberg.de
Mon Feb 15 13:02:02 PST 2010


Dear Matt and Britton,

thanks for your help! Your suggestion about data.pf is very useful; my  
knowledge of python is still rather intuitive, and today I learnt  
something new. About "x-velocity", I'm sorry but my script was  
misleading: the velocity used in the full version of my analysis  
script is defined in a more elaborate way, so that the unit problem  
disappears. Moreover, I was not aware of the use of data["dx"]: it  
made my life much easier!
I made these changes (and the validator stuff) in my script, and now  
it works perfectly.
Cheers,

   Luigi

Quoting Matthew Turk <matthewturk at gmail.com>:

> Hi Luigi,
>
> First off, thank you very much for providing a script that isolates
> the problem!  It made it much easier for me to dig in and replicate
> the issue.
>
> First I'd like to echo what Britton said about accessing the pf --
> it's guaranteed to be defined as data.pf, but it's not guaranteed to
> be in the namespace otherwise.  Additionally, I'd like to just note
> that "x-velocity" gets returned after having been converted via the
> Enzo units in the parameter file (you can see what these are by
> looking at pf["x-velocity"]) so you might be applying apples to
> oranges.
>
> I found two solutions to the issue.  One is to apply a validator:
>
> add_field("EddyTurnover", function=EddyTurnover,
>           validators=[lagos.ValidateSpatial(0)])
>
> this mandates that the field EddyTurnover is only ever created inside
> grids.  The field detection mechanism seems to get confused by the
> nested x-velocity calls and the GridLevel usage, and I'm not sure why,
> but I'm going to try to track it down.  But, this should fix it,
> regardless!
>
> The other solution was to change the definition of the field to avoid
> using GridLevels:
>
> --
> def EddyTurnover(field, data):
>     eddy = data["x-velocity"] / data["dx"]
>     return eddy
>
> def _convertEddyTurnover(data):
>     return data.convert("cm")**-1.0
>
> add_field("EddyTurnover", function=EddyTurnover,
> convert_function=_convertEddyTurnover)
> --
>
> Note that here we've added a convert_function -- "x-velocity" will be
> in cgs, but "dx" is in code units, so we need to divide by "cm" in
> order to get it back in "seconds."  I haven't included the
> "InitialTime" (code units) usage you had originally, but you should be
> able to drop it back in without trouble.
>
> I hope that helps -- let us know if there's anything else that goes
> wrong, or anything unclear in this.
>
> -Matt
>
> On Mon, Feb 15, 2010 at 8:00 AM, Britton Smith   
> <brittonsmith at gmail.com> wrote:
>> Hi Luigi,
>> I've looked over your code and I can't see anything specifically wrong.  Can
>> you post the error message you're getting?  That might help.  As a side
>> note, you may want to replace pf['InitialTime'] on line 35 with
>> data.pf['InitialTime'].  The pf is global within your script, but if you
>> those field functions in other files you will get an error because the
>> function will not know about pf.
>> Britton
>>
>> On Mon, Feb 15, 2010 at 6:09 AM, Luigi Iapichino
>> <luigi at ita.uni-heidelberg.de> wrote:
>>>
>>> Dear all,
>>>
>>> I'm trying to plot the projection of a variable defined in a rather
>>> involved
>>> way, namely through an IF statement. I can use this variable for many
>>> computations and I can plot slices of it, but somehow it does not work
>>> with
>>> projections. I attach an example script which isolates the problem. I
>>> guess
>>> it can run on any standard cosmological output of Enzo (v. 1.0; I haven't
>>> worked with Enzo 1.5 yet). As I told you, if I change the
>>> pc.add_projection(... at line 65 with
>>> pc.add_slice(...
>>> everything works well.
>>> I'm using YT 1.6, and because of problems in my machine I cannot upgrade
>>> to
>>> 1.6.1 until next week, so I don't know if this issue has been already
>>> fixed
>>> by chance.
>>> Looking forward to your suggestions,
>>> Cheers,
>>>
>>>  Luigi
>>>
>>> --
>>>
>>> ---------------------------------------------------------------
>>>
>>> Luigi Iapichino
>>> Zentrum fuer Astronomie der Universitaet Heidelberg
>>> Institut fuer Theoretische Astrophysik
>>> Albert-Ueberle-Str. 2, D-69120 Heidelberg, Germany
>>> Tel: +49 6221 548983, Fax: +49 6221 544221
>>> e-mail: luigi at ita.uni-heidelberg.de
>>> URL: http://www.ita.uni-heidelberg.de/~luigi/
>>>
>>> _______________________________________________
>>> 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
>



---------------------------------------------------------------

Luigi Iapichino
Zentrum fuer Astronomie der Universitaet Heidelberg
Institut fuer Theoretische Astrophysik
Albert-Ueberle-Str. 2, D-69120 Heidelberg, Germany
Tel: +49 6221 548983, Fax: +49 6221 544221
e-mail: luigi at ita.uni-heidelberg.de
URL: http://www.ita.uni-heidelberg.de/~luigi/






More information about the yt-users mailing list