[yt-svn] commit/yt: ngoldbaum: Merged in chummels/yt (pull request #1856)
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Mon Nov 30 16:41:58 PST 2015
1 new commit in yt:
https://bitbucket.org/yt_analysis/yt/commits/315acc8b8296/
Changeset: 315acc8b8296
Branch: yt
User: ngoldbaum
Date: 2015-12-01 00:41:47+00:00
Summary: Merged in chummels/yt (pull request #1856)
Adds effects of transverse doppler redshift to LightRay
Affected #: 8 files
diff -r 64675f402d50709159e5400b0a64873f2fc7400a -r 315acc8b8296a1655efbc5fa6dfc9c88fab44b62 doc/source/analyzing/analysis_modules/absorption_spectrum.rst
--- a/doc/source/analyzing/analysis_modules/absorption_spectrum.rst
+++ b/doc/source/analyzing/analysis_modules/absorption_spectrum.rst
@@ -11,8 +11,8 @@
with the path length of the ray through the cell. Line profiles are
generated using a voigt profile based on the temperature field. The lines
are then shifted according to the redshift recorded by the light ray tool
-and (optionally) the line of sight peculiar velocity. Inclusion of the
-peculiar velocity requires setting ``get_los_velocity`` to True in the call to
+and (optionally) the peculiar velocity of gas along the ray. Inclusion of the
+peculiar velocity requires setting ``use_peculiar_velocity`` to True in the call to
:meth:`~yt.analysis_modules.cosmological_observation.light_ray.light_ray.LightRay.make_light_ray`.
The spectrum generator will output a file containing the wavelength and
diff -r 64675f402d50709159e5400b0a64873f2fc7400a -r 315acc8b8296a1655efbc5fa6dfc9c88fab44b62 doc/source/analyzing/analysis_modules/light_ray_generator.rst
--- a/doc/source/analyzing/analysis_modules/light_ray_generator.rst
+++ b/doc/source/analyzing/analysis_modules/light_ray_generator.rst
@@ -79,7 +79,7 @@
lr.make_light_ray(seed=8675309,
fields=['temperature', 'density'],
- get_los_velocity=True)
+ use_peculiar_velocity=True)
The keyword arguments are:
@@ -107,8 +107,10 @@
* ``data_filename`` (*string*): Path to output file for ray data.
Default: None.
-* ``get_los_velocity`` (*bool*): If True, the line of sight velocity is
- calculated for each point in the ray. Default: True.
+* ``use_peculiar_velocity`` (*bool*): If True, the doppler redshift from
+ the peculiar velocity of gas along the ray is calculated and added to the
+ cosmological redshift as the "effective" redshift.
+ Default: True.
* ``redshift`` (*float*): Used with light rays made from single datasets to
specify a starting redshift for the ray. If not used, the starting
diff -r 64675f402d50709159e5400b0a64873f2fc7400a -r 315acc8b8296a1655efbc5fa6dfc9c88fab44b62 doc/source/cookbook/fit_spectrum.py
--- a/doc/source/cookbook/fit_spectrum.py
+++ b/doc/source/cookbook/fit_spectrum.py
@@ -71,7 +71,6 @@
solution_filename='lightraysolution.txt',
data_filename='lightray.h5',
fields=fields, setup_function=setup_ds,
- get_los_velocity=True,
njobs=-1)
# Create an AbsorptionSpectrum object extending from
diff -r 64675f402d50709159e5400b0a64873f2fc7400a -r 315acc8b8296a1655efbc5fa6dfc9c88fab44b62 doc/source/cookbook/light_ray.py
--- a/doc/source/cookbook/light_ray.py
+++ b/doc/source/cookbook/light_ray.py
@@ -20,7 +20,6 @@
solution_filename='LR/lightraysolution.txt',
data_filename='LR/lightray.h5',
fields=['temperature', 'density'],
- get_los_velocity=True,
njobs=-1)
# Optionally, we can now overplot the part of this ray that intersects
diff -r 64675f402d50709159e5400b0a64873f2fc7400a -r 315acc8b8296a1655efbc5fa6dfc9c88fab44b62 doc/source/cookbook/single_dataset_light_ray.py
--- a/doc/source/cookbook/single_dataset_light_ray.py
+++ b/doc/source/cookbook/single_dataset_light_ray.py
@@ -13,8 +13,7 @@
end_position=[1., 1., 1.],
solution_filename='lightraysolution.txt',
data_filename='lightray.h5',
- fields=['temperature', 'density'],
- get_los_velocity=True)
+ fields=['temperature', 'density'])
# Optionally, we can now overplot this ray on a projection of the source
# dataset
diff -r 64675f402d50709159e5400b0a64873f2fc7400a -r 315acc8b8296a1655efbc5fa6dfc9c88fab44b62 yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
--- a/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
+++ b/yt/analysis_modules/absorption_spectrum/absorption_spectrum.py
@@ -139,7 +139,9 @@
is recommended to set to None in such circumstances.
Default: None
use_peculiar_velocity : optional, bool
- if True, include line of sight velocity for shifting lines.
+ if True, include peculiar velocity for calculating doppler redshift
+ to shift lines. Requires similar flag to be set in LightRay
+ generation.
Default: True
subgrid_resolution : optional, int
When a line is being added that is unresolved (ie its thermal
diff -r 64675f402d50709159e5400b0a64873f2fc7400a -r 315acc8b8296a1655efbc5fa6dfc9c88fab44b62 yt/analysis_modules/absorption_spectrum/tests/test_absorption_spectrum.py
--- a/yt/analysis_modules/absorption_spectrum/tests/test_absorption_spectrum.py
+++ b/yt/analysis_modules/absorption_spectrum/tests/test_absorption_spectrum.py
@@ -50,7 +50,6 @@
lr.make_light_ray(seed=1234567,
fields=['temperature', 'density', 'H_number_density'],
- get_los_velocity=True,
data_filename='lightray.h5')
sp = AbsorptionSpectrum(900.0, 1800.0, 10000)
diff -r 64675f402d50709159e5400b0a64873f2fc7400a -r 315acc8b8296a1655efbc5fa6dfc9c88fab44b62 yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
--- a/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
+++ b/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
@@ -258,13 +258,13 @@
trajectory=None,
fields=None, setup_function=None,
solution_filename=None, data_filename=None,
- get_los_velocity=True, redshift=None,
- njobs=-1):
+ get_los_velocity=None, use_peculiar_velocity=True,
+ redshift=None, njobs=-1):
"""
make_light_ray(seed=None, start_position=None, end_position=None,
trajectory=None, fields=None, setup_function=None,
solution_filename=None, data_filename=None,
- get_los_velocity=True, redshift=None,
+ use_peculiar_velocity=True, redshift=None,
njobs=-1)
Create a light ray and get field values for each lixel. A light
@@ -305,9 +305,10 @@
data_filename : optional, string
Path to output file for ray data.
Default: None.
- get_los_velocity : optional, bool
- If True, the line of sight velocity is calculated for
- each point in the ray.
+ use_peculiar_velocity : optional, bool
+ If True, the peculiar velocity along the ray will be sampled for
+ calculating the effective redshift combining the cosmological
+ redshift and the doppler redshift.
Default: True.
redshift : optional, float
Used with light rays made from single datasets to specify a
@@ -335,7 +336,7 @@
... solution_filename="solution.txt",
... data_filename="my_ray.h5",
... fields=["temperature", "density"],
- ... get_los_velocity=True)
+ ... use_peculiar_velocity=True)
Make a light ray from a single dataset:
@@ -349,9 +350,12 @@
... solution_filename="solution.txt",
... data_filename="my_ray.h5",
... fields=["temperature", "density"],
- ... get_los_velocity=True)
+ ... use_peculiar_velocity=True)
"""
+ if get_los_velocity is not None:
+ use_peculiar_velocity = get_los_velocity
+ mylog.warn("'get_los_velocity' kwarg is deprecated. Use 'use_peculiar_velocity' instead.")
# Calculate solution.
self._calculate_light_ray_solution(seed=seed,
@@ -368,9 +372,10 @@
all_fields.extend(['dl', 'dredshift', 'redshift'])
all_fields.extend(['x', 'y', 'z', 'dx', 'dy', 'dz'])
data_fields.extend(['x', 'y', 'z', 'dx', 'dy', 'dz'])
- if get_los_velocity:
- all_fields.extend(['velocity_x', 'velocity_y',
- 'velocity_z', 'velocity_los', 'redshift_eff'])
+ if use_peculiar_velocity:
+ all_fields.extend(['velocity_x', 'velocity_y', 'velocity_z',
+ 'velocity_los', 'redshift_eff',
+ 'redshift_dopp'])
data_fields.extend(['velocity_x', 'velocity_y', 'velocity_z'])
all_ray_storage = {}
@@ -444,16 +449,43 @@
for field in data_fields:
sub_data[field].extend(sub_ray[field][asort])
- if get_los_velocity:
- line_of_sight = sub_segment[1] - sub_segment[0]
+ if use_peculiar_velocity:
+ line_of_sight = sub_segment[0] - sub_segment[1]
line_of_sight /= ((line_of_sight**2).sum())**0.5
sub_vel = ds.arr([sub_ray['velocity_x'],
sub_ray['velocity_y'],
sub_ray['velocity_z']])
- # line of sight velocity is reversed relative to ray
- sub_data['velocity_los'].extend(-1*(np.rollaxis(sub_vel, 1) *
- line_of_sight).sum(axis=1)[asort])
- del sub_vel
+ # Line of sight velocity = vel_los
+ sub_vel_los = (np.rollaxis(sub_vel, 1) * \
+ line_of_sight).sum(axis=1)
+ sub_data['velocity_los'].extend(sub_vel_los[asort])
+
+ # doppler redshift:
+ # See https://en.wikipedia.org/wiki/Redshift and
+ # Peebles eqns: 5.48, 5.49
+
+ # 1 + redshift_dopp = (1 + v*cos(theta)/c) /
+ # sqrt(1 - v**2/c**2)
+
+ # where v is the peculiar velocity (ie physical velocity
+ # without the hubble flow, but no hubble flow in sim, so
+ # just the physical velocity).
+
+ # the bulk of the doppler redshift is from line of sight
+ # motion, but there is a small amount from time dilation
+ # of transverse motion, hence the inclusion of theta (the
+ # angle between line of sight and the velocity).
+ # theta is the angle between the ray vector (i.e. line of
+ # sight) and the velocity vectors: a dot b = ab cos(theta)
+
+ sub_vel_mag = sub_ray['velocity_magnitude']
+ cos_theta = np.dot(line_of_sight, sub_vel) / sub_vel_mag
+ redshift_dopp = \
+ (1 + sub_vel_mag * cos_theta / speed_of_light_cgs) / \
+ np.sqrt(1 - sub_vel_mag**2 / speed_of_light_cgs**2) - 1
+ sub_data['redshift_dopp'].extend(redshift_dopp[asort])
+ del sub_vel, sub_vel_los, sub_vel_mag, cos_theta, \
+ redshift_dopp
sub_ray.clear_data()
del sub_ray, asort
@@ -461,34 +493,25 @@
for key in sub_data:
sub_data[key] = ds.arr(sub_data[key]).in_cgs()
- # Get redshift for each lixel. Assume linear relation between l and z.
+ # Get redshift for each lixel. Assume linear relation between l
+ # and z.
sub_data['dredshift'] = (my_segment['redshift'] - next_redshift) * \
(sub_data['dl'] / vector_length(my_segment['start'],
my_segment['end']).in_cgs())
sub_data['redshift'] = my_segment['redshift'] - \
sub_data['dredshift'].cumsum() + sub_data['dredshift']
- # When velocity_los is present, add effective redshift
- # (redshift_eff) field by combining cosmological redshift and
+ # When using the peculiar velocity, create effective redshift
+ # (redshift_eff) field combining cosmological redshift and
# doppler redshift.
- # first convert los velocities to comoving frame (ie mult. by (1+z)),
- # then calculate doppler redshift:
- # 1 + redshift_dopp = sqrt((1+v/c) / (1-v/c))
+ # then to add cosmological redshift and doppler redshifts, follow
+ # eqn 3.75 in Peacock's Cosmological Physics:
+ # 1 + z_eff = (1 + z_cosmo) * (1 + z_doppler)
- # then to add cosmological redshift and doppler redshift, follow
- # eqn 3.75 in Peacock's Cosmological Physics:
- # 1 + z_obs = (1 + z_cosmo) * (1 + z_doppler)
- # Alternatively, see eqn 5.49 in Peebles for a similar result.
- if get_los_velocity:
-
- velocity_los_cm = (1 + sub_data['redshift']) * \
- sub_data['velocity_los']
- redshift_dopp = ((1 + velocity_los_cm / speed_of_light_cgs) /
- (1 - velocity_los_cm / speed_of_light_cgs))**(0.5) - 1
- sub_data['redshift_eff'] = ((1 + redshift_dopp) * \
- (1 + sub_data['redshift'])) - 1
- del velocity_los_cm, redshift_dopp
+ if use_peculiar_velocity:
+ sub_data['redshift_eff'] = ((1 + sub_data['redshift_dopp']) * \
+ (1 + sub_data['redshift'])) - 1
# Remove empty lixels.
sub_dl_nonzero = sub_data['dl'].nonzero()
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list