[yt-svn] commit/yt: ngoldbaum: Merged in MatthewTurk/yt/yt-3.0 (pull request #1098)

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Tue Jul 29 18:23:18 PDT 2014


1 new commit in yt:

https://bitbucket.org/yt_analysis/yt/commits/cf0ab6db87ae/
Changeset:   cf0ab6db87ae
Branch:      yt-3.0
User:        ngoldbaum
Date:        2014-07-30 03:23:10
Summary:     Merged in MatthewTurk/yt/yt-3.0 (pull request #1098)

Fix radial velocity recipe
Affected #:  5 files

diff -r 4e9c0b37712e26fd0befcd752ff0de76affa2573 -r cf0ab6db87aec986ff11bd5968c0e9203d90a5cf yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -110,16 +110,11 @@
         self._default_field_parameters = {
             'center': self.ds.arr(np.zeros(3, dtype='float64'), 'cm'),
             'bulk_velocity': self.ds.arr(np.zeros(3, dtype='float64'), 'cm/s'),
-            'normal': self.ds.arr(np.zeros(3, dtype='float64'), ''),
+            'normal': self.ds.arr([0.0, 0.0, 1.0], ''),
         }
-        if field_parameters is None:
-            self.field_parameters = {}
-        else:
-            self.field_parameters = field_parameters
+        if field_parameters is None: field_parameters = {}
         self._set_default_field_parameters()
-        for key, val in self.field_parameters.items():
-            if not self._is_default_field_parameter(key):
-                mylog.debug("Setting %s to %s", key, val)
+        for key, val in field_parameters.items():
             self.set_field_parameter(key, val)
 
     @property
@@ -134,6 +129,7 @@
         return self._index
 
     def _set_default_field_parameters(self):
+        self.field_parameters = {}
         for k,v in self._default_field_parameters.items():
             self.set_field_parameter(k,v)
 

diff -r 4e9c0b37712e26fd0befcd752ff0de76affa2573 -r cf0ab6db87aec986ff11bd5968c0e9203d90a5cf yt/data_objects/tests/test_spheres.py
--- a/yt/data_objects/tests/test_spheres.py
+++ b/yt/data_objects/tests/test_spheres.py
@@ -1,3 +1,4 @@
+from yt.data_objects.profiles import create_profile
 from yt.testing import *
 import numpy as np
 
@@ -8,3 +9,45 @@
 def test_domain_sphere():
     ds = fake_random_ds(16, fields = ("density"))
     sp = ds.sphere(ds.domain_center, ds.domain_width[0])
+
+    # Now we test that we can get different radial velocities based on field
+    # parameters.
+
+    # Get the first sphere
+    ds = fake_random_ds(16, fields = ("density",
+      "velocity_x", "velocity_y", "velocity_z"))
+    sp0 = ds.sphere(ds.domain_center, 0.25)
+
+    # Compute the bulk velocity from the cells in this sphere
+    bulk_vel = sp0.quantities.bulk_velocity()
+
+    # Get the second sphere
+    sp1 = ds.sphere(ds.domain_center, 0.25)
+
+    # Set the bulk velocity field parameter
+    sp1.set_field_parameter("bulk_velocity", bulk_vel)
+
+    yield assert_equal, np.any(sp0["radial_velocity"] ==
+                               sp1["radial_velocity"]), False
+
+    # Radial profile without correction
+    # Note we set n_bins = 8 here.
+
+    rp0 = create_profile(sp0, 'radius', 'radial_velocity',
+                         units = {'radius': 'kpc'},
+                         logs = {'radius': False},
+                         n_bins = 8)
+
+    # Radial profile with correction for bulk velocity
+
+    rp1 = create_profile(sp1, 'radius', 'radial_velocity',
+                         units = {'radius': 'kpc'},
+                         logs = {'radius': False},
+                         n_bins = 8)
+
+    yield assert_equal, rp0.x_bins, rp1.x_bins
+    yield assert_equal, rp0.used, rp1.used
+    yield assert_equal, rp0.used.sum() > rp0.used.size/2.0, True
+    yield assert_equal, np.any(rp0["radial_velocity"][rp0.used] ==
+                               rp1["radial_velocity"][rp1.used]), \
+                               False

diff -r 4e9c0b37712e26fd0befcd752ff0de76affa2573 -r cf0ab6db87aec986ff11bd5968c0e9203d90a5cf yt/utilities/lib/misc_utilities.pyx
--- a/yt/utilities/lib/misc_utilities.pyx
+++ b/yt/utilities/lib/misc_utilities.pyx
@@ -697,15 +697,21 @@
     cdef np.float64_t bv[3]
     cdef int i, j, k
     bulk_vector = data.get_field_parameter(bulk_vector)
-    if bulk_vector == None:
-        bulk_vector = np.zeros(3)
-    bv[0] = bulk_vector[0]; bv[1] = bulk_vector[1]; bv[2] = bulk_vector[2]
     if len(data[field_names[0]].shape) == 1:
         # One dimensional data
         vxf = data[field_names[0]].astype("float64")
         vyf = data[field_names[1]].astype("float64")
         vzf = data[field_names[2]].astype("float64")
+        vyf.convert_to_units(vxf.units)
+        vzf.convert_to_units(vxf.units)
         rvf = YTArray(np.empty((3, vxf.shape[0]), 'float64'), vxf.units)
+        if bulk_vector is None:
+            bv[0] = bv[1] = bv[2] = 0.0
+        else:
+            bulk_vector = bulk_vector.in_units(vxf.units)
+            bv[0] = bulk_vector[0]
+            bv[1] = bulk_vector[1]
+            bv[2] = bulk_vector[2]
         for i in range(vxf.shape[0]):
             rvf[0, i] = vxf[i] - bv[0]
             rvf[1, i] = vyf[i] - bv[1]
@@ -716,8 +722,17 @@
         vxg = data[field_names[0]].astype("float64")
         vyg = data[field_names[1]].astype("float64")
         vzg = data[field_names[2]].astype("float64")
+        vyg.convert_to_units(vxg.units)
+        vzg.convert_to_units(vxg.units)
         shape = (3, vxg.shape[0], vxg.shape[1], vxg.shape[2])
         rvg = YTArray(np.empty(shape, 'float64'), vxg.units)
+        if bulk_vector is None:
+            bv[0] = bv[1] = bv[2] = 0.0
+        else:
+            bulk_vector = bulk_vector.in_units(vxg.units)
+            bv[0] = bulk_vector[0]
+            bv[1] = bulk_vector[1]
+            bv[2] = bulk_vector[2]
         for i in range(vxg.shape[0]):
             for j in range(vxg.shape[1]):
                 for k in range(vxg.shape[2]):

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