[yt-users] particle angular momentum profile error and accumulation profile

Nathan Goldbaum nathan12343 at gmail.com
Tue Jan 26 12:15:46 PST 2016


Your 'radiuspc' field is a mesh field, but you're trying to compare it
with particle fields. Mesh fields and particle fields don't have the
same shape, which is why you're getting an error.

You may want to use the particle_radius field instead. If you want to
create a derived field with different default units, you'll need to
specify particle_type=True in your add_field call.

-Nathan

On Tue, Jan 26, 2016 at 2:12 PM, Junhwan Choi (최준환)
<choi.junhwan at gmail.com> wrote:
> Hi yt users,
>
> I try to make a particle angular momentum profile using the following script:
> ================================
> import matplotlib as matplotlib
> matplotlib.use('Agg')
> import yt
> import yt.units as units
> import numpy as np
> import matplotlib.pyplot as plt
>
> def _radiuspc(field, data):
>     return data[('radius')].in_units('pc')
> yt.add_field('radiuspc', function=_radiuspc, units="pc")
>
> index = 45
> Nbin= 100
> rmax = 3000
> ds = yt.load("../DD%04d/DD%04d" % (index,index))
> ds.index
> ad= ds.all_data()
> center = ds.find_max(("gas", "density"))[1]
> rmin = max([1.0e-3,2.0*ds.index.get_smallest_dx().in_units('pc')])
>
> sphere = ds.sphere(center, rmax*units.pc)
> bulk_velocity = sphere.quantities['BulkVelocity']()
> sphere.set_field_parameter('bulk_velocity', bulk_velocity)
>
> profile = yt.Profile1D(sphere, 'radiuspc', Nbin, x_min=rmin,
> x_max=rmax, x_log=True, weight_field=None)
> profile.add_fields(('all', 'particle_angular_momentum_x'))
> profile.add_fields(('all', 'particle_angular_momentum_y'))
> profile.add_fields(('all', 'particle_angular_momentum_z'))
>
> PartAngularMomentum = np.sqrt(profile[('all', 'particle_angular_momentum_x')]**2
>                               + profile[('all',
> 'particle_angular_momentum_y')]**2
>                               + profile[('all',
> 'particle_angular_momentum_z')]**2)
>
> plt.plot(profile.x, PartAngularMomentum, label='Total',linestyle="-",color='r')
>
> plt.xlabel('r [pc]')
> plt.ylabel('pang')
> ======================================
> And I got the following error:
> ………..
> Traceback (most recent call last):
>   File "pang.py", line 26, in <module>
>     profile.add_fields(('all', 'particle_angular_momentum_x'))
>   File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line
> 112, in add_fields
>     self._bin_chunk(chunk, fields, temp_storage)
>   File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line
> 425, in _bin_chunk
>     rv = self._get_data(chunk, fields)
>   File "/home/jhchoi/common/src/yt/yt/data_objects/profiles.py", line
> 240, in _get_data
>     arr[:,i] = chunk[field][filter].in_units(units)
>   File "/home/jhchoi/common/src/yt/yt/units/yt_array.py", line 1123,
> in __getitem__
>     ret = super(YTArray, self).__getitem__(item)
> IndexError: index 1322 is out of bounds for axis 1 with size 1322
>
> I do not understand what the problem is?
>
> One more question:
> Is there any way to make accumulation density profile with yt.Profile1D(……)?
>
> Thank you in advance,
> Junhwan
> _______________________________________________
> 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