SubDimension
self, *args, **kwargs) SubDimension(
Symbol defining a convex iteration sub-space derived from a parent
Dimension.
Parameters
Name | Type | Description | Default |
---|---|---|---|
name | str | Name of the dimension. | required |
parent | Dimension | The parent Dimension. | required |
left | expr - like | Symbolic expression providing the left (lower) bound of the SubDimension. | required |
right | expr - like | Symbolic expression providing the right (upper) bound of the SubDimension. | required |
thickness | 2-tuple of 2-tuples | The thickness of the left and right regions, respectively. | required |
local | bool | True if, in case of domain decomposition, the SubDimension is guaranteed not to span more than one domain, False otherwise. | required |
Examples
SubDimensions should not be created directly in user code; SubDomains should be used instead. Exceptions are rare.
To create a SubDimension, one should use the shortcut methods left
, right
, middle
. For example, to create a SubDimension that spans the entire space of the parent Dimension except for the two extremes:
>>> from devito import Dimension, SubDimension
>>> x = Dimension('x')
>>> xi = SubDimension.middle('xi', x, 1, 1)
For a SubDimension that only spans the three leftmost points of its parent Dimension, instead:
>>> xl = SubDimension.left('xl', x, 3)
SubDimensions created via the left
and right
shortcuts are, by default, local (i.e., non-distributed) Dimensions, as they are assumed to fit entirely within a single domain. This is the most typical use case (e.g., to set up boundary conditions). To drop this assumption, pass local=False
.
Attributes
Name | Description |
---|---|
is_Sub | bool(x) -> bool |