[yt-svn] commit/yt: 2 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Fri Oct 17 13:34:24 PDT 2014
2 new commits in yt:
https://bitbucket.org/yt_analysis/yt/commits/13f5af59d375/
Changeset: 13f5af59d375
Branch: yt
User: MatthewTurk
Date: 2014-10-17 18:17:01+00:00
Summary: First pass at computing boxes, thanks to Andrew's suggestion.
Affected #: 2 files
diff -r 558d9f064464adf497d777b760b9e7ac12f9baea -r 13f5af59d37521a28bee3019f37068541caced59 yt/frontends/chombo/data_structures.py
--- a/yt/frontends/chombo/data_structures.py
+++ b/yt/frontends/chombo/data_structures.py
@@ -113,7 +113,8 @@
self.directory = ds.fullpath
self._handle = ds._handle
- self.float_type = self._handle['Chombo_global'].attrs['testReal'].dtype.name
+ tr = self._handle['Chombo_global'].attrs.get("testReal", "float32")
+
self._levels = [key for key in self._handle.keys() if key.startswith('level')]
GridIndex.__init__(self, ds, dataset_type)
@@ -161,7 +162,13 @@
def _count_grids(self):
self.num_grids = 0
for lev in self._levels:
- self.num_grids += self._handle[lev]['Processors'].len()
+ d = self._handle[lev]
+ if 'Processors' in d:
+ self.num_grids += d['Processors'].len()
+ elif 'boxes' in d:
+ self.num_grids += d['boxes'].len()
+ else:
+ raise RuntimeError("Uknown file specification")
def _parse_index(self):
f = self._handle # shortcut
diff -r 558d9f064464adf497d777b760b9e7ac12f9baea -r 13f5af59d37521a28bee3019f37068541caced59 yt/frontends/chombo/io.py
--- a/yt/frontends/chombo/io.py
+++ b/yt/frontends/chombo/io.py
@@ -25,6 +25,7 @@
_dataset_type = "chombo_hdf5"
_offset_string = 'data:offsets=0'
_data_string = 'data:datatype=0'
+ _offsets = None
def __init__(self, ds, *args, **kwargs):
BaseIOHandler.__init__(self, ds, *args, **kwargs)
@@ -32,6 +33,29 @@
self._handle = ds._handle
self.dim = self._handle['Chombo_global/'].attrs['SpaceDim']
self._read_ghost_info()
+ if self._offset_string not in self._handle['level_0']:
+ self._calculate_offsets()
+
+ def _calculate_offsets(self):
+ def box_size(corners):
+ size = 1
+ for idim in range(self.dim):
+ size *= (corners[idim+self.dim] - corners[idim] + 1)
+ return size
+
+ self._offsets = {}
+ num_comp = self._handle.attrs['num_components']
+ level = 0
+ while 1:
+ lname = 'level_%i' % level
+ if lname not in self._handle: break
+ boxes = self._handle['level_0']['boxes'].value
+ box_sizes = [box_size(box) for box in boxes]
+
+ offsets = np.cumsum(box_sizes*num_comp, dtype='int64')
+ offsets -= offsets[0]
+ self._offsets[level] = offsets
+ level += 1
def _read_ghost_info(self):
try:
@@ -41,7 +65,7 @@
self.ghost = np.array(self.ghost)
except KeyError:
# assume zero ghosts if outputGhosts not present
- self.ghost = np.zeros(self.dim)
+ self.ghost = np.zeros(self.dim, 'int64')
_field_dict = None
@property
@@ -80,7 +104,10 @@
shape = grid.ActiveDimensions + 2*self.ghost
boxsize = shape.prod()
- grid_offset = lev[self._offset_string][grid._level_id]
+ if self._offsets is not None:
+ grid_offset = self._offsets[grid.Level][grid._level_id]
+ else:
+ grid_offset = lev[self._offset_string][grid._level_id]
start = grid_offset+self.field_dict[field]*boxsize
stop = start + boxsize
data = lev[self._data_string][start:stop]
https://bitbucket.org/yt_analysis/yt/commits/5da834fbf924/
Changeset: 5da834fbf924
Branch: yt
User: MatthewTurk
Date: 2014-10-17 18:46:46+00:00
Summary: Thanks to Andrew for the fix!
Affected #: 1 file
diff -r 13f5af59d37521a28bee3019f37068541caced59 -r 5da834fbf92476bd5defa5f3f114287e07190888 yt/frontends/chombo/io.py
--- a/yt/frontends/chombo/io.py
+++ b/yt/frontends/chombo/io.py
@@ -50,7 +50,7 @@
lname = 'level_%i' % level
if lname not in self._handle: break
boxes = self._handle['level_0']['boxes'].value
- box_sizes = [box_size(box) for box in boxes]
+ box_sizes = np.array([box_size(box) for box in boxes])
offsets = np.cumsum(box_sizes*num_comp, dtype='int64')
offsets -= offsets[0]
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