[yt-dev] yt-3.0 derived fields

Matthew Turk matthewturk at gmail.com
Sun Mar 10 16:20:54 PDT 2013


Hi Chris,

On Sat, Mar 9, 2013 at 4:00 PM, Christopher Moody <chrisemoody at gmail.com> wrote:
> Hi everyone,
> Fields in yt-3.0 are now defined like (field_type,field_name) but for
> backwards-compatibility still maintains a field_name -> ("all",field_name)
> mapping. Consider a few use cases:
>
> keys = ["ParticleMassMsun",
>         ("all","ParticleMassMsun"),
>         ("stars","particle_mass"),
>         ("stars","ParticleMassMsun") ]#broken
>
> I think we all have natural expectations for what should happen, but at the
> moment the last key in the series is broken. particle_mass is a native
> field, ParticleMassMsun is a derived field:
>
> def _ParticleMassMsun(field, data):
>     return data["particle_mass"]/mass_sun_cgs
> add_field("ParticleMassMsun", function=_ParticleMassMsun,
> particle_type=True)
>
> Note that in this case data["particle_mass"] maps to
> data[("all","particle_mass")] even when I originally asked for
> dd[("stars","ParticleMassMsun")], which is why things break.
>
> So I propose a syntax where in the derived field definition we can do
> something like data[(Ellipsis,"ParticleMassMsun")] or alternatively
> data[(field.field_type,"ParticleMassMsun")]. This ensures that derived
> fields will work intuitively and be as specific to a field type as they want
> to be or just pass through whatever field type they may want.
>

I like this, but maybe we should use a yt-specific object instead of
Ellipsis.  This would be very nice and is something I have thought /
worried about and been unable to come up with an elegant solution for.
 Seems like you found one!  :)

This week I need to address this for my own work on a simulation with
multiple particle types; I'll take a pass at implementing something
like this.  We're also a bit overdue for a YTEP that details access to
multiple fluids and multiples particles.  Once some things get off my
plate on Tuesday I will make that a priority.  Then we can use that as
a place to sort of hash this out and how it'll work.

-Matt

> Thanks!
> chris
>
> _______________________________________________
> 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