[yt-users] Particle Angular momentum Profiles

Jun-Hwan Choi jhchoi at pa.uky.edu
Tue Oct 23 12:25:18 PDT 2012


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?

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
--------------------------------------------------------------




More information about the yt-users mailing list