#include <BoundaryHandling.h>
Classes | |
class | BlockSweep |
Public Types | |
enum | Mode { OPTIMIZED_SPARSE_TRAVERSAL, ENTIRE_FIELD_TRAVERSAL } |
using | FlagField = FlagField_T |
using | flag_t = typename FlagField_T::flag_t |
using | ConstFlagFieldBaseIterator = typename FlagField_T::const_base_iterator |
Public Member Functions | |
BoundaryHandling (const std::string &identifier, FlagField_T *const flagField, const flag_t domain, const Boundaries &... boundaryConditions, const Mode mode) | |
BoundaryHandling (const std::string &identifier, FlagField_T *const flagField, const flag_t domain, const Boundaries &... boundaryConditions) | |
bool | operator== (const BoundaryHandling &rhs) const |
bool | operator!= (const BoundaryHandling &rhs) const |
const BoundaryHandlingUID & | getUID () const |
const FlagField_T * | getFlagField () const |
FlagField_T * | getFlagField () |
flag_t | getBoundaryMask () const |
flag_t | getDomainMask () const |
bool | isEmpty (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
bool | isNearBoundary (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
bool | isBoundary (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
bool | isDomain (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
bool | isEmpty (const Cell &cell) const |
bool | isNearBoundary (const Cell &cell) const |
bool | isBoundary (const Cell &cell) const |
bool | isDomain (const Cell &cell) const |
bool | isEmpty (const ConstFlagFieldBaseIterator &it) const |
bool | isNearBoundary (const ConstFlagFieldBaseIterator &it) const |
bool | isBoundary (const ConstFlagFieldBaseIterator &it) const |
bool | isDomain (const ConstFlagFieldBaseIterator &it) const |
bool | containsBoundaryCondition (const BoundaryUID &uid) const |
bool | containsBoundaryCondition (const FlagUID &flag) const |
bool | containsBoundaryCondition (const flag_t flag) const |
flag_t | getBoundaryMask (const BoundaryUID &uid) const |
template<typename Boundary_T > | |
const Boundary_T & | getBoundaryCondition (const BoundaryUID &uid) const |
You most likely have to call this function via "handling.template getBoundaryCondition< Boundary_T >( uid )". More... | |
template<typename Boundary_T > | |
Boundary_T & | getBoundaryCondition (const BoundaryUID &uid) |
You most likely have to call this function via "handling.template getBoundaryCondition< Boundary_T >( uid )". More... | |
BoundaryUID | getBoundaryUID (const FlagUID &flag) const |
BoundaryUID | getBoundaryUID (const flag_t flag) const |
uint_t | numberOfMatchingBoundaryConditions (const flag_t mask) const |
bool | checkConsistency (const uint_t numberOfGhostLayersToInclude=0) const |
bool | checkConsistency (const CellInterval &cells) const |
void | refresh (const uint_t numberOfGhostLayersToInclude=0) |
void | refresh (const CellInterval &cells) |
void | refreshOutermostLayer (cell_idx_t thickness=1) |
template<typename Buffer_T > | |
std::vector< typename BoundaryHandling< FlagField_T, Stencil, Boundaries... >::flag_t > | getNeighborFlagMapping (Buffer_T &buffer, const bool assumeIdenticalFlagMapping, bool &identicalFlagMapping) const |
Set Domain Cells | |
void | setDomain (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | setDomain (const flag_t domainSubFlag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | setDomain (const CellInterval &cells) |
void | setDomain (const flag_t domainSubFlag, const CellInterval &cells) |
template<typename CellIterator > | |
void | setDomain (const CellIterator &begin, const CellIterator &end) |
template<typename CellIterator > | |
void | setDomain (const flag_t domainSubFlag, const CellIterator &begin, const CellIterator &end) |
void | forceDomain (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | forceDomain (const flag_t domainSubFlag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | forceDomain (const CellInterval &cells) |
void | forceDomain (const flag_t domainSubFlag, const CellInterval &cells) |
template<typename CellIterator > | |
void | forceDomain (const CellIterator &begin, const CellIterator &end) |
template<typename CellIterator > | |
void | forceDomain (const flag_t domainSubFlag, const CellIterator &begin, const CellIterator &end) |
void | fillWithDomain (const uint_t numberOfGhostLayersToInclude=0) |
void | fillWithDomain (const flag_t domainSubFlag, const uint_t numberOfGhostLayersToInclude) |
void | fillWithDomain (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | fillWithDomain (const flag_t domainSubFlag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | fillWithDomain (const CellInterval &cells) |
void | fillWithDomain (const flag_t domainSubFlag, const CellInterval &cells) |
template<typename CellIterator > | |
void | fillWithDomain (const CellIterator &begin, const CellIterator &end) |
template<typename CellIterator > | |
void | fillWithDomain (const flag_t domainSubFlag, const CellIterator &begin, const CellIterator &end) |
Set Boundary Cells | |
shared_ptr< BoundaryConfiguration > | createBoundaryConfiguration (const BoundaryUID &uid, const Config::BlockHandle &config) const |
void | setBoundary (const FlagUID &flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | setBoundary (const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | setBoundary (const FlagUID &flag, const CellInterval &cells, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | setBoundary (const flag_t flag, const CellInterval &cells, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
template<typename CellIterator > | |
void | setBoundary (const FlagUID &flag, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
template<typename CellIterator > | |
void | setBoundary (const flag_t flag, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | forceBoundary (const FlagUID &flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | forceBoundary (const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | forceBoundary (const FlagUID &flag, const CellInterval &cells, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | forceBoundary (const flag_t flag, const CellInterval &cells, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
template<typename CellIterator > | |
void | forceBoundary (const FlagUID &flag, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
template<typename CellIterator > | |
void | forceBoundary (const flag_t flag, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
Remove Domain Cells | |
void | removeDomain (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | removeDomain (const flag_t mask, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | removeDomain (const uint_t numberOfGhostLayersToInclude=0) |
void | removeDomain (const CellInterval &cells) |
void | removeDomain (const flag_t mask, const CellInterval &cells) |
template<typename CellIterator > | |
void | removeDomain (const CellIterator &begin, const CellIterator &end) |
template<typename CellIterator > | |
void | removeDomain (const flag_t mask, const CellIterator &begin, const CellIterator &end) |
Remove Boundary Cells | |
void | removeBoundary (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | removeBoundary (const FlagUID &flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | removeBoundary (const flag_t mask, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | removeBoundary (const uint_t numberOfGhostLayersToInclude=0) |
void | removeBoundary (const CellInterval &cells) |
void | removeBoundary (const FlagUID &flag, const CellInterval &cells) |
void | removeBoundary (const flag_t mask, const CellInterval &cells) |
template<typename CellIterator > | |
void | removeBoundary (const CellIterator &begin, const CellIterator &end) |
template<typename CellIterator > | |
void | removeBoundary (const FlagUID &flag, const CellIterator &begin, const CellIterator &end) |
template<typename CellIterator > | |
void | removeBoundary (const flag_t mask, const CellIterator &begin, const CellIterator &end) |
General Flag Handling | |
void | setFlag (const FlagUID &flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | setFlag (const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | setFlag (const FlagUID &flag, const CellInterval &cells, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | setFlag (const flag_t flag, const CellInterval &cells, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
template<typename CellIterator > | |
void | setFlag (const FlagUID &flag, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
template<typename CellIterator > | |
void | setFlag (const flag_t flag, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | forceFlag (const FlagUID &flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | forceFlag (const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | forceFlag (const FlagUID &flag, const CellInterval &cells, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | forceFlag (const flag_t flag, const CellInterval &cells, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
template<typename CellIterator > | |
void | forceFlag (const FlagUID &flag, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
template<typename CellIterator > | |
void | forceFlag (const flag_t flag, const CellIterator &begin, const CellIterator &end, const BoundaryConfiguration ¶meter=BoundaryConfiguration::null()) |
void | removeFlag (const FlagUID &flag, const uint_t numberOfGhostLayersToInclude=0) |
void | removeFlag (const flag_t flag, const uint_t numberOfGhostLayersToInclude=0) |
void | removeFlag (const FlagUID &flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | removeFlag (const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | removeFlag (const FlagUID &flag, const CellInterval &cells) |
void | removeFlag (const flag_t flag, const CellInterval &cells) |
template<typename CellIterator > | |
void | removeFlag (const FlagUID &flag, const CellIterator &begin, const CellIterator &end) |
template<typename CellIterator > | |
void | removeFlag (const flag_t flag, const CellIterator &begin, const CellIterator &end) |
Clear Cells | |
void | clear (const uint_t numberOfGhostLayersToInclude=0) |
void | clear (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | clear (const CellInterval &cells) |
template<typename CellIterator > | |
void | clear (const CellIterator &begin, const CellIterator &end) |
Private Member Functions | |
Get Boundary Class (private helper functions) | |
template<typename Boundary_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
const std::enable_if<(N!=0), Boundary_T >::type & | getBoundaryCondition (const BoundaryUID &uid, const BoundariesTuple &boundaryConditions, typename std::enable_if< std::is_same< Boundary_T, typename std::tuple_element< N, BoundariesTuple >::type >::value >::type *=nullptr) const |
template<typename Boundary_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
const std::enable_if<(N==0), Boundary_T >::type & | getBoundaryCondition (const BoundaryUID &uid, const BoundariesTuple &boundaryConditions, typename std::enable_if< std::is_same< Boundary_T, typename std::tuple_element< N, BoundariesTuple >::type >::value >::type *=nullptr) const |
template<typename Boundary_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
const std::enable_if<(N!=0), Boundary_T >::type & | getBoundaryCondition (const BoundaryUID &uid, const BoundariesTuple &boundaryConditions, typename std::enable_if< std::is_same< typename std::is_same< Boundary_T, typename std::tuple_element< N, BoundariesTuple >::type >::type, std::false_type >::value >::type *=nullptr, typename std::enable_if<(N >0) >::type *=nullptr) const |
template<typename Boundary_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
const std::enable_if<(N==0), Boundary_T >::type & | getBoundaryCondition (const BoundaryUID &, const BoundariesTuple &, typename std::enable_if< std::is_same< typename std::is_same< Boundary_T, typename std::tuple_element< 0, BoundariesTuple >::type >::type, std::false_type >::value >::type *=0) const |
template<typename Boundary_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
const std::enable_if<(N!=0), Boundary_T >::type & | getBoundaryCondition_TypeExists (const BoundaryUID &uid, const BoundariesTuple &boundaryConditions, typename std::enable_if< std::is_same< Boundary_T, typename std::tuple_element< N, BoundariesTuple >::type >::value >::type *=0) const |
template<typename Boundary_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
const std::enable_if<(N==0), Boundary_T >::type & | getBoundaryCondition_TypeExists (const BoundaryUID &uid, const BoundariesTuple &boundaryConditions, typename std::enable_if< std::is_same< Boundary_T, typename std::tuple_element< 0, BoundariesTuple >::type >::value >::type *=0) const |
template<typename Boundary_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
const std::enable_if<(N!=0), Boundary_T >::type & | getBoundaryCondition_TypeExists (const BoundaryUID &uid, const BoundariesTuple &boundaryConditions, typename std::enable_if< std::is_same< typename std::is_same< Boundary_T, typename std::tuple_element< N, BoundariesTuple >::type >::type, std::false_type >::value >::type *=0) const |
template<typename Boundary_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
const std::enable_if<(N==0), Boundary_T >::type & | getBoundaryCondition_TypeExists (const BoundaryUID &uid, const BoundariesTuple &, typename std::enable_if< std::is_same< typename std::is_same< Boundary_T, typename std::tuple_element< 0, BoundariesTuple >::type >::type, std::false_type >::value >::type *=nullptr) const |
uint_t | numberOfMatchingBoundaryConditions (const BoundaryUID &uid) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), uint_t >::type | numberOfMatchingBoundaryConditions (const BoundariesTuple &boundaryConditions, const BoundaryUID &uid) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), uint_t >::type | numberOfMatchingBoundaryConditions (const BoundariesTuple &, const BoundaryUID &) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), uint_t >::type | numberOfMatchingBoundaryConditions (const BoundariesTuple &boundaryConditions, const flag_t mask) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), uint_t >::type | numberOfMatchingBoundaryConditions (const BoundariesTuple &, const flag_t) const |
bool | checkFlagField (const uint_t numberOfGhostLayersToInclude=0) const |
void | addDomain (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const flag_t domain) |
Set Boundary Cells (private helper functions) | |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), shared_ptr< BoundaryConfiguration > >::type | createBoundaryConfiguration (const BoundariesTuple &boundaryConditions, const BoundaryUID &uid, const Config::BlockHandle &config) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), shared_ptr< BoundaryConfiguration > >::type | createBoundaryConfiguration (const BoundariesTuple &, const BoundaryUID &uid, const Config::BlockHandle &) const |
void | addNearBoundary (const CellInterval &cells) |
void | addBoundary (const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
template<typename BoundariesTuple , int N = internal::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | setBoundary (BoundariesTuple &boundaryConditions, const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const BoundaryConfiguration ¶meter) |
template<typename BoundariesTuple , int N = internal::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | setBoundary (const BoundariesTuple &, const flag_t, const cell_idx_t, const cell_idx_t, const cell_idx_t, const BoundaryConfiguration &) const |
template<typename BoundariesTuple , int N = internal::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | setBoundary (BoundariesTuple &boundaryConditions, const flag_t flag, const CellInterval &cells, const BoundaryConfiguration ¶meter) |
template<typename BoundariesTuple , int N = internal::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | setBoundary (const BoundariesTuple &, const flag_t, const CellInterval &, const BoundaryConfiguration &) const |
template<typename BoundariesTuple , int N = internal::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | setBoundary (BoundariesTuple &boundaryConditions, const flag_t flag, const CellVector &cells, const BoundaryConfiguration ¶meter) |
template<typename BoundariesTuple , int N = internal::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | setBoundary (const BoundariesTuple &, const flag_t, const CellVector &, const BoundaryConfiguration &) const |
Remove Boundary Cells (private helper functions) | |
template<typename BoundariesTuple , int N = internal::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | removeBoundary (BoundariesTuple &boundaryConditions, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const bool checkNearBoundaryFlags=true) |
template<typename BoundariesTuple , int N = internal::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | removeBoundary (const BoundariesTuple &, const cell_idx_t, const cell_idx_t, const cell_idx_t, const bool) const |
Boundary Treatment (private helper functions) | |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | treatDirection (BoundariesTuple &boundaryConditions, const uint_t index, const std::vector< std::vector< std::pair< Cell, stencil::Direction > > > &cellDirectionPairs) |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | treatDirection (const BoundariesTuple &, const uint_t, const std::vector< std::vector< std::pair< Cell, stencil::Direction > > > &) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | treatDirection (BoundariesTuple &boundaryConditions, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const stencil::Direction dir, const cell_idx_t nx, const cell_idx_t ny, const cell_idx_t nz) |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | treatDirection (const BoundariesTuple &, const cell_idx_t, const cell_idx_t, const cell_idx_t, const stencil::Direction, const cell_idx_t, const cell_idx_t, const cell_idx_t) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | beforeBoundaryTreatment (BoundariesTuple &boundaryConditions) |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | beforeBoundaryTreatment (const BoundariesTuple &) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | afterBoundaryTreatment (BoundariesTuple &boundaryConditions) |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | afterBoundaryTreatment (const BoundariesTuple &) const |
Friends | |
template<typename F , typename... T> | |
class | BoundaryHandlingCollection |
Boundary Treatment | |
void | operator() (const uint_t numberOfGhostLayersToInclude=0) |
void | operator() (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
void | operator() (const CellInterval &cells) |
template<typename CellIterator > | |
void | operator() (const CellIterator &begin, const CellIterator &end) |
void | beforeBoundaryTreatment () |
void | afterBoundaryTreatment () |
static BlockSweep | getBlockSweep (const BlockDataID handling, const uint_t numberOfGhostLayersToInclude=0) |
Pack / Unpack boundary handling | |
template<typename Buffer_T > | |
void | pack (Buffer_T &buffer, const CellInterval &interval, const bool assumeIdenticalFlagMapping=true) const |
template<typename Buffer_T > | |
void | unpack (Buffer_T &buffer, const CellInterval &interval, const bool assumeIdenticalFlagMapping=true) |
template<typename Buffer_T > | |
void | pack (Buffer_T &buffer, stencil::Direction direction, const uint_t numberOfLayers=1, const bool assumeIdenticalFlagMapping=true) const |
template<typename Buffer_T > | |
void | unpack (Buffer_T &buffer, stencil::Direction direction, const uint_t numberOfLayers=1, const bool assumeIdenticalFlagMapping=true) |
void | toStream (std::ostream &os) const |
std::string | toString () const |
CellInterval | getGhostLayerCellInterval (const uint_t numberOfGhostLayersToInclude) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | setupBoundaryConditions (BoundariesTuple &boundaryConditions) |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | setupBoundaryConditions (const BoundariesTuple &) const |
std::vector< BoundaryUID > | getBoundaryUIDs () const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | getBoundaryUIDs (const BoundariesTuple &boundaryConditions, std::vector< BoundaryUID > &uids) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | getBoundaryUIDs (const BoundariesTuple &, std::vector< BoundaryUID > &) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), BoundaryUID >::type | getBoundaryUID (const BoundariesTuple &boundaryConditions, const flag_t flag) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), BoundaryUID >::type | getBoundaryUID (const BoundariesTuple &, const flag_t flagUID) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), bool >::type | containsBoundaryCondition (const BoundariesTuple &boundaryConditions, const BoundaryUID &uid) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), bool >::type | containsBoundaryCondition (const BoundariesTuple &, const BoundaryUID &) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), flag_t >::type | getBoundaryMask (const BoundariesTuple &boundaryConditions, const BoundaryUID &uid) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), flag_t >::type | getBoundaryMask (const BoundariesTuple &, const BoundaryUID &) const |
Pack / Unpack boundary handling (private helper functions) | |
using | Tuple = std::tuple< Boundaries... > |
const BoundaryHandlingUID | uid_ |
FlagField_T *const | flagField_ |
const CellInterval | innerBB_ |
const CellInterval | outerBB_ |
const flag_t | nearBoundary_ |
flag_t | boundary_ |
const flag_t | domain_ |
const Mode | mode_ |
bool | dirty_ |
Every time "near boundary" flags are set or removed, dirty_ is set to true. More... | |
std::vector< flag_t > | bcMaskMapping_ |
std::vector< bool > | rebuildCellDirectionPairs_ |
std::vector< std::vector< std::vector< std::pair< Cell, stencil::Direction > > > > | cellDirectionPairs_ |
Tuple | boundaryConditions_ |
bool | threadSafeBCs_ |
std::map< std::string, flag_t > | getFlagMapping () const |
template<typename Buffer_T > | |
std::vector< flag_t > | getNeighborFlagMapping (Buffer_T &buffer, const bool assumeIdenticalFlagMapping, bool &identicalFlagMapping) const |
void | translateMask (flag_t &mask, const std::vector< flag_t > &flagMapping) const |
CellInterval | getPackingInterval (stencil::Direction direction, const uint_t numberOfLayers) const |
CellInterval | getUnpackingInterval (stencil::Direction direction, const uint_t numberOfLayers) const |
template<typename Buffer_T > | |
void | pack (Buffer_T &buffer, const flag_t mask, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
template<typename Buffer_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | pack (const BoundariesTuple &boundaryConditions, Buffer_T &buffer, const flag_t mask, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
template<typename Buffer_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | pack (const BoundariesTuple &, Buffer_T &, const flag_t, const cell_idx_t, const cell_idx_t, const cell_idx_t) const |
template<typename Buffer_T > | |
void | unpack (Buffer_T &buffer, const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
template<typename Buffer_T > | |
void | unpackBoundary (Buffer_T &buffer, const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
template<typename Buffer_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | unpackBoundary (BoundariesTuple &boundaryConditions, Buffer_T &buffer, const flag_t flag, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
template<typename Buffer_T , typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | unpackBoundary (const BoundariesTuple &, Buffer_T &, const flag_t, const cell_idx_t, const cell_idx_t, const cell_idx_t) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N!=-1), void >::type | getBoundaryConditions (const BoundariesTuple &boundaryConditions, std::vector< std::string > &bcs) const |
template<typename BoundariesTuple , int N = std::tuple_size<BoundariesTuple>::value - 1> | |
std::enable_if<(N==-1), void >::type | getBoundaryConditions (const BoundariesTuple &, std::vector< std::string > &) const |
template<typename T > | |
static void | valueToStream (std::ostream &os, const T value) |
static void | valueToStream (std::ostream &os, const int8_t value) |
static void | valueToStream (std::ostream &os, const uint8_t value) |
using walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::ConstFlagFieldBaseIterator = typename FlagField_T::const_base_iterator |
using walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::flag_t = typename FlagField_T::flag_t |
using walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::FlagField = FlagField_T |
|
private |
enum walberla::boundary::BoundaryHandling::Mode |
walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::BoundaryHandling | ( | const std::string & | identifier, |
FlagField_T *const | flagField, | ||
const flag_t | domain, | ||
const Boundaries &... | boundaryConditions, | ||
const Mode | mode | ||
) |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inlineprivate |
|
inlineprivate |
bool walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::checkConsistency | ( | const CellInterval & | cells | ) | const |
|
inline |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinestatic |
|
inlineprivate |
|
inline |
You most likely have to call this function via "handling.template getBoundaryCondition< Boundary_T >( uid )".
|
inline |
You most likely have to call this function via "handling.template getBoundaryCondition< Boundary_T >( uid )".
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
private |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
private |
|
private |
std::vector< typename BoundaryHandling< FlagField_T, Stencil, Boundaries... >::flag_t > walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::getNeighborFlagMapping | ( | Buffer_T & | buffer, |
const bool | assumeIdenticalFlagMapping, | ||
bool & | identicalFlagMapping | ||
) | const |
|
private |
|
inline |
|
private |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
void walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::pack | ( | Buffer_T & | buffer, |
const CellInterval & | interval, | ||
const bool | assumeIdenticalFlagMapping = true |
||
) | const |
|
inlineprivate |
void walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::pack | ( | Buffer_T & | buffer, |
stencil::Direction | direction, | ||
const uint_t | numberOfLayers = 1 , |
||
const bool | assumeIdenticalFlagMapping = true |
||
) | const |
|
inlineprivate |
|
inlineprivate |
void walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::refresh | ( | const CellInterval & | cells | ) |
|
inline |
void walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::refreshOutermostLayer | ( | cell_idx_t | thickness = 1 | ) |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
private |
|
inlineprivate |
|
inline |
|
inline |
|
private |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
void walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::unpack | ( | Buffer_T & | buffer, |
const CellInterval & | interval, | ||
const bool | assumeIdenticalFlagMapping = true |
||
) |
|
inlineprivate |
void walberla::boundary::BoundaryHandling< FlagField_T, Stencil, Boundaries >::unpack | ( | Buffer_T & | buffer, |
stencil::Direction | direction, | ||
const uint_t | numberOfLayers = 1 , |
||
const bool | assumeIdenticalFlagMapping = true |
||
) |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlinestaticprivate |
|
inlinestaticprivate |
|
inlinestaticprivate |
|
friend |
|
private |
|
private |
|
private |
|
private |
|
private |
Every time "near boundary" flags are set or removed, dirty_ is set to true.
Triggers a rebuild of vector cellDirectionPairs_ in "OPTIMIZED_SPARSE_TRAVERSAL" mode.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |