[yt-users] Particle Angular momentum Profiles

Matthew Turk matthewturk at gmail.com
Tue Oct 23 12:30:17 PDT 2012


On Tue, Oct 23, 2012 at 3:25 PM, Jun-Hwan Choi <jhchoi at pa.uky.edu> wrote:
> Thank you,
>
> It works after I weight particlemass for Angular momentum profile as follow:
>>
>> profile.add_fields('ParticleSpecificAngularMomentumZ',weight='ParticleMass')
>
> (If I omit the weight field, it crashed because it assume
> weight='CellMassMsun'
> Is ParticleMass a general weight field for Particles like CellMass?
> Is there any other suggested field?

ParticleMass should be the mass in g, yup . ParticleMassMsun might be
useful, too!

For what it's worth, codifying these names is a high priority for us.

-Matt

>
> Thank you,
> Junhwan
>
>
> On 10/23/12 11:25, Matthew Turk wrote:
>>
>> Hi Jun-Hwan,
>>
>> What's happening is that the particles are being binned according to a
>> fluid field -- "RadiuspcXY" in this case.  You have to bin them by a
>> particle field.
>>
>> On Tue, Oct 23, 2012 at 11:19 AM, Jun-Hwan Choi<jhchoi at pa.uky.edu>  wrote:
>>>
>>> Hi
>>>
>>> I try to calculate the dark matter angular momentum profile using
>>> following
>>> routine:
>>>
>>> #####################################
>>> import matplotlib.pyplot as plt
>>> import pylab as pl
>>>
>>> def _RadiuspcXY(field, data):
>>>      center = data.get_field_parameter("center")
>>>      DW = data.pf.domain_right_edge - data.pf.domain_left_edge
>>>      radius = na.zeros(data["x"].shape, dtype='float64')
>>>      for i, ax in enumerate('xy'):
>>>          r = na.abs(data[ax] - center[i])
>>>          radius += na.minimum(r, na.abs(DW[i]-r))**2.0
>>>      na.sqrt(radius, radius)
>>>      return radius
>>
>> If you change this to use "particle_position_x" and
>> "particle_position_y" it should work.  Also:
>>
>>> def _ConvertRadius(data):
>>>      return data.convert("pc")
>>> add_field("RadiuspcXY", function=_RadiuspcXY,
>>>            validators=[ValidateParameter("center")],
>>>            convert_function = _ConvertRadius, units=r"\rm{pc}",
>>>            display_name="RadiusXY")
>>
>> add the argument particle_type=True.
>>
>> Let us know if that works!  :)
>>
>> -Matt
>>
>>> Nbin = 75
>>> rdisk = 2000
>>> hdisk = 10
>>> pf = load("DD0046/DD0046")
>>> rmin = 2.0*pf.h.get_smallest_dx()*pf.units['pc']]
>>> center = pf.h.find_max("Density")[1]
>>> disk = pf.h.disk(center, [0,0,1], rdisk/pf.units['pc'],
>>> hdisk/pf.units['pc']
>>> )
>>> profile = BinnedProfile1D(disk, Nbin, "Radiuspc", max(rmin), rdisk,
>>> log_space=True, lazy_reader=True, end_collect=False)
>>> profile.add_fields('ParticleSpecificAngularMomentumZ')
>>> plt.plot(profile['RadiuspcXY'],
>>> profile['ParticleSpecificAngularMomentumZ'])
>>>
>>> And I got the following error message:
>>>
>>> yt : [INFO     ] 2012-10-23 11:16:00,124 Parameters: current_time
>>> = 4.600008999
>>> yt : [INFO     ] 2012-10-23 11:16:00,124 Parameters: domain_dimensions
>>> = [64 64 64]
>>> yt : [INFO     ] 2012-10-23 11:16:00,125 Parameters: domain_left_edge
>>> = [ 0.  0.  0.]
>>> yt : [INFO     ] 2012-10-23 11:16:00,125 Parameters: domain_right_edge
>>> = [ 1.  1.  1.]
>>> yt : [INFO     ] 2012-10-23 11:16:00,126 Parameters:
>>> cosmological_simulation
>>> = 0.0
>>> yt : [INFO     ] 2012-10-23 11:16:00,138 Getting the binary hierarchy
>>> yt : [INFO     ] 2012-10-23 11:16:00,168 Finished with binary hierarchy
>>> reading
>>> yt : [INFO     ] 2012-10-23 11:16:00,623 Max Value is 1.55814e-16 at
>>> 0.5001935958862305 0.4999227523803749 0.4994192123413048 in grid
>>> EnzoGrid_1396 at level 13 (5, 3, 3)
>>> Traceback (most recent call last):
>>>    File "JprofDM.py", line 51, in<module>
>>>      profile.add_fields('ParticleSpecificAngularMomentumZ')
>>>    File
>>>
>>> "/home/jhchoi/common/lib/python2.7/site-packages/yt-2.4-py2.7-linux-x86_64.egg/yt/data_objects/profiles.py",
>>> line 168, in add_fields
>>>      self._lazy_add_fields(fields, weight, accumulation)
>>>    File
>>>
>>> "/home/jhchoi/common/lib/python2.7/site-packages/yt-2.4-py2.7-linux-x86_64.egg/yt/data_objects/profiles.py",
>>> line 108, in _lazy_add_fields
>>>      args=args, check_cut=True)
>>>    File
>>>
>>> "/home/jhchoi/common/lib/python2.7/site-packages/yt-2.4-py2.7-linux-x86_64.egg/yt/data_objects/profiles.py",
>>> line 55, in save_state
>>>      tr = func(*args, **kwargs)
>>>    File
>>>
>>> "/home/jhchoi/common/lib/python2.7/site-packages/yt-2.4-py2.7-linux-x86_64.egg/yt/data_objects/profiles.py",
>>> line 275, in _bin_field
>>>      source_data = source_data[mi]
>>> ValueError: too many boolean indices
>>>
>>> What can be the problem?
>>> I compute the gas Angular momentum by simply change
>>> ParticleSpecificAngularMomentumZ to  SpecificAngularMomentumZ, it works.
>>> As a result, I suspect the way to handle the particles.
>>>
>>> Thanks in advance,
>>> Junhwan
>>>
>>>
>>> --
>>> --------------------------------------------------------------
>>> Jun-Hwan Choi, Ph.D.
>>> Department of Physics and Astronomy, University of Kentucky
>>> Tel: (859) 897-6737        Fax: (859) 323-2846
>>> Email: jhchoi at pa.uky.edu   URL: http://www.pa.uky.edu/~jhchoi
>>> --------------------------------------------------------------
>>>
>>> _______________________________________________
>>> yt-users mailing list
>>> yt-users at lists.spacepope.org
>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
>
> --
> --------------------------------------------------------------
> Jun-Hwan Choi, Ph.D.
> Department of Physics and Astronomy, University of Kentucky
> Tel: (859) 897-6737        Fax: (859) 323-2846
> Email: jhchoi at pa.uky.edu   URL: http://www.pa.uky.edu/~jhchoi
> --------------------------------------------------------------
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org



More information about the yt-users mailing list