Re: [yt-dev] RFC: (yt-3.0) Accessing fluids and particles

I think there is a lot of value to not having yt 3.0 be jarring to users
when they are introduced to it. I think we are wrestling with a trade-off
between drawing technical distinctions and not making for a difficult
transition for the user, as well as those that work on this.

So far, yt does a pretty good job figuring out on its own the nature of the
field that's being requested. I propose that we have both
obj.fluid['whatever'] and obj.particles['whatever'] as means of explicitly
stating the type of field being requested, but that we also allow for
obj['whatever'] and let yt try to figure it out first. If yt can't figure
out what type of field it's being asked to get, it can throw an exception
and ask for specific direction.

I've been thinking about things, and this actually dovetails onto
Chris' comments as well, I think. The way I see it, in order to get to
data from a dataset, here are the abstract levels yt goes through:

Dataset Identifier (pf)

Data Container (pf.obj)

Data Type (particles, fluid)

Data Type Class (POPIII, interpolated fluid)

Data Type Specific Data ("x", "particle_position_x")

What we're struggling with is where to put level #3 in our syntax. As
we currently have it, it's done at the finest level with the
generalized dict access for a specific thing (dd["x"],
dd["ParticleMass"], dd["DerivedField"]), and yt works out the rest. I
don't know if I myself like this idea, but we might want to consider
putting the Data Type specification up higher. For example we could
have Data Type-specific data containers (dd_fluid =
pf.h.all_data("fluid")). Or, I like this even less, but it's
conceivable that there could be a Data Type-specific load (pf_parts =
load("DD1234", "particles").

I'm not making any suggestions here, I just want to see if anyone sees
any benefit from changing the level at which Data Type is specified?
Feel free to say "no, stupidest idea since lawn darts." I'm not
convinced it isn't.