Next: Stencil customize, Previous: Stencil object, Up: Stencils [Contents][Index]
This section lists all the stencil operators provided by Blitz++. They
assume that an array represents evenly spaced data points separated by a
distance of h. A 2nd-order accurate operator has error term
O(h^2); a 4th-order accurate operator has error term O(h^4).
All of the stencils have factors associated with them. For example, the
central12 operator is a discrete first derivative which is 2nd-order
accurate. Its factor is 2h; this means that to get the first derivative of
an array A, you need to use central12(A,firstDim)/(2h).
Typically when designing stencils, one factors out all of the h terms
for efficiency.
The factor terms always consist of an integer multiplier (often 1) and a
power of h. For ease of use, all of the operators listed below are
provided in a second “normalized” version in which the integer multiplier
is 1. The normalized versions have an n appended to the name, for
example central12n is the normalized version of central12, and
has factor h instead of 2h.
These operators are defined in blitz/array/stencilops.h if you wish
to see the implementation.
central12(A,dimension)1st derivative, 2nd order accurate. Factor: 2h
| -1 | 0 | 1 | |
| -1 | 1 |
central22(A,dimension)2nd derivative, 2nd order accurate. Factor: h^2
| -1 | 0 | 1 | |
| 1 | -2 | 1 |
central32(A,dimension)3rd derivative, 2nd order accurate. Factor: 2h^3
| -2 | -1 | 0 | 1 | 2 | |
| -1 | 2 | -2 | 1 |
central42(A,dimension)4th derivative, 2nd order accurate. Factor: h^4
| -2 | -1 | 0 | 1 | 2 | |
| 1 | -4 | 6 | -4 | 1 |
central14(A,dimension)1st derivative, 4th order accurate. Factor: 12h
| -2 | -1 | 0 | 1 | 2 | |
| 1 | -8 | 8 | -1 |
central24(A,dimension)2nd derivative, 4th order accurate. Factor: 12h^2
| -2 | -1 | 0 | 1 | 2 | |
| -1 | 16 | -30 | 16 | -1 |
central34(A,dimension)3rd derivative, 4th order accurate. Factor: 8h^3
| -2 | -1 | 0 | 1 | 2 | |
| -8 | 13 | -13 | 8 |
central44(A,dimension)4th derivative, 4th order accurate. Factor: 6h^4
| -2 | -1 | 0 | 1 | 2 | |
| 12 | -39 | 56 | -39 | 12 |
Note that the above are available in normalized versions central12n,
central22n, ..., central44n which have factors of h,
h^2, h^3, or h^4 as appropriate.
These are available in multicomponent versions: for example,
central12(A,component,dimension) gives the central12 operator for the
specified component (Components are numbered 0, 1, ... N-1).
forward11(A,dimension)1st derivative, 1st order accurate. Factor: h
| 0 | 1 | |
| -1 | 1 |
forward21(A,dimension)2nd derivative, 1st order accurate. Factor: h^2
| 0 | 1 | 2 | |
| 1 | -2 | 1 |
forward31(A,dimension)3rd derivative, 1st order accurate. Factor: h^3
| 0 | 1 | 2 | 3 | |
| -1 | 3 | -3 | 1 |
forward41(A,dimension)4th derivative, 1st order accurate. Factor: h^4
| 0 | 1 | 2 | 3 | 4 | |
| 1 | -4 | 6 | -4 | 1 |
forward12(A,dimension)1st derivative, 2nd order accurate. Factor: 2h
| 0 | 1 | 2 | |
| -3 | 4 | -1 |
forward22(A,dimension)2nd derivative, 2nd order accurate. Factor: h^2
| 0 | 1 | 2 | 3 | |
| 2 | -5 | 4 | -1 |
forward32(A,dimension)3rd derivative, 2nd order accurate. Factor: 2h^3
| 0 | 1 | 2 | 3 | 4 | |
| -5 | 18 | -24 | 14 | -3 |
forward42(A,dimension)4th derivative, 2nd order accurate. Factor: h^4
| 0 | 1 | 2 | 3 | 4 | 5 | |
| 3 | -14 | 26 | -24 | 11 | -2 |
Note that the above are available in normalized versions forward11n,
forward21n, ..., forward42n which have factors of h,
h^2, h^3, or h^4 as appropriate.
These are available in multicomponent versions: for example,
forward11(A,component,dimension) gives the forward11 operator for the
specified component (Components are numbered 0, 1, ... N-1).
backward11(A,dimension)1st derivative, 1st order accurate. Factor: h
| -1 | 0 | |
| -1 | 1 |
backward21(A,dimension)2nd derivative, 1st order accurate. Factor: h^2
| -2 | -1 | 0 | |
| 1 | -2 | 1 |
backward31(A,dimension)3rd derivative, 1st order accurate. Factor: h^3
| -3 | -2 | -1 | 0 | |
| -1 | 3 | -3 | 1 |
backward41(A,dimension)4th derivative, 1st order accurate. Factor: h^4
| -4 | -3 | -2 | -1 | 0 | |
| 1 | -4 | 6 | -4 | 1 |
backward12(A,dimension)1st derivative, 2nd order accurate. Factor: 2h
| -2 | -1 | 0 | |
| 1 | -4 | 3 |
backward22(A,dimension)2nd derivative, 2nd order accurate. Factor: h^2
| -3 | -2 | -1 | 0 | |
| -1 | 4 | -5 | 2 |
backward32(A,dimension)3rd derivative, 2nd order accurate. Factor: 2h^3
| -4 | -3 | -2 | -1 | 0 | |
| 3 | -14 | 24 | -18 | 5 |
backward42(A,dimension)4th derivative, 2nd order accurate. Factor: h^4
| -5 | -4 | -3 | -2 | -1 | 0 | |
| -2 | 11 | -24 | 26 | -14 | 3 |
Note that the above are available in normalized versions backward11n,
backward21n, ..., backward42n which have factors of h,
h^2, h^3, or h^4 as appropriate.
These are available in multicomponent versions: for example,
backward42(A,component,dimension) gives the backward42 operator for
the specified component (Components are numbered 0, 1, ... N-1).
Laplacian2D(A)2nd order accurate, 2-dimensional laplacian. Factor: h^2
| -1 | 0 | 1 | |
| -1 | 1 | ||
| 0 | 1 | -4 | 1 |
| 1 | 1 |
Laplacian3D(A)2nd order accurate, 3-dimensional laplacian. Factor: h^2
Laplacian2D4(A)4th order accurate, 2-dimensional laplacian. Factor: 12h^2
| -2 | -1 | 0 | 1 | 2 | |
| -2 | -1 | ||||
| -1 | 16 | ||||
| 0 | -1 | 16 | -60 | 16 | -1 |
| 1 | 16 | ||||
| 2 | -1 |
Laplacian3D4(A)4th order accurate, 3-dimensional laplacian. Factor: 12h^2
Note that the above are available in normalized versions
Laplacian2D4n, Laplacian3D4n which have factors h^2.
These return TinyVectors of the appropriate numeric type and length:
grad2D(A)2nd order, 2-dimensional gradient (vector of first derivatives), generated using the central12 operator. Factor: 2h
grad2D4(A)4th order, 2-dimensional gradient, using central14 operator. Factor: 12h
grad3D(A)2nd order, 3-dimensional gradient, using central12 operator. Factor: 2h
grad3D4(A)4th order, 3-dimensional gradient, using central14 operator. Factor: 12h
These are available in normalized versions grad2Dn, grad2D4n,
grad3Dn and grad3D4n which have factors h.
The Jacobian operators are defined over 3D vector fields only (e.g.
Array<TinyVector<double,3>,3>). They return a
TinyMatrix<T,3,3> where T is the numeric type of the vector field.
Jacobian3D(A)2nd order, 3-dimensional Jacobian using the central12 operator. Factor: 2h.
Jacobian3D4(A)4th order, 3-dimensional Jacobian using the central14 operator. Factor: 12h.
These are also available in normalized versions Jacobian3Dn and
Jacobain3D4n which have factors h.
There are also grad-squared operators, which return TinyVectors of
second derivatives:
gradSqr2D(A)2nd order, 2-dimensional grad-squared (vector of second derivatives), generated using the central22 operator. Factor: h^2
gradSqr2D4(A)4th order, 2-dimensional grad-squared, using central24 operator. Factor: 12h^2
gradSqr3D(A)2nd order, 3-dimensional grad-squared, using the central22 operator. Factor: h^2
gradSqr3D4(A)4th order, 3-dimensional grad-squared, using central24 operator. Factor: 12h^2
Note that the above are available in normalized versions gradSqr2Dn,
gradSqr2D4n, gradSqr3Dn, gradSqr3D4n which have factors
h^2.
These curl operators return scalar values:
curl(Vx,Vy)2nd order curl operator using the central12 operator. Factor: 2h
curl4(Vx,Vy)4th order curl operator using the central14 operator. Factor: 12h
curl2D(V)2nd order curl operator on a 2D vector field (e.g.
Array<TinyVector<float,2>,2>), using the central12 operator. Factor:
2h
curl2D4(V)4th order curl operator on a 2D vector field, using the central12 operator. Factor: 12h
Available in normalized forms curln, curl4n, curl2Dn,
curl2D4n.
These curl operators return three-dimensional TinyVectors of the
appropriate numeric type:
curl(Vx,Vy,Vz)2nd order curl operator using the central12 operator. Factor: 2h
curl4(Vx,Vy,Vz)4th order curl operator using the central14 operator. Factor: 12h
curl(V)2nd order curl operator on a 3D vector field (e.g.
Array<TinyVector<double,3>,3>, using the central12 operator. Factor:
2h
curl4(V)4th order curl operator on a 3D vector field, using the central14 operator. Factor: 12h
Note that the above are available in normalized versions curln and
curl4n, which have factors of h.
The divergence operators return a scalar value.
div(Vx,Vy)2nd order div operator using the central12 operator. Factor: 2h
div4(Vx,Vy)4th order div operator using the central14 operator. Factor: 12h
div(Vx,Vy,Vz)2nd order div operator using the central12 operator. Factor: 2h
div4(Vx,Vy,Vz)4th order div operator using the central14 operator. Factor: 12h
div2D(V)2nd order div operator on a 2D vector field, using the central12 operator. Factor: 2h
div2D4(V)2nd order div operator on a 2D vector field, using the central14 operator. Factor: 12h
div3D(V)2nd order div operator on a 3D vector field, using the central12 operator. Factor: 2h
div3D4(V)2nd order div operator on a 3D vector field using the central14 operator. Factor: 12h
These are available in normalized versions
divn, div4n, div2Dn, div2D4n, div3Dn, and
div3D4n which have factors of h.
mixed22(A,dim1,dim2)2nd order accurate, 2nd mixed partial derivative. Factor: 4h^2
mixed24(A,dim1,dim2)4th order accurate, 2nd mixed partial derivative. Factor: 144h^2
There are also normalized versions of the above, mixed22n and
mixed24n which have factors h^2.
Next: Stencil customize, Previous: Stencil object, Up: Stencils [Contents][Index]