waLBerla 7.2
Loading...
Searching...
No Matches
Directions.h File Reference

Detailed Description

Defines all stencil directions and their properties, and a general DxQy stencil class.

Author
Martin Bauer marti.nosp@m.n.ba.nosp@m.uer@f.nosp@m.au.d.nosp@m.e
#include "core/cell/Cell.h"
#include "core/DataTypes.h"
#include "core/debug/Debug.h"
#include "core/math/Vector3.h"
#include <string>
#include <cmath>

Namespaces

namespace  walberla
 Storage for detected contacts which can be used to perform actions for all contacts, e.g.
 
namespace  walberla::stencil
 

Enumerations

enum  walberla::stencil::Direction {
  walberla::stencil::C = 0 , walberla::stencil::N = 1 , walberla::stencil::S = 2 , walberla::stencil::W = 3 ,
  walberla::stencil::E = 4 , walberla::stencil::T = 5 , walberla::stencil::B = 6 , walberla::stencil::NW = 7 ,
  walberla::stencil::NE = 8 , walberla::stencil::SW = 9 , walberla::stencil::SE = 10 , walberla::stencil::TN = 11 ,
  walberla::stencil::TS = 12 , walberla::stencil::TW = 13 , walberla::stencil::TE = 14 , walberla::stencil::BN = 15 ,
  walberla::stencil::BS = 16 , walberla::stencil::BW = 17 , walberla::stencil::BE = 18 , walberla::stencil::TNE = 19 ,
  walberla::stencil::TNW = 20 , walberla::stencil::TSE = 21 , walberla::stencil::TSW = 22 , walberla::stencil::BNE = 23 ,
  walberla::stencil::BNW = 24 , walberla::stencil::BSE = 25 , walberla::stencil::BSW = 26 , walberla::stencil::INVALID_DIR = 27
}
 
enum  walberla::stencil::BinaryDirection {
  walberla::stencil::Bin_C = 1<<0 , walberla::stencil::Bin_N = 1<<1 , walberla::stencil::Bin_S = 1<<2 , walberla::stencil::Bin_W = 1<<3 ,
  walberla::stencil::Bin_E = 1<<4 , walberla::stencil::Bin_T = 1<<5 , walberla::stencil::Bin_B = 1<<6 , walberla::stencil::Bin_NW = 1<<7 ,
  walberla::stencil::Bin_NE = 1<<8 , walberla::stencil::Bin_SW = 1<<9 , walberla::stencil::Bin_SE = 1<<10 , walberla::stencil::Bin_TN = 1<<11 ,
  walberla::stencil::Bin_TS = 1<<12 , walberla::stencil::Bin_TW = 1<<13 , walberla::stencil::Bin_TE = 1<<14 , walberla::stencil::Bin_BN = 1<<15 ,
  walberla::stencil::Bin_BS = 1<<16 , walberla::stencil::Bin_BW = 1<<17 , walberla::stencil::Bin_BE = 1<<18 , walberla::stencil::Bin_TNE = 1<<19 ,
  walberla::stencil::Bin_TNW = 1<<20 , walberla::stencil::Bin_TSE = 1<<21 , walberla::stencil::Bin_TSW = 1<<22 , walberla::stencil::Bin_BNE = 1<<23 ,
  walberla::stencil::Bin_BNW = 1<<24 , walberla::stencil::Bin_BSE = 1<<25 , walberla::stencil::Bin_BSW = 1<<26
}
 

Functions

Direction walberla::stencil::vectorToDirection (cell_idx_t x, cell_idx_t y, cell_idx_t z)
 Maps a (x,y,z) direction vector to its direction.
 
Direction walberla::stencil::vectorToDirection (Vector3< cell_idx_t > vec)
 
bool walberla::stencil::isFaceDirection (Direction dir)
 
bool walberla::stencil::isEdgeDirection (Direction dir)
 
bool walberla::stencil::isCornerDirection (Direction dir)
 
Direction walberla::stencil::directionFromAxis (int axis, bool minOrMax)
 Maps (direction,axis) pair to direction.
 
Direction walberla::stencil::directionFromAxis (uint_t axis, bool minOrMax)
 Maps (direction,axis) pair to direction.
 
Cell walberla::stencil::operator+ (const Cell &cell, const Direction d)
 Computes neighbor from cell in direction d.
 
Cell walberla::stencil::operator- (const Cell &cell, const Direction d)
 Computes neighbor from cell in direction inverseDir[d].
 
Cellwalberla::stencil::operator+= (Cell &cell, const Direction d)
 Shifts cell to its neighbor in direction d.
 
Cellwalberla::stencil::operator-= (Cell &cell, const Direction d)
 Shifts cell to its neighbor in direction inverseDir[d].
 

Variables

const uint_t walberla::stencil::NR_OF_DIRECTIONS = 27
 
const std::array< int, NR_OF_DIRECTIONSwalberla::stencil::cx
 The x component for each direction.
 
const std::array< int, NR_OF_DIRECTIONSwalberla::stencil::cy
 The y component for each direction.
 
const std::array< int, NR_OF_DIRECTIONSwalberla::stencil::cz
 The z component for each direction.
 
const std::array< std::array< int, NR_OF_DIRECTIONS >, 3 > walberla::stencil::c
 The x,y,z component for each direction.
 
const std::array< std::array< real_t, NR_OF_DIRECTIONS >, 3 > walberla::stencil::cNorm
 The x,y,z component for each normalized direction.
 
const std::array< std::string, NR_OF_DIRECTIONSwalberla::stencil::dirToString
 String representation for each direction.
 
const std::array< BinaryDirection, NR_OF_DIRECTIONSwalberla::stencil::dirToBinary
 Binary encoded direction for each direction.
 
const std::array< Direction, NR_OF_DIRECTIONSwalberla::stencil::inverseDir
 Inverse directions.
 
const std::array< real_t, NR_OF_DIRECTIONSwalberla::stencil::dirLength
 Length for each direction.
 
const std::array< real_t, NR_OF_DIRECTIONSwalberla::stencil::gaussianWeights
 
const std::array< uint_t, NR_OF_DIRECTIONSwalberla::stencil::gaussianMultipliers
 
const std::array< Direction, NR_OF_DIRECTIONSwalberla::stencil::mirrorX
 The mirrored directions (flip W-E)
 
const std::array< Direction, NR_OF_DIRECTIONSwalberla::stencil::mirrorY
 The mirrored directions (flip N-S)
 
const std::array< Direction, NR_OF_DIRECTIONSwalberla::stencil::mirrorZ
 The mirrored directions (flip T-B)
 
const std::array< std::array< Direction, NR_OF_DIRECTIONS >, 3 > walberla::stencil::map2Dto3D
 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: