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)::

                      |                         |
               DerivedDimension            DefaultDimension
           |                   |
      SubDimension   ConditionalDimension


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


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]
f[i, j + 1] + f[i + 1, j]
>>> f*i
i*f(i, j)


Name Description
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_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
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.


Name Description
class_key Overrides sympy.Symbol.class_key such that Dimensions always



Overrides sympy.Symbol.class_key such that Dimensions always preceed other symbols when printed (e.g. x + h_x, not h_x + x).

Back to top