def __init__(self, name, *dimensions, data=None, kind=None):
super(Field, self).__init__(name)
self.__name = name
self.dimensions = dimensions
if kind is None:
if data is None:
self.kind = COMPLEX
elif isinstance(data, (numpy.ndarray, numpy.number)):
self.kind = DTYPE_KINDS[data.dtype.kind]
elif isinstance(data, SCALAR_TYPES):
self.kind = SCALAR_KINDS[type(data)]
else:
assert kind in (REAL, COMPLEX)
self.kind = kind
dtype = DEFAULT_DTYPES[self.kind]
shape = tuple(d.grid.size for d in dimensions)
if data is None:
self.data = numpy.empty(shape, dtype)
elif isinstance(data, SCALAR_TYPES):
self.data = numpy.ones(shape, dtype) * numpy.array(data).astype(dtype)
elif isinstance(data, numpy.ndarray):
assert data.shape == shape
assert numpy.can_cast(data.dtype, dtype)
self.data = data.astype(dtype)
else:
raise ValueError
评论列表
文章目录