[Yt-svn] yt-commit r375 - in trunk/yt: lagos raven
mturk at wrangler.dreamhost.com
mturk at wrangler.dreamhost.com
Fri Feb 1 13:16:17 PST 2008
Author: mturk
Date: Fri Feb 1 13:16:10 2008
New Revision: 375
URL: http://yt.spacepope.org/changeset/375
Log:
* Sped up serial projections *significantly*.
* Added Kinetic SZ effect, Y SZ effect, and (crude) XRayEmissivity.
* Added a new means of specifying conversion factors for projections. Right
now it could use some work, and still tosses real conversions over to raven.
This will be fixed when I eventually get around to unit testing raven.
Apologies for the half-assery.
Modified:
trunk/yt/lagos/BaseDataTypes.py
trunk/yt/lagos/DataReadingFuncs.py
trunk/yt/lagos/DerivedFields.py
trunk/yt/lagos/HierarchyType.py
trunk/yt/raven/PlotTypes.py
Modified: trunk/yt/lagos/BaseDataTypes.py
==============================================================================
--- trunk/yt/lagos/BaseDataTypes.py (original)
+++ trunk/yt/lagos/BaseDataTypes.py Fri Feb 1 13:16:10 2008
@@ -247,6 +247,7 @@
"""
self.axis = axis
EnzoData.__init__(self, pf, fields, **kwargs)
+ self.set_field_parameter("axis",axis)
@time_execution
def get_data(self, fields = None):
@@ -597,7 +598,10 @@
"""
Enzo2DData.__init__(self, axis, field, pf, **kwargs)
if not source:
+ self._check_region = False
source = EnzoGridCollection(center, self.hierarchy.grids)
+ else:
+ self._check_region = True
self.source = source
if max_level == None:
max_level = self.hierarchy.maxLevel
@@ -809,13 +813,18 @@
masked_data[grid.child_indices] = 0
weight_data[grid.child_indices] = 0
#@todo: Fix the func to set up a path length too
- dl = just_one(grid['d%s' % axis_names[self.axis]])
+ dl = 1.0
+ if fieldInfo.has_key(field) and fieldInfo[field].line_integral:
+ dl = just_one(grid['d%s' % axis_names[self.axis]])
dx = just_one(grid['d%s' % axis_names[x_dict[self.axis]]])
dy = just_one(grid['d%s' % axis_names[y_dict[self.axis]]])
full_proj = self.func(masked_data,axis=self.axis)*dl
weight_proj = self.func(weight_data,axis=self.axis)*dl
- used_data = self._get_points_in_region(grid)
- used_points = na.where(na.logical_or.reduce(used_data, self.axis))
+ if self._check_region:
+ used_data = self._get_points_in_region(grid)
+ used_points = na.where(na.logical_or.reduce(used_data, self.axis))
+ else:
+ used_points = slice(None)
if zero_out:
subgrid_mask = na.logical_and.reduce(grid.child_mask, self.axis).astype('int64')
else:
@@ -837,7 +846,10 @@
@restore_grid_state
def _get_data_from_grid(self, grid, field):
- bad_points = self._get_points_in_region(grid)
+ if self._check_region:
+ bad_points = self._get_points_in_region(grid)
+ else:
+ bad_points = 1.0
d = grid[field] * bad_points
return d
Modified: trunk/yt/lagos/DataReadingFuncs.py
==============================================================================
--- trunk/yt/lagos/DataReadingFuncs.py (original)
+++ trunk/yt/lagos/DataReadingFuncs.py Fri Feb 1 13:16:10 2008
@@ -72,7 +72,7 @@
@param field: field to read
@type field: string
"""
- f = tables.openFile(self.filename)
+ f = tables.openFile(self.filename, nodeCacheSize=1)
t = f.getNode("/", field).read().astype("float64")
try:
t = t.swapaxes(0,2)
@@ -104,7 +104,7 @@
@param sl: region to get
@type sl: SliceType
"""
- f = tables.openFile(grid.filename)
+ f = tables.openFile(grid.filename, nodeCacheSize=1)
ss = f.getNode("/", field)[sl].swapaxes(0,2)
f.close()
return ss
@@ -125,8 +125,8 @@
def readDataPacked(self, field):
f = tables.openFile(self.filename,
rootUEP="/Grid%08i" % (self.id),
- mode='r')
- t = f.getNode("/", field).read()
+ mode='r', nodeCacheSize=1)
+ t = f.getNode("/", field).read().astype('float64')
t = t.swapaxes(0,2)
f.close()
return t
@@ -142,7 +142,7 @@
@param sl: region to get
@type sl: SliceType
"""
- f = tables.openFile(grid.filename)
+ f = tables.openFile(grid.filename, nodeCacheSize=1)
ss = f.getNode("/Grid%08i" % (grid.id), field)[sl]
f.close()
return ss
Modified: trunk/yt/lagos/DerivedFields.py
==============================================================================
--- trunk/yt/lagos/DerivedFields.py (original)
+++ trunk/yt/lagos/DerivedFields.py Fri Feb 1 13:16:10 2008
@@ -13,7 +13,12 @@
from yt.funcs import *
-mh = 1.67e-24
+mh = 1.67e-24 # g
+me = 9.11e-28 # g
+sigma_thompson = 6.65e-25 # cm^2
+clight = 3.0e10 # cm/s
+kboltz = 1.38e-16
+
fieldInfo = {}
class ValidationException(Exception):
@@ -66,7 +71,9 @@
convert_function = None,
units = "", projected_units = "",
take_log = True, validators = None,
- variable_length = False, vector_field=False):
+ variable_length = False, vector_field=False,
+ line_integral = True,
+ projection_conversion = "cm"):
self.name = name
self._function = function
if validators:
@@ -81,6 +88,8 @@
self._convert_function = convert_function
self.variable_length = variable_length
self.vector_field = vector_field
+ self.line_integral = line_integral
+ self.projection_conversion = projection_conversion
def check_available(self, data):
for validator in self.validators:
validator(data)
@@ -405,6 +414,36 @@
function=_CellVolume,
convert_function=_ConvertCellVolumeCGS)
+def _XRayEmissivity(field, data):
+ return ((data["Density"]**2.0)*data["Temperature"]**0.5)
+def _convertXRayEmissivity(data):
+ return 2.168e60
+add_field("XRayEmissivity",
+ convert_function=_convertXRayEmissivity,
+ projection_conversion="1")
+
+
+def _SZKinetic(field, data):
+ vel_axis = data.get_field_parameter('axis')
+ if vel_axis > 2:
+ raise NeedsParameter(['axis'])
+ vel = data["%s-velocity" % ({0:'x',1:'y',2:'z'}[vel_axis])]
+ return (vel*data["Density"])
+def _convertSZKinetic(data):
+ return 0.88*((sigma_thompson/mh)/clight)
+add_field("SZKinetic",
+ convert_function=_convertSZKinetic,
+ validators=[ValidateParameter('axis')])
+
+def _SZY(field, data):
+ return (data["Density"]*data["Temperature"])
+def _convertSZY(data):
+ conv = (0.88/mh) * (kboltz)/(me * clight*clight) * sigma_thompson
+ return conv
+add_field("SZY", convert_function=_convertSZY)
+
+
+
def __gauss_kern(size):
""" Returns a normalized 2D gauss kernel array for convolutions """
size = int(size)
Modified: trunk/yt/lagos/HierarchyType.py
==============================================================================
--- trunk/yt/lagos/HierarchyType.py (original)
+++ trunk/yt/lagos/HierarchyType.py Fri Feb 1 13:16:10 2008
@@ -476,8 +476,15 @@
if ytcfg.getboolean("lagos","ReconstructHierarchy") == True:
mylog.debug("Reconstructing hierarchy")
for level in range(self.maxLevel+1):
- for grid in self.select_grids(level):
+ grids_to_recon = self.select_grids(level)
+ if len(self.grids) > 3e5:
+ pbar = get_pbar('Reconsructing level % 2i / % 2i ' \
+ % (level, self.maxLevel),
+ len(grids_to_recon))
+ for i,grid in enumerate(grids_to_recon):
+ if pbar: pbar.update(i)
if grid.Parent: grid._guess_properties_from_parent()
+ if pbar: pbar.finish()
def __select_level(self, level):
"""
Modified: trunk/yt/raven/PlotTypes.py
==============================================================================
--- trunk/yt/raven/PlotTypes.py (original)
+++ trunk/yt/raven/PlotTypes.py Fri Feb 1 13:16:10 2008
@@ -399,9 +399,15 @@
if self.colorbar != None: self.colorbar.set_label(data_label)
def __getitem__(self, item):
- return self.data[item] * \
- self.data.hierarchy.parameter_file.units["cm"]
- #self.data.hierarchy.parameter_file.conversion_factors[item] * \
+ if lagos.fieldInfo.has_key(item):
+ if not lagos.fieldInfo[item].line_integral:
+ dl = 1.0
+ else:
+ dl = self.data.hierarchy.parameter_file.units[
+ lagos.fieldInfo[item].projection_conversion]
+ else:
+ dl = self.data.hierarchy.parameter_file.units["cm"]
+ return self.data[item] * dl
class CuttingPlanePlot(SlicePlot):
_type_name = "CuttingPlane"
More information about the yt-svn
mailing list