Source code for yt.frontends.cf_radial.io
"""
CF-Radial-specific IO functions
"""
import numpy as np
from yt.utilities.io_handler import BaseIOHandler
[docs]
class CFRadialIOHandler(BaseIOHandler):
_particle_reader = False
_dataset_type = "cf_radial"
def _read_fluid_selection(self, chunks, selector, fields, size):
# This needs to allocate a set of arrays inside a dictionary, where the
# keys are the (ftype, fname) tuples and the values are arrays that
# have been masked using whatever selector method is appropriate. The
# dict gets returned at the end and it should be flat, with selected
# data.
rv = {field: np.empty(size, dtype="float64") for field in fields}
offset = 0
with self.ds._handle() as xr_ds_handle:
for field in fields:
for chunk in chunks:
for grid in chunk.objs:
variable = xr_ds_handle.variables[field[1]]
data = variable.values[0, ...].T
offset += grid.select(selector, data, rv[field], offset)
return rv