It's becoming increasingly clear that particle handling in yt (and
frankly in Enzo) needs to be improved.
I'm at something of a loss for how to improve this, because of the
issues with the following things:
1) How do different particle types get selected? Even in Enzo, this
is variable, which drives me somewhat batty. The distinction via
creation_time or particle_type is unfortunately quite vague. How can
we do this without getting an enormous logic tree? On some level,
because Enzo's handling of particles is relatively difficult to handle
in this regard, I'm okay with pushing a change upstream to Enzo and
then migrating toward that in yt over time.
2) Presupposing that this happens, how do we distinguish between
fields for different particle types? What is the most pleasing API
for selecting only the star particles in an AMRSphere? I see several
I can't decide which of these is the nicest. Or maybe there's even a
better one I haven't thought of yet. The trick is figuring out the
most simple way of addressing it, while still retaining the
fundamental idea of data objects as conduits for data.
The solution to this issue is not unlike any future solution to a
multi-fluid problem, as well.
So what does everyone think? I think we can agree, particularly as we
move to more simulations of stellar clusters and whatnot, that a
better mechanism for selecting and addressing particles needs to be
ANY ideas would be greatly appreciated.