[yt-svn] commit/yt: 2 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Mon Feb 25 11:37:43 PST 2013
2 new commits in yt:
https://bitbucket.org/yt_analysis/yt/commits/8aca2a4dfcf6/
changeset: 8aca2a4dfcf6
branch: yt
user: ngoldbaum
date: 2013-02-25 20:32:58
summary: Fixing a typo.
affected #: 1 file
diff -r 7598cb8b7438563be91cbd7b12aa8d5581e279ef -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d yt/visualization/plot_window.py
--- a/yt/visualization/plot_window.py
+++ b/yt/visualization/plot_window.py
@@ -904,7 +904,7 @@
image = self._frb[f]
- fp = self._font_propertiets
+ fp = self._font_properties
self.plots[f] = WindowPlotMPL(image, self._field_transform[f].name,
self._colormaps[f], extent, aspect,
https://bitbucket.org/yt_analysis/yt/commits/a06f8e456992/
changeset: a06f8e456992
branch: yt
user: ngoldbaum
date: 2013-02-25 20:37:17
summary: Merging to tip.
affected #: 11 files
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -424,7 +424,7 @@
return grids
def select_grid_indices(self, level):
- return np.where(self.grid_levels == level)
+ return np.where(self.grid_levels[:,0] == level)
def __get_grid_left_edge(self):
if self.__grid_left_edge == None:
@@ -461,6 +461,7 @@
def __get_grid_levels(self):
if self.__grid_levels == None:
self.__grid_levels = np.array([g.Level for g in self._grids])
+ self.__grid_levels.shape = (self.__grid_levels.size, 1)
return self.__grid_levels
def __del_grid_levels(self):
@@ -474,7 +475,6 @@
grid_levels = property(__get_grid_levels, __set_grid_levels,
__del_grid_levels)
-
def __get_grid_dimensions(self):
if self.__grid_dimensions == None:
self.__grid_dimensions = np.array([g.ActiveDimensions for g in self._grids])
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/data_objects/hierarchy.py
--- a/yt/data_objects/hierarchy.py
+++ b/yt/data_objects/hierarchy.py
@@ -209,7 +209,7 @@
pf = self.parameter_file
if find_max: c = self.find_max("Density")[1]
else: c = (pf.domain_right_edge + pf.domain_left_edge)/2.0
- return self.region(c,
+ return self.region(c,
pf.domain_left_edge, pf.domain_right_edge)
def clear_all_data(self):
@@ -308,7 +308,7 @@
self.save_data = self._save_data
else:
self.save_data = parallel_splitter(self._save_data, self._reload_data_file)
-
+
save_data = parallel_splitter(_save_data, _reload_data_file)
def save_object(self, obj, name):
@@ -367,7 +367,7 @@
"""
Returns (in code units) the smallest cell size in the simulation.
"""
- return self.select_grids(self.grid_levels.max())[0].dds[0]
+ return self.select_grids(self.grid_levels.max())[0].dds[:].min()
def _add_object_class(self, name, class_name, base, dd):
self.object_types.append(name)
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/data_objects/object_finding_mixin.py
--- a/yt/data_objects/object_finding_mixin.py
+++ b/yt/data_objects/object_finding_mixin.py
@@ -198,8 +198,10 @@
"""
Gets back all the grids between a left edge and right edge
"""
- grid_i = np.where((np.all(self.grid_right_edge > left_edge, axis=1)
- & np.all(self.grid_left_edge < right_edge, axis=1)) == True)
+ eps = np.finfo(np.float64).eps
+ grid_i = np.where((np.all((self.grid_right_edge - left_edge) > eps, axis=1)
+ & np.all((right_edge - self.grid_left_edge) > eps, axis=1)) == True)
+
return self.grids[grid_i], grid_i
def get_periodic_box_grids(self, left_edge, right_edge):
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/data_objects/tests/test_slice.py
--- a/yt/data_objects/tests/test_slice.py
+++ b/yt/data_objects/tests/test_slice.py
@@ -1,24 +1,60 @@
-from yt.testing import *
+"""
+Tests for AMRSlice
+
+Authors: Samuel Skillman <samskillman at gmail.com>
+Affiliation: University of Colorado at Boulder
+Author: Kacper Kowalik <xarthisius.kk at gmail.com>
+Affiliation: CA UMK
+Homepage: http://yt-project.org/
+License:
+ Copyright (C) 2012 Samuel Skillman. All Rights Reserved.
+ Copyright (C) 2013 Kacper Kowalik. All Rights Reserved.
+
+ This file is part of yt.
+
+ yt is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
import os
+import numpy as np
+from nose.tools import raises
+from yt.testing import \
+ fake_random_pf, assert_equal, assert_array_equal
+from yt.utilities.definitions import \
+ x_dict, y_dict
+from yt.utilities.exceptions import \
+ YTNoDataInObjectError
def setup():
from yt.config import ytcfg
- ytcfg["yt","__withintesting"] = "True"
+ ytcfg["yt", "__withintesting"] = "True"
+
def teardown_func(fns):
for fn in fns:
os.remove(fn)
+
def test_slice():
for nprocs in [8, 1]:
# We want to test both 1 proc and 8 procs, to make sure that
# parallelism isn't broken
- pf = fake_random_pf(64, nprocs = nprocs)
+ pf = fake_random_pf(64, nprocs=nprocs)
dims = pf.domain_dimensions
xn, yn, zn = pf.domain_dimensions
- xi, yi, zi = pf.domain_left_edge + 1.0/(pf.domain_dimensions * 2)
- xf, yf, zf = pf.domain_right_edge - 1.0/(pf.domain_dimensions * 2)
- coords = np.mgrid[xi:xf:xn*1j, yi:yf:yn*1j, zi:zf:zn*1j]
+ xi, yi, zi = pf.domain_left_edge + 1.0 / (pf.domain_dimensions * 2)
+ xf, yf, zf = pf.domain_right_edge - 1.0 / (pf.domain_dimensions * 2)
+ coords = np.mgrid[xi:xf:xn * 1j, yi:yf:yn * 1j, zi:zf:zn * 1j]
uc = [np.unique(c) for c in coords]
slc_pos = 0.5
# Some simple slice tests with single grids
@@ -33,31 +69,45 @@
yield assert_equal, slc["Ones"].max(), 1.0
yield assert_equal, np.unique(slc["px"]), uc[xax]
yield assert_equal, np.unique(slc["py"]), uc[yax]
- yield assert_equal, np.unique(slc["pdx"]), 1.0/(dims[xax]*2.0)
- yield assert_equal, np.unique(slc["pdy"]), 1.0/(dims[yax]*2.0)
+ yield assert_equal, np.unique(slc["pdx"]), 0.5 / dims[xax]
+ yield assert_equal, np.unique(slc["pdy"]), 0.5 / dims[yax]
pw = slc.to_pw()
fns += pw.save()
- frb = slc.to_frb((1.0,'unitary'), 64)
+ frb = slc.to_frb((1.0, 'unitary'), 64)
for slc_field in ['Ones', 'Density']:
yield assert_equal, frb[slc_field].info['data_source'], \
- slc.__str__()
+ slc.__str__()
yield assert_equal, frb[slc_field].info['axis'], \
- ax
+ ax
yield assert_equal, frb[slc_field].info['field'], \
- slc_field
+ slc_field
yield assert_equal, frb[slc_field].info['units'], \
- pf.field_info[slc_field].get_units()
+ pf.field_info[slc_field].get_units()
yield assert_equal, frb[slc_field].info['xlim'], \
- frb.bounds[:2]
+ frb.bounds[:2]
yield assert_equal, frb[slc_field].info['ylim'], \
- frb.bounds[2:]
+ frb.bounds[2:]
yield assert_equal, frb[slc_field].info['length_to_cm'], \
- pf['cm']
+ pf['cm']
yield assert_equal, frb[slc_field].info['center'], \
- slc.center
+ slc.center
yield assert_equal, frb[slc_field].info['coord'], \
- slc_pos
+ slc_pos
teardown_func(fns)
# wf == None
yield assert_equal, wf, None
+
+def test_slice_over_edges():
+ pf = fake_random_pf(64, nprocs=8, fields=["Density"], negative=[False])
+
+ slc = pf.h.slice(0, 0.0, "Density")
+ yield assert_array_equal, slc.grid_left_edge[:, 0], np.zeros((4))
+ slc = pf.h.slice(1, 0.5, "Density")
+ yield assert_array_equal, slc.grid_left_edge[:, 1], np.ones((4)) * 0.5
+
+
+ at raises(YTNoDataInObjectError)
+def test_slice_over_outer_boundary():
+ pf = fake_random_pf(64, nprocs=8, fields=["Density"], negative=[False])
+ slc = pf.h.slice(2, 1.0, "Density")
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/data_objects/universal_fields.py
--- a/yt/data_objects/universal_fields.py
+++ b/yt/data_objects/universal_fields.py
@@ -55,7 +55,7 @@
G, \
rho_crit_now, \
speed_of_light_cgs, \
- km_per_cm
+ km_per_cm, keV_per_K
from yt.utilities.math_utils import \
get_sph_r_component, \
@@ -216,18 +216,25 @@
data["Density"] * data["ThermalEnergy"]
add_field("Pressure", function=_Pressure, units=r"\rm{dyne}/\rm{cm}^{2}")
+def _TempkeV(field, data):
+ return data["Temperature"] * keV_per_K
+add_field("TempkeV", function=_TempkeV, units=r"\rm{keV}",
+ display_name="Temperature")
+
def _Entropy(field, data):
if data.has_field_parameter("mu"):
mw = mh*data.get_field_parameter("mu")
else :
mw = mh
+ try:
+ gammam1 = data.pf["Gamma"] - 1.0
+ except:
+ gammam1 = 5./3. - 1.0
return kboltz * data["Temperature"] / \
- ((data["Density"]/mw)**(data.pf["Gamma"] - 1.0))
+ ((data["Density"]/mw)**gammam1)
add_field("Entropy", units=r"\rm{ergs}\ \rm{cm}^{3\gamma-3}",
function=_Entropy)
-
-
### spherical coordinates: r (radius)
def _sph_r(field, data):
center = data.get_field_parameter("center")
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/pmods.py
--- a/yt/pmods.py
+++ b/yt/pmods.py
@@ -230,7 +230,7 @@
def __import_hook__(name, globals=None, locals=None, fromlist=None, level=-1):
# TODO: handle level parameter correctly. For now, we'll ignore
# it and try both absolute and relative imports.
- parent = __determine_parent__(globals)
+ parent = __determine_parent__(globals, level)
q, tail = __find_head_package__(parent, name)
m = __load_tail__(q, tail)
if not fromlist:
@@ -286,7 +286,7 @@
# The remaining functions are taken unmodified (except for the names)
# from knee.py.
-def __determine_parent__(globals):
+def __determine_parent__(globals, level):
if not globals or not globals.has_key("__name__"):
return None
pname = globals['__name__']
@@ -295,7 +295,13 @@
assert globals is parent.__dict__
return parent
if '.' in pname:
- i = pname.rfind('.')
+ if level > 0:
+ end = len(pname)
+ for l in range(level):
+ i = pname.rfind('.', 0, end)
+ end = i
+ else:
+ i = pname.rfind('.')
pname = pname[:i]
parent = sys.modules[pname]
assert parent.__name__ == pname
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/utilities/lib/geometry_utils.pyx
--- a/yt/utilities/lib/geometry_utils.pyx
+++ b/yt/utilities/lib/geometry_utils.pyx
@@ -183,7 +183,7 @@
@cython.wraparound(False)
@cython.cdivision(True)
def cutting_plane_cells(dobj, gobj):
- cdef np.ndarray[np.uint8_t, ndim=3] mask
+ cdef np.ndarray[np.uint8_t, ndim=3] mask
cdef np.ndarray[np.float64_t, ndim=1] left_edge = gobj.LeftEdge
cdef np.ndarray[np.float64_t, ndim=1] dds = gobj.dds
cdef int i, j, k
@@ -205,58 +205,6 @@
y += dds[1]
x += dds[0]
return mask
-
- at cython.boundscheck(False)
- at cython.wraparound(False)
- at cython.cdivision(True)
-def get_box_grids_level(np.ndarray[np.float64_t, ndim=1] left_edge,
- np.ndarray[np.float64_t, ndim=1] right_edge,
- int level,
- np.ndarray[np.float64_t, ndim=2] left_edges,
- np.ndarray[np.float64_t, ndim=2] right_edges,
- np.ndarray[np.int32_t, ndim=2] levels,
- np.ndarray[np.int32_t, ndim=1] mask,
- int min_index = 0):
- cdef int i, n
- cdef int nx = left_edges.shape[0]
- cdef int inside
- for i in range(nx):
- if i < min_index or levels[i,0] != level:
- mask[i] = 0
- continue
- inside = 1
- for n in range(3):
- if left_edge[n] >= right_edges[i,n] or \
- right_edge[n] <= left_edges[i,n]:
- inside = 0
- break
- if inside == 1: mask[i] = 1
- else: mask[i] = 0
-
- at cython.boundscheck(False)
- at cython.wraparound(False)
- at cython.cdivision(True)
-def get_box_grids_below_level(
- np.ndarray[np.float64_t, ndim=1] left_edge,
- np.ndarray[np.float64_t, ndim=1] right_edge,
- int level,
- np.ndarray[np.float64_t, ndim=2] left_edges,
- np.ndarray[np.float64_t, ndim=2] right_edges,
- np.ndarray[np.int32_t, ndim=2] levels,
- np.ndarray[np.int32_t, ndim=1] mask):
- cdef int i, n
- cdef int nx = left_edges.shape[0]
- cdef int inside
- for i in range(nx):
- mask[i] = 0
- if levels[i,0] <= level:
- inside = 1
- for n in range(3):
- if left_edge[n] >= right_edges[i,n] or \
- right_edge[n] <= left_edges[i,n]:
- inside = 0
- break
- if inside == 1: mask[i] = 1
# Finally, miscellaneous routines.
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/utilities/lib/misc_utilities.pyx
--- a/yt/utilities/lib/misc_utilities.pyx
+++ b/yt/utilities/lib/misc_utilities.pyx
@@ -117,12 +117,12 @@
@cython.boundscheck(False)
@cython.wraparound(False)
@cython.cdivision(True)
-def lines(np.ndarray[np.float64_t, ndim=3] image,
+def lines(np.ndarray[np.float64_t, ndim=3] image,
np.ndarray[np.int64_t, ndim=1] xs,
np.ndarray[np.int64_t, ndim=1] ys,
np.ndarray[np.float64_t, ndim=2] colors,
int points_per_color=1):
-
+
cdef int nx = image.shape[0]
cdef int ny = image.shape[1]
cdef int nl = xs.shape[0]
@@ -144,7 +144,7 @@
for i in range(3):
alpha[i] = colors[j/points_per_color,3]*\
colors[j/points_per_color,i]
- if x0 < x1:
+ if x0 < x1:
sx = 1
else:
sx = -1
@@ -152,7 +152,7 @@
sy = 1
else:
sy = -1
- while(1):
+ while(1):
if (x0 < 0 and sx == -1): break
elif (x0 >= nx and sx == 1): break
elif (y0 < 0 and sy == -1): break
@@ -174,13 +174,13 @@
if e2 < dx :
err = err + dx
y0 += sy
- return
+ return
def rotate_vectors(np.ndarray[np.float64_t, ndim=3] vecs,
np.ndarray[np.float64_t, ndim=2] R):
cdef int nx = vecs.shape[0]
cdef int ny = vecs.shape[1]
- rotated = np.empty((nx,ny,3),dtype='float64')
+ rotated = np.empty((nx,ny,3),dtype='float64')
for i in range(nx):
for j in range(ny):
for k in range(3):
@@ -229,15 +229,16 @@
int min_index = 0):
cdef int i, n
cdef int nx = left_edges.shape[0]
- cdef int inside
+ cdef int inside
+ cdef np.float64_t eps = np.finfo(np.float64).eps
for i in range(nx):
if i < min_index or levels[i,0] != level:
mask[i] = 0
continue
inside = 1
for n in range(3):
- if left_edge[n] >= right_edges[i,n] or \
- right_edge[n] <= left_edges[i,n]:
+ if (right_edges[i,n] - left_edge[n]) <= eps or \
+ (right_edge[n] - left_edges[i,n]) <= eps:
inside = 0
break
if inside == 1: mask[i] = 1
@@ -257,14 +258,15 @@
int min_level = 0):
cdef int i, n
cdef int nx = left_edges.shape[0]
- cdef int inside
+ cdef int inside
+ cdef np.float64_t eps = np.finfo(np.float64).eps
for i in range(nx):
mask[i] = 0
if levels[i,0] <= level and levels[i,0] >= min_level:
inside = 1
for n in range(3):
- if left_edge[n] >= right_edges[i,n] or \
- right_edge[n] <= left_edges[i,n]:
+ if (right_edges[i,n] - left_edge[n]) <= eps or \
+ (right_edge[n] - left_edges[i,n]) <= eps:
inside = 0
break
if inside == 1: mask[i] = 1
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/utilities/physical_constants.py
--- a/yt/utilities/physical_constants.py
+++ b/yt/utilities/physical_constants.py
@@ -41,6 +41,7 @@
mpc_per_rsun = 2.253962e-14
mpc_per_miles = 5.21552871e-20
mpc_per_cm = 3.24077929e-25
+kpc_per_cm = mpc_per_cm / mpc_per_kpc
km_per_pc = 1.3806504e13
km_per_m = 1e-3
km_per_cm = 1e-5
@@ -54,9 +55,11 @@
rsun_per_mpc = 1.0 / mpc_per_rsun
miles_per_mpc = 1.0 / mpc_per_miles
cm_per_mpc = 1.0 / mpc_per_cm
+cm_per_kpc = 1.0 / kpc_per_cm
cm_per_km = 1.0 / km_per_cm
pc_per_km = 1.0 / km_per_pc
cm_per_pc = 1.0 / pc_per_cm
+
# time
sec_per_Gyr = 31.5576e15
sec_per_Myr = 31.5576e12
@@ -65,6 +68,12 @@
sec_per_hr = 3600.0
day_per_year = 365.25
+# temperature / energy
+erg_per_eV = 1.602176487e-12 # http://goldbook.iupac.org/E02014.html
+erg_per_keV = erg_per_eV * 1.0e3
+K_per_keV = erg_per_keV / boltzmann_constant_cgs
+keV_per_K = 1.0 / K_per_keV
+
#Short cuts
G = gravitational_constant_cgs
me = mass_electron_cgs
diff -r 8aca2a4dfcf697a2d27fce48ccef0f2ffadb8a0d -r a06f8e4569925dfe4b21d2cc9f8ab6a27be6523f yt/visualization/volume_rendering/camera.py
--- a/yt/visualization/volume_rendering/camera.py
+++ b/yt/visualization/volume_rendering/camera.py
@@ -232,16 +232,22 @@
if self.no_ghost:
mylog.info('Warning: no_ghost is currently True (default). This may lead to artifacts at grid boundaries.')
self.tree_type = tree_type
+ if le is None: le = self.pf.domain_left_edge
+ self.le = np.array(le)
+ if re is None: re = self.pf.domain_right_edge
+ self.re = np.array(re)
if volume is None:
if self.use_kd:
volume = AMRKDTree(self.pf, l_max=l_max, fields=self.fields, no_ghost=no_ghost,
- log_fields = log_fields, le=le, re=re)
+ log_fields = log_fields, le=self.le, re=self.re)
else:
volume = HomogenizedVolume(fields, pf = self.pf,
log_fields = log_fields)
else:
self.use_kd = isinstance(volume, AMRKDTree)
self.volume = volume
+ self.center = (self.re + self.le) / 2.0
+ self.region = self.pf.h.region(self.center, self.le, self.re)
def _setup_box_properties(self, width, center, unit_vectors):
self.width = width
@@ -300,8 +306,8 @@
>>> write_bitmap(im, 'render_with_grids.png')
"""
- corners = self.pf.h.grid_corners
- levels = self.pf.h.grid_levels[:,0]
+ corners = self.region.grid_corners
+ levels = self.region.grid_levels[:,0]
if max_level is not None:
subset = levels <= max_level
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