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 TinyVector
s 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 TinyVector
s 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 TinyVector
s 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]