walberla::stencil Namespace Reference

internal

## Classes

class  Iterator
Iterator over all directions contained in a stencil. More...

## Typedefs

typedef internal::$name$name

## Enumerations

enum  Direction {
C = 0, N = 1, S = 2, W = 3,
E = 4, T = 5, B = 6, NW = 7,
NE = 8, SW = 9, SE = 10, TN = 11,
TS = 12, TW = 13, TE = 14, BN = 15,
BS = 16, BW = 17, BE = 18, TNE = 19,
TNW = 20, TSE = 21, TSW = 22, BNE = 23,
BNW = 24, BSE = 25, BSW = 26, INVALID_DIR = 27
}

enum  BinaryDirection {
Bin_C = 1<<0, Bin_N = 1<<1, Bin_S = 1<<2, Bin_W = 1<<3,
Bin_E = 1<<4, Bin_T = 1<<5, Bin_B = 1<<6, Bin_NW = 1<<7,
Bin_NE = 1<<8, Bin_SW = 1<<9, Bin_SE = 1<<10, Bin_TN = 1<<11,
Bin_TS = 1<<12, Bin_TW = 1<<13, Bin_TE = 1<<14, Bin_BN = 1<<15,
Bin_BS = 1<<16, Bin_BW = 1<<17, Bin_BE = 1<<18, Bin_TNE = 1<<19,
Bin_TNW = 1<<20, Bin_TSE = 1<<21, Bin_TSW = 1<<22, Bin_BNE = 1<<23,
Bin_BNW = 1<<24, Bin_BSE = 1<<25, Bin_BSW = 1<<26
}

## Functions

template<typename U >
Direction getQuadrant (const math::GenericAABB< U > &aabb, const typename math::GenericAABB< U >::vector_type &p)
Determine sin which neighboring section of an AABB a point lies. More...

Direction directionFromAxis (int axis, bool minOrMax)
Maps (direction,axis) pair to direction. More...

Direction directionFromAxis (uint_t axis, bool minOrMax)
Maps (direction,axis) pair to direction. More...

Cell operator+ (const Cell &cell, const Direction d)
Computes neighbor from cell in direction d. More...

Cell operator- (const Cell &cell, const Direction d)
Computes neighbor from cell in direction inverseDir[d]. More...

Celloperator+= (Cell &cell, const Direction d)
Shifts cell to its neighbor in direction d. More...

Celloperator-= (Cell &cell, const Direction d)
Shifts cell to its neighbor in direction inverseDir[d]. More...

## Variables

const uint_t NR_OF_DIRECTIONS = 27

const int cx [NR_OF_DIRECTIONS]
The x component for each direction. More...

const int cy [NR_OF_DIRECTIONS]
The y component for each direction. More...

const int cz [NR_OF_DIRECTIONS]
The z component for each direction. More...

const int c [NR_OF_DIRECTIONS]
The x,y,z component for each direction. More...

const real_t cNorm [NR_OF_DIRECTIONS]
The x,y,z component for each normalized direction. More...

const std::string dirToString [NR_OF_DIRECTIONS]
String representation for each direction. More...

const BinaryDirection dirToBinary 
Binary encoded direction for each direction. More...

const Direction inverseDir [NR_OF_DIRECTIONS]
Inverse directions. More...

const real_t dirLength [NR_OF_DIRECTIONS]
Length for each direction. More...

const real_t gaussianWeights [NR_OF_DIRECTIONS]

const uint_t gaussianMultipliers [NR_OF_DIRECTIONS]

const Direction mirrorX [NR_OF_DIRECTIONS]
The mirrored directions (flip W-E) More...

const Direction mirrorY [NR_OF_DIRECTIONS]
The mirrored directions (flip N-S) More...

const Direction mirrorZ [NR_OF_DIRECTIONS]
The mirrored directions (flip T-B) More...

const Direction map2Dto3D [NR_OF_DIRECTIONS]
Maps from 2D directions (C, N, S, W, E, NW, NE, SW, SE) to 3D directions, by slicing through x,y or z coordinate. More...

## ◆ BinaryDirection

Enumerator
Bin_C

Center.

Bin_N

North.

Bin_S

South.

Bin_W

West.

Bin_E

East.

Bin_T

Top.

Bin_B

Bottom.

Bin_NW

North-West.

Bin_NE

North-East.

Bin_SW

South-West.

Bin_SE

South-East.

Bin_TN

Top-North.

Bin_TS

Top-South.

Bin_TW

Top-West.

Bin_TE

Top-East.

Bin_BN

Bottom-North.

Bin_BS

Bottom-South.

Bin_BW

Bottom-West.

Bin_BE

Bottom-East.

Bin_TNE

Top-North-East.

Bin_TNW

Top-North-West.

Bin_TSE

Top-South-East.

Bin_TSW

Top-South-West.

Bin_BNE

Bottom-North-East.

Bin_BNW

Bottom-North-West.

Bin_BSE

Bottom-South-East.

Bin_BSW

Bottom-South-West.

## ◆ Direction

Enumerator

Center.

North.

South.

West.

East.

Top.

Bottom.

NW

North-West.

NE

North-East.

SW

South-West.

SE

South-East.

TN

Top-North.

TS

Top-South.

TW

Top-West.

TE

Top-East.

BN

Bottom-North.

BS

Bottom-South.

BW

Bottom-West.

BE

Bottom-East.

TNE

Top-North-East.

TNW

Top-North-West.

TSE

Top-South-East.

TSW

Top-South-West.

BNE

Bottom-North-East.

BNW

Bottom-North-West.

BSE

Bottom-South-East.

BSW

Bottom-South-West.

INVALID_DIR

Invalid direction.

## ◆ directionFromAxis() [1/2]

 Direction walberla::stencil::directionFromAxis ( int axis, bool minOrMax )
inline

Maps (direction,axis) pair to direction.

Parameters
 axis 0,1 or 2 standing for x,y,z minOrMax if true, the direction pointing in the negative axis direction is returned, if false, the positive axis direction

## ◆ directionFromAxis() [2/2]

 Direction walberla::stencil::directionFromAxis ( uint_t axis, bool minOrMax )
inline

Maps (direction,axis) pair to direction.

Parameters
 axis 0,1 or 2 standing for x,y,z minOrMax if true, the direction pointing in the negative axis direction is returned, if false, the positive axis direction

template<typename U >
 Direction walberla::stencil::getQuadrant ( const math::GenericAABB< U > & aabb, const typename math::GenericAABB< U >::vector_type & p )

Determine sin which neighboring section of an AABB a point lies.

If p lies within aabb returns C. Other it is determined in which of the 26 imaginary neighboring AABBs p is located. The direction of the from aabb to the determined neighboring aabb is returned

2D Example:

----------------------— Let aabb be the AABB marked with asterisks. The boxes surrounding aabb are the eight (in 2D) imaginary | | | | neighboring boxes. Let p be marked with x. The result of the function would be NE. | | | x |
| | | | -----—*********-----— | * * | | * * | | * * | -----—*********-----—

Template Parameters
 T The scalar data type used for the AABB and the tested point
Parameters
 aabb The AABB p The tested point

## ◆ operator+()

 Cell walberla::stencil::operator+ ( const Cell & cell, const Direction d )
inline

Computes neighbor from cell in direction d.

Parameters
 cell origin cell d direction pointing towards the computed neighbor

## ◆ operator+=()

 Cell& walberla::stencil::operator+= ( Cell & cell, const Direction d )
inline

Shifts cell to its neighbor in direction d.

Parameters
 cell shifted cell d direction in which to shift the cell

## ◆ operator-()

 Cell walberla::stencil::operator- ( const Cell & cell, const Direction d )
inline

Computes neighbor from cell in direction inverseDir[d].

Parameters
 cell origin cell d direction pointing away from the computed neighbor

## ◆ operator-=()

 Cell& walberla::stencil::operator-= ( Cell & cell, const Direction d )
inline

Shifts cell to its neighbor in direction inverseDir[d].

Parameters
 cell shifted cell d direction opposite to which the cell gets shifted

## ◆ c

 const int walberla::stencil::c[NR_OF_DIRECTIONS]
Initial value:
= {
{
0, 0, 0, -1, 1, 0, 0, -1, 1, -1, 1, 0, 0, -1, 1, 0, 0, -1, 1, 1, -1, 1, -1, 1, -1, 1, -1
}, {
0, 1, -1, 0, 0, 0, 0, 1, 1, -1, -1, 1, -1, 0, 0, 1, -1, 0, 0, 1, 1, -1, -1, 1, 1, -1, -1
}, {
0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1
}
}

The x,y,z component for each direction.

## ◆ cNorm

 const real_t walberla::stencil::cNorm[NR_OF_DIRECTIONS]
Initial value:
= {
{
real_t(0), real_t(0), real_t(0), real_t(-1), real_t(1), real_t(0), real_t(0), real_t(-1) / std::sqrt( real_t(2) ),
real_t(1) / std::sqrt( real_t(2) ), real_t(-1) / std::sqrt( real_t(2) ), real_t(1) / std::sqrt( real_t(2) ), real_t(0), real_t(0),
real_t(-1) / std::sqrt( real_t(2) ), real_t(1) / std::sqrt( real_t(2) ), real_t(0), real_t(0), real_t(-1) / std::sqrt( real_t(2) ),
real_t(1) / std::sqrt( real_t(2) ), real_t(1) / std::sqrt( real_t(3) ), real_t(-1) / std::sqrt( real_t(3) ),
real_t(1) / std::sqrt( real_t(3) ), real_t(-1) / std::sqrt( real_t(3) ), real_t(1) / std::sqrt( real_t(3) ),
real_t(-1) / std::sqrt( real_t(3) ), real_t(1) / std::sqrt( real_t(3) ), real_t(-1) / std::sqrt( real_t(3) )
}, {
real_t(0), real_t(1), real_t(-1), real_t(0), real_t(0), real_t(0), real_t(0), real_t(1) / std::sqrt( real_t(2) ),
real_t(1) / std::sqrt( real_t(2) ), real_t(-1) / std::sqrt( real_t(2) ), real_t(-1) / std::sqrt( real_t(2) ),
real_t(1) / std::sqrt( real_t(2) ), real_t(-1) / std::sqrt( real_t(2) ), real_t(0), real_t(0), real_t(1) / std::sqrt( real_t(2) ),
real_t(-1) / std::sqrt( real_t(2) ), real_t(0), real_t(0), real_t(1) / std::sqrt( real_t(3) ), real_t(1) / std::sqrt( real_t(3) ),
real_t(-1) / std::sqrt( real_t(3) ), real_t(-1) / std::sqrt( real_t(3) ), real_t(1) / std::sqrt( real_t(3) ),
real_t(1) / std::sqrt( real_t(3) ), real_t(-1) / std::sqrt( real_t(3) ), real_t(-1) / std::sqrt( real_t(3) )
}, {
real_t(0), real_t(0), real_t(0), real_t(0), real_t(0), real_t(1), real_t(-1), real_t(0), real_t(0), real_t(0), real_t(0),
real_t(1) / std::sqrt( real_t(2) ), real_t(1) / std::sqrt( real_t(2) ), real_t(1) / std::sqrt( real_t(2) ),
real_t(1) / std::sqrt( real_t(2) ), real_t(-1) / std::sqrt( real_t(2) ), real_t(-1) / std::sqrt( real_t(2) ),
real_t(-1) / std::sqrt( real_t(2) ), real_t(-1) / std::sqrt( real_t(2) ), real_t(1) / std::sqrt( real_t(3) ),
real_t(1) / std::sqrt( real_t(3) ), real_t(1) / std::sqrt( real_t(3) ), real_t(1) / std::sqrt( real_t(3) ),
real_t(-1) / std::sqrt( real_t(3) ), real_t(-1) / std::sqrt( real_t(3) ), real_t(-1) / std::sqrt( real_t(3) ),
real_t(-1) / std::sqrt( real_t(3) )
}
}

The x,y,z component for each normalized direction.

## ◆ cx

 const int walberla::stencil::cx[NR_OF_DIRECTIONS]
Initial value:
= {
0, 0, 0, -1, 1, 0, 0, -1, 1, -1, 1, 0, 0, -1, 1, 0, 0, -1, 1, 1, -1, 1, -1, 1, -1, 1, -1
}

The x component for each direction.

## ◆ cy

 const int walberla::stencil::cy[NR_OF_DIRECTIONS]
Initial value:
= {
0, 1, -1, 0, 0, 0, 0, 1, 1, -1, -1, 1, -1, 0, 0, 1, -1, 0, 0, 1, 1, -1, -1, 1, 1, -1, -1
}

The y component for each direction.

## ◆ cz

 const int walberla::stencil::cz[NR_OF_DIRECTIONS]
Initial value:
= {
0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1
}

The z component for each direction.

## ◆ dirLength

 const real_t walberla::stencil::dirLength[NR_OF_DIRECTIONS]
Initial value:

Length for each direction.

## ◆ dirToBinary

 const BinaryDirection walberla::stencil::dirToBinary
Initial value:
= {
}

Binary encoded direction for each direction.

## ◆ dirToString

 const std::string walberla::stencil::dirToString[NR_OF_DIRECTIONS]
Initial value:
= {
"C", "N", "S", "W", "E", "T", "B",
"NW", "NE", "SW", "SE", "TN", "TS", "TW", "TE", "BN", "BS", "BW","BE",
"TNE", "TNW", "TSE", "TSW", "BNE", "BNW", "BSE", "BSW",
}

String representation for each direction.

## ◆ gaussianMultipliers

 const uint_t walberla::stencil::gaussianMultipliers[NR_OF_DIRECTIONS]
Initial value:
=
{
uint_t(8u),
uint_t(4u), uint_t(4u), uint_t(4u), uint_t(4u) ,
uint_t(4u), uint_t(4u),
uint_t(2u), uint_t(2u), uint_t(2u), uint_t(2u) ,
uint_t(2u), uint_t(2u), uint_t(2u), uint_t(2u) ,
uint_t(2u), uint_t(2u), uint_t(2u), uint_t(2u) ,
uint_t(1u), uint_t(1u), uint_t(1u), uint_t(1u) ,
uint_t(1u), uint_t(1u), uint_t(1u), uint_t(1u)
}

## ◆ gaussianWeights

 const real_t walberla::stencil::gaussianWeights[NR_OF_DIRECTIONS]
Initial value:
=
{
real_t(8) / real_t(64),
real_t(4) / real_t(64), real_t(4) / real_t(64), real_t(4) / real_t(64), real_t(4) / real_t(64),
real_t(4) / real_t(64), real_t(4) / real_t(64),
real_t(2) / real_t(64), real_t(2) / real_t(64), real_t(2) / real_t(64), real_t(2) / real_t(64),
real_t(2) / real_t(64), real_t(2) / real_t(64), real_t(2) / real_t(64), real_t(2) / real_t(64),
real_t(2) / real_t(64), real_t(2) / real_t(64), real_t(2) / real_t(64), real_t(2) / real_t(64),
real_t(1) / real_t(64), real_t(1) / real_t(64), real_t(1) / real_t(64), real_t(1) / real_t(64),
real_t(1) / real_t(64), real_t(1) / real_t(64), real_t(1) / real_t(64), real_t(1) / real_t(64)
}

## ◆ inverseDir

 const Direction walberla::stencil::inverseDir[NR_OF_DIRECTIONS]
Initial value:
= {
C, S, N, E, W, B, T,
SE, SW, NE, NW, BS, BN, BE, BW, TS, TN, TE, TW,
}

Inverse directions.

## ◆ map2Dto3D

 const Direction walberla::stencil::map2Dto3D[NR_OF_DIRECTIONS]
Initial value:
=
{
{ C, T, B, S, N, INVALID_DIR, INVALID_DIR, TS, TN, BS, BN,
{ C, T, B, W, E, INVALID_DIR, INVALID_DIR, TW, TE, BW, BE,
{ C, N, S, W, E, INVALID_DIR, INVALID_DIR, NW, NE, SW, SE,
}

Maps from 2D directions (C, N, S, W, E, NW, NE, SW, SE) to 3D directions, by slicing through x,y or z coordinate.

The first array index represents the slice dimension ( 0 for x, 1 for y, 2 for z) Example: printing a slice through x coordinate (keeping x fixed) of a D3Q19 field:

GhostLayerField<real_t,19,1> pdfField;
for(auto i = D2Q9::begin(); i != D2Q9::end(); ++i)
cout << pdfField.get(x,y,z, D3Q19::idx[ map2Dto3D[*i] ] ) << endl;

## ◆ mirrorX

 const Direction walberla::stencil::mirrorX[NR_OF_DIRECTIONS]
Initial value:
= {
C, N, S, E, W, T, B,
NE, NW, SE, SW, TN, TS, TE, TW, BN, BS, BE, BW,
}

The mirrored directions (flip W-E)

## ◆ mirrorY

 const Direction walberla::stencil::mirrorY[NR_OF_DIRECTIONS]
Initial value:
= {
C, S, N, W, E, T, B,
SW, SE, NW, NE, TS, TN, TW, TE, BS, BN, BW, BE,
}

The mirrored directions (flip N-S)

## ◆ mirrorZ

 const Direction walberla::stencil::mirrorZ[NR_OF_DIRECTIONS]
Initial value:
= {
C, N, S, W, E, B, T,
NW, NE, SW, SE, BN, BS, BW, BE, TN, TS, TW, TE,
}

The mirrored directions (flip T-B)

## ◆ NR_OF_DIRECTIONS

 const uint_t walberla::stencil::NR_OF_DIRECTIONS = 27
@ S
South.
Definition: Directions.h:46
@ TS
Top-South.
Definition: Directions.h:56
@ TW
Top-West.
Definition: Directions.h:57
@ Bin_N
North.
Definition: Directions.h:84
@ B
Bottom.
Definition: Directions.h:50
@ Bin_BNW
Bottom-North-West.
Definition: Directions.h:107
const Direction map2Dto3D[NR_OF_DIRECTIONS]
Maps from 2D directions (C, N, S, W, E, NW, NE, SW, SE) to 3D directions, by slicing through x,...
Definition: Directions.h:257
@ T
Top.
Definition: Directions.h:49
@ Bin_W
West.
Definition: Directions.h:86
@ TE
Top-East.
Definition: Directions.h:58
@ BW
Bottom-West.
Definition: Directions.h:61
@ Bin_S
South.
Definition: Directions.h:85
double4_t sqrt(double4_t a)
Definition: AVX.h:137
@ Bin_BS
Bottom-South.
Definition: Directions.h:99
@ Bin_BN
Bottom-North.
Definition: Directions.h:98
@ SW
South-West.
Definition: Directions.h:53
@ Bin_T
Top.
Definition: Directions.h:88
@ TN
Top-North.
Definition: Directions.h:55
@ INVALID_DIR
Invalid direction.
Definition: Directions.h:71
@ N
North.
Definition: Directions.h:45
@ BNE
Bottom-North-East.
Definition: Directions.h:67
@ TSE
Top-South-East.
Definition: Directions.h:65
@ Bin_BNE
Bottom-North-East.
Definition: Directions.h:106
@ Bin_BSE
Bottom-South-East.
Definition: Directions.h:108
@ BN
Bottom-North.
Definition: Directions.h:59
@ Bin_SE
South-East.
Definition: Directions.h:93
@ Bin_E
East.
Definition: Directions.h:87
@ NW
North-West.
Definition: Directions.h:51
@ Bin_TS
Top-South.
Definition: Directions.h:95
@ Bin_TW
Top-West.
Definition: Directions.h:96
@ Bin_TN
Top-North.
Definition: Directions.h:94
@ Bin_BSW
Bottom-South-West.
Definition: Directions.h:109
@ Bin_NE
North-East.
Definition: Directions.h:91
@ TNE
Top-North-East.
Definition: Directions.h:63
@ BE
Bottom-East.
Definition: Directions.h:62
@ Bin_TNW
Top-North-West.
Definition: Directions.h:103
@ C
Center.
Definition: Directions.h:44
std::size_t uint_t
Definition: DataTypes.h:133
@ TNW
Top-North-West.
Definition: Directions.h:64
@ BS
Bottom-South.
Definition: Directions.h:60
float real_t
Definition: DataTypes.h:167
@ Bin_TNE
Top-North-East.
Definition: Directions.h:102
@ E
East.
Definition: Directions.h:48
@ BSE
Bottom-South-East.
Definition: Directions.h:69
@ TSW
Top-South-West.
Definition: Directions.h:66
@ Bin_BE
Bottom-East.
Definition: Directions.h:101
@ Bin_B
Bottom.
Definition: Directions.h:89
@ W
West.
Definition: Directions.h:47
@ BNW
Bottom-North-West.
Definition: Directions.h:68
@ Bin_NW
North-West.
Definition: Directions.h:90
@ NE
North-East.
Definition: Directions.h:52
@ Bin_TSW
Top-South-West.
Definition: Directions.h:105
@ Bin_BW
Bottom-West.
Definition: Directions.h:100
@ Bin_C
Center.
Definition: Directions.h:83
Iterator end()
Definition: Create.h:71
@ Bin_TE
Top-East.
Definition: Directions.h:97
@ Bin_TSE
Top-South-East.
Definition: Directions.h:104
Iterator begin(int argc, char **argv)
Loads multiple numbered configuration files.
Definition: Create.cpp:238
@ Bin_SW
South-West.
Definition: Directions.h:92
@ SE
South-East.
Definition: Directions.h:54
@ BSW
Bottom-South-West.
Definition: Directions.h:70