Dimension
Dimension()
Symbol defining an iteration space.
A Dimension represents a problem dimension. It is typically used to index into Functions, but it can also appear in the middle of a symbolic expression just like any other symbol.
Dimension is the root of a hierarchy of classes, which looks as follows (only the classes exposed to the level of the user API are shown)::
Dimension
|
---------------------------
| |
DerivedDimension DefaultDimension
|
---------------------
| |
SubDimension ConditionalDimension
Parameters
Name | Type | Description | Default |
---|---|---|---|
name | str | Name of the dimension. | required |
spacing | symbol | A symbol to represent the physical spacing along this Dimension. | h_name |
Examples
Dimensions are automatically created when a Grid is instantiated.
>>> from devito import Grid
>>> grid = Grid(shape=(4, 4))
>>> x, y = grid.dimensions
>>> type(x)
<class 'devito.types.dimension.SpaceDimension'>
>>> time = grid.time_dim
>>> type(time)
<class 'devito.types.dimension.TimeDimension'>
>>> t = grid.stepping_dim
>>> type(t)
<class 'devito.types.dimension.SteppingDimension'>
Alternatively, one can create Dimensions explicitly
>>> from devito import Dimension
>>> i = Dimension(name='i')
Or, when many “free” Dimensions are needed, with the shortcut
>>> from devito import dimensions
>>> i, j, k = dimensions('i j k')
A Dimension can be used to build a Function as well as within symbolic expressions, as both array index (“indexed notation”) and free symbol.
>>> from devito import Function
>>> f = Function(name='f', shape=(4, 4), dimensions=(i, j))
>>> f + f
2*f(i, j)
>>> f[i + 1, j] + f[i, j + 1]
+ 1] + f[i + 1, j]
f[i, j >>> f*i
*f(i, j) i
Attributes
Name | Description |
---|---|
is_AbstractSub | bool(x) -> bool |
is_Block | bool(x) -> bool |
is_Conditional | bool(x) -> bool |
is_Custom | bool(x) -> bool |
is_Default | bool(x) -> bool |
is_Derived | bool(x) -> bool |
is_Dimension | bool(x) -> bool |
is_Incr | bool(x) -> bool |
is_Modulo | bool(x) -> bool |
is_MultiSub | bool(x) -> bool |
is_NonlinearDerived | bool(x) -> bool |
is_Space | bool(x) -> bool |
is_Stencil | bool(x) -> bool |
is_Stepping | bool(x) -> bool |
is_Sub | bool(x) -> bool |
is_SubIterator | bool(x) -> bool |
is_Time | bool(x) -> bool |
is_Virtual | bool(x) -> bool |
spacing | Symbol representing the physical spacing along the Dimension. |
symbolic_incr | The increment value while iterating over the Dimension. |
symbolic_max | Symbol defining the maximum point of the Dimension. |
symbolic_min | Symbol defining the minimum point of the Dimension. |
symbolic_size | Symbolic size of the Dimension. |
Methods
Name | Description |
---|---|
class_key | Overrides sympy.Symbol.class_key such that Dimensions always |
class_key
class_key()
Overrides sympy.Symbol.class_key such that Dimensions always preceed other symbols when printed (e.g. x + h_x, not h_x + x).