[yt-dev] Issue #966: Negative radius values in particle_spherical_position_radius fields (and some inconsistant values) (yt_analysis/yt)
Benjamin Thompson
issues-reply at bitbucket.org
Mon Dec 22 15:17:09 PST 2014
New issue 966: Negative radius values in particle_spherical_position_radius fields (and some inconsistant values)
https://bitbucket.org/yt_analysis/yt/issue/966/negative-radius-values-in
Benjamin Thompson:
>From discussion within this PR
[https://bitbucket.org/yt_analysis/yt/pull-request/1308/wip-particle_cylindrical_r-and/diff](https://bitbucket.org/yt_analysis/yt/pull-request/1308/wip-particle_cylindrical_r-and/diff)
I have found that particle_spherical_position_radius (as well as my newly proposed particle_cylindrical_position_radius) produces negative radius values.
```
#!python
sphere["particle_cylindrical_position_radius"].min()
```
-6.41156882532e+23 cm
```
#!python
sphere["particle_spherical_position_radius"].min()
```
-7.83826739716e+23 cm
wheras sphere["particle_spherical_radius"] does not
```
#!python
sphere["particle_spherical_radius"].min()
```
1.25498335796e+20 cm
FYI particle_spherical_radius is more of a direct copy from how the fluid fields compute the spherical radius.
Interestingly enough. Both these methods produce different results too.
E.g
```
#!python
sphere["particle_spherical_radius"][20]
```
returns 2.37463756333e+23 cm
and
```
#!python
sphere["particle_spherical_position_radius"][20]
```
returns
5.0064012169e+22 cm
FYI the two different methods for calculating these radii are. For "spherical_position_radius"
```
#!python
def _particle_spherical_position_radius(field, data):
"""
Radial component of the particles' position vectors in spherical coords
on the provided field parameters for 'normal', 'center',
'bulk_velocity',
"""
normal = data.get_field_parameter('normal')
center = data.get_field_parameter('center')
bv = data.get_field_parameter("bulk_velocity")
pos = spos
pos = YTArray([data[ptype, pos % ax] for ax in "xyz"])
theta = get_sph_theta(pos, center)
phi = get_sph_phi(pos, center)
pos = pos - np.reshape(center, (3, 1))
sphr = get_sph_r_component(pos, theta, phi, normal)
return sphr
registry.add_field((ptype, "particle_spherical_position_radius"),
function=_particle_spherical_position_radius,
particle_type=True, units="cm",
validators=[ValidateParameter("normal"),
ValidateParameter("center")])
```
and "spherical_radius"
```
#!python
def _particle_radius(field, data):
return get_radius(data, "particle_position_")
registry.add_field((ptype, "particle_radius"),
function=_particle_radius,
validators=[ValidateParameter("center")],
units="cm", particle_type = True,
display_name = "Particle Radius")
# this is just particle radius but add it for ease of use
registry.add_field((ptype, "particle_spherical_radius"),
function=_particle_radius,
particle_type=True, units="cm",
validators=[ValidateParameter("normal"),
ValidateParameter("center")])
```
I have noticed in the fluid gas fields, we are using instead.
```
#!python
def _spherical_r(field, data):
coords = get_periodic_rvec(data)
return data.ds.arr(get_sph_r(coords), "code_length").in_cgs()
```
which returns positive radii as expected.
So basically. Which "radius" calculation should be used for spherical radii? I am thinking a similar sort of manner as done in the fluid fields.
In summary
1) Why are we getting negative radius for particle_spherical_position_radius
2) Why
_______________________________________________
yt-dev mailing list
yt-dev at lists.spacepope.org
http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
More information about the yt-dev
mailing list