<div dir="ltr">Hey Matt,<div><br></div><div>This worked perfectly - thanks a lot!</div><div style>-d</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Nov 27, 2013 at 12:28 PM, Matthew Turk <span dir="ltr"><<a href="mailto:matthewturk@gmail.com" target="_blank">matthewturk@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Desika,<br>
<div class="im"><br>
On Wed, Nov 27, 2013 at 11:56 AM, Desika Narayanan<br>
<<a href="mailto:dnarayan@haverford.edu">dnarayan@haverford.edu</a>> wrote:<br>
> Hey Team YT,<br>
><br>
> I have a couple of (I think super-easy) questions:<br>
><br>
> a. How do you paste a script to the yt pastebin?  I've done it successfully<br>
> once before, but can't for the life of me figure out how I did it.<br>
><br>
<br>
</div>:)  You can use the command "yt pastebin" and then the script name.<br>
There's also "yt pastebin_grab" which takes a number and spits out the<br>
corresponding script to stdout.<br>
<div class="im"><br>
> b. Relatedly, there's a (like 10 line) script appended below where I<br>
> projection plot gas densities from a Gadget simulation.    I'd like to be<br>
> able to do the following:<br>
><br>
>     b.i - I'd like to be able to project other fields.  For example, if I<br>
> look at pf.h.field_list, I get that for particle type 0, the fields:<br>
> ('PartType0', 'Masses'), ('PartType0', 'Metallicity') exist.  However, if I<br>
> try to project:<br>
><br>
>>p = ProjectionPlot(pf,'z',(("deposit", "PartType0_metallicity")))<br>
><br>
> (instead of the successful density line below), I get the error :<br>
><br>
>>YTFieldNotFound: Could not find field '('deposit',<br>
>> 'PartType0_metallicity')' in snapshot_006.<br>
><br>
><br>
>     b.ii.  Assuming the parts from b.i are possible, is it then possible to<br>
> multiply two fields together in the projection (say, I wanted metal mass and<br>
> wanted to multiply the particle masses by the particle metallicities).<br>
> Similarly, is it possible to multiply a field by a constant for the particle<br>
> deposition into a projection plot?<br>
><br>
<br>
</div>So!  Here's one place we have not really pushed the limits of our<br>
field deposition functionality.  As it stands, we only have a very<br>
limited taxonomy of fields that are pre-defined, but it's possible to<br>
define your own.  I think ultimately we'll want to actually create<br>
*smoothing* fields for these, rather than the "deposit" functionality<br>
that's in there now, but that's in an open PR at the moment.  Once the<br>
actual SPH smoothing is in the code (and it just needs the<br>
normalization stuff you and I talked about a while back, but my supply<br>
of round tuits has been a bit low this week) we'll generate these<br>
automatically for all the fields associated with gas particles and<br>
they'll just be available.<br>
<br>
For now, to do what you're describing, you can define your own field like so:<br>
<br>
@derived_field(name=("deposit", "PartType0_metallicity"),<br>
validators=[ValidateSpatial()])<br>
def _my_field(field, data):<br>
        pos = data["PartType0", "Coordinates"]<br>
        d = data.deposit(pos, [data["PartType0", "Metallicity"]],<br>
method = "sum")<br>
        d /= data["gas","CellVolume"]<br>
        return d<br>
<br>
There are other options you can supply, but here's what it will do: it<br>
will sum the values of Metallicity in each cell, then divide by the<br>
volume of the cell, giving an average.  You can apply multiplications<br>
of mass and whatnot, divisions of total deposited mass, and on and on,<br>
all based on the prescription just there.<br>
<br>
Let me know if that helps,<br>
<br>
Matt<br>
<div class="im"><br>
><br>
> Thanks,<br>
> Desika<br>
><br>
><br>
> -------------------------<br>
> from yt.mods import *<br>
><br>
><br>
> snap = "/Users/desika/powderday/grid_data/snapshot_006.hdf5"<br>
> bbox = [[-220.0, 220.0],<br>
>         [-220.0, 220.0],<br>
>         [-220.0, 220.0]]<br>
><br>
><br>
> unit_base = {'UnitLength_in_cm'         : 3.08568e+21,<br>
>              'UnitMass_in_g'            :   1.989e+43,<br>
>              'UnitVelocity_in_cm_per_s' :      100000}<br>
><br>
> pf = load(snap,unit_base = unit_base,bounding_box=bbox)<br>
> pf.h<br>
><br>
> p = ProjectionPlot(pf,'z',(("deposit", "PartType0_density")))<br>
> p.set_width(200,'kpc')<br>
> p.save()<br>
><br>
><br>
</div>> _______________________________________________<br>
> yt-users mailing list<br>
> <a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
> <a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
><br>
_______________________________________________<br>
yt-users mailing list<br>
<a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
<a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
</blockquote></div><br></div>