# Derivative

``Derivative()``

An unevaluated Derivative, which carries metadata (Dimensions, derivative order, etc) describing how the derivative will be expanded upon evaluation.

## Parameters

Name Type Description Default
expr expr - like Expression for which the Derivative is produced. required
dims Dimension or tuple of Dimension Dimensions w.r.t. which to differentiate. required
fd_order int or tuple of int Coefficient discretization order. Note: this impacts the width of the resulting stencil. `1`
deriv_order Derivative order. required
side Side or tuple of Side Side of the finite difference location, centered (at x), left (at x - 1) or right (at x +1). `centered`
transpose Transpose Forward (matvec=direct) or transpose (matvec=transpose) mode of the finite difference. `direct`
subs dict Substitutions to apply to the finite-difference expression after evaluation. required
x0 dict Origin (where the finite-difference is evaluated at) for the finite-difference scheme, e.g. {x: x, y: y + h_y/2}. required

## Examples

Creation

``````>>> from devito import Function, Derivative, Grid
>>> grid = Grid((10, 10))
>>> x, y = grid.dimensions
>>> u = Function(name="u", grid=grid, space_order=2)
>>> Derivative(u, x)
Derivative(u(x, y), x)``````

This can also be obtained via the differential shortcut

``````>>> u.dx
Derivative(u(x, y), x)``````

You can also specify the order as a keyword argument

``````>>> Derivative(u, x, deriv_order=2)
Derivative(u(x, y), (x, 2))``````

Or as a tuple

``````>>> Derivative(u, (x, 2))
Derivative(u(x, y), (x, 2))``````

Once again, this can be obtained via shortcut notation

``````>>> u.dx2
Derivative(u(x, y), (x, 2))``````

Derivative object are also callable to change default setup:

``````>>> u.dx2(x0=x + x.spacing)
Derivative(u(x, y), (x, 2))``````

will create the second derivative at x=x + x.spacing. Accepted arguments for dynamic evaluation are `x0`, `fd_order` and `side`.

## Attributes

Name Description
T Transpose of the Derivative.