TensorFunction
TensorFunction(*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 | 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. |
| root_dimensions | Tuple of root Dimensions of the physical space Dimensions. |
| 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, method='FD', **kwargs)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 |
|
| method | Discretization method. Options are ‘FD’ (default) and ‘RSFD’ (rotated staggered grid finite-difference). | 'FD' |
|
| weights | Custom weights for the finite differences. | required |
laplacian
laplacian(shift=None, order=None, method='FD', **kwargs)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 |
|
| method | Discretization method. Options are ‘FD’ (default) and ‘RSFD’ (rotated staggered grid finite-difference). | 'FD' |
|
| weights | Custom weights for the finite | required |