def __new__(cls, **kwargs): name = kwargs.pop('name') grid = kwargs.pop('grid') time_range = kwargs.pop('time_range') time_order = kwargs.pop('time_order', 2) p_dim = kwargs.pop('dimension', Dimension(name='p_%s' % name)) coordinates = kwargs.pop('coordinates', kwargs.pop('coordinates_data', None)) # Either `npoint` or `coordinates` must be provided npoint = kwargs.pop('npoint', None) if npoint is None: if coordinates is None: raise TypeError("Need either `npoint` or `coordinates`") npoint = coordinates.shape[0] # Create the underlying SparseTimeFunction object obj = SparseTimeFunction.__new__(cls, name=name, grid=grid, dimensions=(grid.time_dim, p_dim), npoint=npoint, nt=time_range.num, time_order=time_order, coordinates=coordinates, **kwargs) obj._time_range = time_range._rebuild() # If provided, copy initial data into the allocated buffer data = kwargs.get('data') if data is not None: obj.data[:] = data return obj
def __new__(cls, *args, **kwargs): options = kwargs.get('options', {}) if cls in _SymbolCache: obj = sympy.Function.__new__(cls, *args, **options) obj._cached_init() else: name = kwargs.pop('name') grid = kwargs.pop('grid') time_range = kwargs.pop('time_range') time_order = kwargs.pop('time_order', 2) p_dim = kwargs.pop('dimension', Dimension(name='p_%s' % name)) coordinates = kwargs.pop('coordinates', kwargs.pop('coordinates_data', None)) # Either `npoint` or `coordinates` must be provided npoint = kwargs.pop('npoint', None) if npoint is None: if coordinates is None: raise TypeError("Need either `npoint` or `coordinates`") npoint = coordinates.shape[0] # Create the underlying SparseTimeFunction object obj = SparseTimeFunction.__new__(cls, name=name, grid=grid, dimensions=(grid.time_dim, p_dim), npoint=npoint, nt=time_range.num, time_order=time_order, coordinates=coordinates, **kwargs) obj._time_range = time_range._rebuild() # If provided, copy initial data into the allocated buffer data = kwargs.get('data') if data is not None: obj.data[:] = data return obj
def __new__(cls, *args, **kwargs): options = kwargs.get('options', {}) key = cls._cache_key(*args, **kwargs) obj = cls._cache_get(key) if obj is not None: newobj = sympy.Function.__new__(cls, *args, **options) newobj.__init_cached__(key) return newobj # Not in cache. Create a new PointSouce via devito.SparseTimeFunction name = kwargs.pop('name') grid = kwargs.pop('grid') time_range = kwargs.pop('time_range') time_order = kwargs.pop('time_order', 2) p_dim = kwargs.pop('dimension', Dimension(name='p_%s' % name)) coordinates = kwargs.pop('coordinates', kwargs.pop('coordinates_data', None)) # Either `npoint` or `coordinates` must be provided npoint = kwargs.pop('npoint', None) if npoint is None: if coordinates is None: raise TypeError("Need either `npoint` or `coordinates`") npoint = coordinates.shape[0] # Create the underlying SparseTimeFunction object obj = SparseTimeFunction.__new__(cls, name=name, grid=grid, dimensions=(grid.time_dim, p_dim), npoint=npoint, nt=time_range.num, time_order=time_order, coordinates=coordinates, **kwargs) obj._time_range = time_range._rebuild() # If provided, copy initial data into the allocated buffer data = kwargs.get('data') if data is not None: obj.data[:] = data return obj
def __new__(cls, *args, **kwargs): options = kwargs.get('options', {}) key = cls obj = cls._cache_get(key) if obj is not None: newobj = sympy.Function.__new__(cls, *args, **options) newobj.__init_cached__(key) return newobj p_dim = kwargs.get('dimension', Dimension('p_%s' % kwargs.get("name"))) npoint = kwargs.get("npoint") coords = kwargs.get("coordinates") if npoint is None: if coords is None: raise TypeError("Need either `npoint` or `coordinates`") else: npoint = coords.shape[0] grid = kwargs.get("grid") ntime = kwargs.get("ntime") if kwargs.get("data") is None: if ntime is None: error('Either data or ntime are required to' 'initialise source/receiver objects') else: ntime = kwargs.get("ntime") or kwargs.get("data").shape[0] # Create the underlying SparseTimeFunction object kwargs["nt"] = ntime kwargs['npoint'] = npoint obj = SparseTimeFunction.__new__(cls, dimensions=[grid.time_dim, p_dim], **kwargs) # If provided, copy initial data into the allocated buffer if kwargs.get("data") is not None: obj.data[:] = kwargs.get("data") return obj