<div dir="ltr">Hey All,<div><br></div><div>Just for posterity, Matt suggested the following (offline) which worked. :</div><div><br></div><div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px">add_field(("PartType0","MetalDens"),function=_metaldens,units="g/cm**3")</div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px">to</div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px">add_field(("PartType0","MetalDens"),function=_metaldens,units="g/cm**3", particle_type=True)</div></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px">So, in summary, to add a smoothed field, the add_field command should be called as above), followed by the adding of a volume_weighted_smoothed_field via something like:</div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><span style="font-size:13.3333339691162px">metal_field = add_volume_weighted_smoothed_</span><span style="font-size:13.3333339691162px">field("PartType0", "Coordinates", "Masses",</span><br style="font-size:13.3333339691162px"><span style="font-size:13.3333339691162px">                                              "SmoothingLength", "Density","MetalDens",</span><br style="font-size:13.3333339691162px"><span style="font-size:13.3333339691162px">                                              ds.field_info)</span><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div><div style="font-family:arial,sans-serif;font-size:13.3333339691162px"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 10, 2014 at 1:54 PM, Desika Narayanan <span dir="ltr"><<a href="mailto:dnarayan@haverford.edu" target="_blank">dnarayan@haverford.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey Matt,<div><br></div><div>Thanks for this!  This definitely added a field though has a small hiccup when trying to access the information in it.    I can't seem to access the yt pastebin, so I'll copy the issue below.</div><div><br></div><div>#I define metaldens (metal density) as:</div><div>def _metaldens(field,data): return (data["PartType0","Density"]*data["PartType0","Metallicity"])<br></div><div><p>add_field(("PartType0","MetalDens"),function=_metaldens,units="g/cm**3"]<br>ds = load(fname,unit_base=unit_base,bounding_box=bbox)<br>ds.index<br>ad = ds.all_data()</p>
<p>#then add the smoothed field<br>metal_fn = add_volume_weighted_smoothed_field("PartType0", "Coordinates", "Masses",<br>                                              "SmoothingLength", "Density","MetalDens",<br>                                              ds.field_info)</p>
<p>metal_fn = metal_fn[0]<br></p>
<p>#when trying to access this information, though, I get the error below:<br>print ad[metal_fn]</p><p><br></p><p><br></p></div><div><div class="h5"><div><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">Traceback (most recent call last):</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "gadget_load.py", line 32, in <module></p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    print ad[metal_fn]</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 240, in __getitem__</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    self.get_data(f)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 661, in get_data</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    self._generate_fields(fields_to_generate)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 681, in _generate_fields</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    fd = self._generate_field(field)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 277, in _generate_field</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    tr = self._generate_fluid_field(field)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 295, in _generate_fluid_field</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    rv = self._generate_spatial_fluid(field, ngt_exception.ghost_zones)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 311, in _generate_spatial_fluid</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    ind += o.select(self.selector, self[field], rv, ind)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 240, in __getitem__</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    self.get_data(f)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 661, in get_data</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    self._generate_fields(fields_to_generate)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 681, in _generate_fields</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    fd = self._generate_field(field)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 277, in _generate_field</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    tr = self._generate_fluid_field(field)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 297, in _generate_fluid_field</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    rv = finfo(gen_obj)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/fields/derived_field.py", line 184, in __call__</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    dd = self._function(self, data)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/fields/particle_fields.py", line 551, in _vol_weight</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    quan = data[ptype, smoothed_field].in_units(field_units)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/octree_subset.py", line 76, in __getitem__</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    tr = super(OctreeSubset, self).__getitem__(key)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 233, in __getitem__</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    f = self._determine_fields([key])[0]</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">  File "/Users/desika/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 500, in _determine_fields</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">    raise YTFieldTypeNotFound(ftype)</p><p style="font-family:arial,sans-serif;font-size:13.3333339691162px">yt.utilities.exceptions.YTFieldTypeNotFound: Could not find field 'PartType0'.</p></div><div><br></div><div><br></div><div><br></div></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 10, 2014 at 11:49 AM, 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,<div><br></div><div>Looking over the code, if you have a *particle* quantity, you should be able to add a *smoothed* quantity using this type of construction:</div><div><br></div><div>from yt.fields.particle_fields import add_volume_weighted_smoothed field</div><div><br></div><div>The API for this function is:</div><div><br></div><div><div>def add_volume_weighted_smoothed_field(ptype, coord_name, mass_name,</div><div>        smoothing_length_name, density_name, smoothed_field, registry,</div><div>        nneighbors = None)</div></div><div><br></div><div>so you should be able to supply particle type, "particle_position", "particle_mass", "smoothing_length", the density name ("density" probably), the name of the field to smooth, and then the ds.field_info.  I believe this should do it, and it may require another step but I don't think so.</div><div><br></div><div>-Matt</div><br><div class="gmail_quote"><div><div>On Mon Nov 10 2014 at 8:22:08 AM Desika Narayanan <<a href="mailto:dnarayan@haverford.edu" target="_blank">dnarayan@haverford.edu</a>> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><div><br></div>Hey All,<div><br></div><div>I'm trying to figure out how to add a new smoothed field to a data set.  Specifically, I want to add a (particle) field, and then be able to access the smoothed mesh quantities (the same way I would access the mesh quantities of density as below, for example)</div><div>







<p>ad = ds.all_data()</p>
<p>ad["deposit","PartType0_<u></u>smoothed_desnsity"]</p><p>(in this case PartType0 is gas).   I'm adding a field prior to loading the data set as described here:</p><p><a href="http://yt-project.org/doc/developing/creating_derived_fields.html#defining-a-new-field" target="_blank">http://yt-project.org/doc/<u></u>developing/creating_derived_<u></u>fields.html#defining-a-new-<u></u>field</a><br></p><p>thanks,</p><p>desika</p><p><br></p></div></div></div></div>
______________________________<u></u><u></u>_________________<br>
yt-users mailing list<br>
<a href="mailto:yt-users@lists.spacepope.org" target="_blank">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/<u></u>lis<u></u>tinfo.cgi/yt-users-<u></u>spacepope.<u></u>org</a><br>
</blockquote></div>
<br>_______________________________________________<br>
yt-users mailing list<br>
<a href="mailto:yt-users@lists.spacepope.org" target="_blank">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></blockquote></div><br></div>
</div></div></blockquote></div><br></div>