TensorFunction

TensorFunction(self, *args, **kwargs)

Tensor valued Function represented as a Matrix. Each component is a Function or TimeFunction.

A TensorFunction and the classes that inherit from it takes the same parameters as a DiscreteFunction and additionally:

Parameters

Name Type Description Default
name str Name of the symbol. required
grid Grid Carries shape, dimensions, and dtype of the TensorFunction. When grid is not provided, shape and dimensions must be given. For MPI execution, a Grid is compulsory. required
space_order int or 3-tuple of ints Discretisation order for space derivatives. space_order also impacts the number of points available around a generic point of interest. By default, space_order points are available on both sides of a generic point of interest, including those nearby the grid boundary. Sometimes, fewer points suffice; in other scenarios, more points are necessary. In such cases, instead of an integer, one can pass a 3-tuple (o, lp, rp) indicating the discretization order (o) as well as the number of points on the left (lp) and right (rp) sides of a generic point of interest. 1
shape tuple of ints Shape of the domain region in grid points. Only necessary if grid isn’t given. required
dimensions tuple of Dimension Dimensions associated with the object. Only necessary if grid isn’t given. required
dtype devito.data - type Any object that can be interpreted as a numpy data type. np.float32
staggered Dimension or tuple of Dimension or Stagger Staggering of each component, needs to have the size of the tensor. Defaults to the Dimensions. required
initializer callable or any object exposing the buffer interface Data initializer. If a callable is provided, data is allocated lazily. required
allocator MemoryAllocator Controller for memory allocation. To be used, for example, when one wants to take advantage of the memory hierarchy in a NUMA architecture. Refer to default_allocator.__doc__ for more information. required
padding int or tuple of ints Allocate extra grid points to maximize data access alignment. When a tuple of ints, one int per Dimension should be provided. required
symmetric bool Whether the tensor is symmetric or not. True
diagonal Bool Whether the tensor is diagonal or not. False

Attributes

Name Description
is_diagonal Whether the tensor is diagonal.
laplace Laplacian of the TensorFunction.
space_dimensions Spatial dimensions.
space_order The space order for all components.

Methods

Name Description
div Divergence of the TensorFunction (is a VectorFunction).
laplacian Laplacian of the TensorFunction with shifted derivatives and custom

div

div(shift=None, order=None)

Divergence of the TensorFunction (is a VectorFunction).

Parameters

Name Type Description Default
shift Shift for the center point of the derivative in number of gridpoints None
order Discretization order for the finite differences. Uses func.space_order when not specified None

laplacian

laplacian(shift=None, order=None)

Laplacian of the TensorFunction with shifted derivatives and custom FD order.

Each second derivative is left-right (i.e D^T D with D the first derivative ): (self.dx(x0=dim+shift*dim.spacing, fd_order=order)).dx(x0=dim-shift*dim.spacing, fd_order=order)

Parameters

Name Type Description Default
shift Shift for the center point of the derivative in number of gridpoints None
order Discretization order for the finite differences. Uses func.space_order when not specified None
Back to top