Level determination for refinement check based on (scaled) vorticity values.
If (scaled) vorticity magnitude is below lowerLimit in all cells of a block, that block could be coarsened. If the (scaled) vorticity value is above the upperLimit for at least one cell, that block gets marked for refinement. Else, the block remains on the current level.
The scaling originates from neglecting the actual mesh size on the block to obtain different vorticity values for different mesh sizes.
#include <VorticityBasedLevelDetermination.h>
Public Types | |
using | VectorField_T = GhostLayerField< Vector3< real_t >, 1 > |
Public Member Functions | |
VorticityBasedLevelDetermination (const ConstBlockDataID &fieldID, const Filter_T &filter, const real_t upperLimit, const real_t lowerLimit, const uint_t maxLevel) | |
void | operator() (std::vector< std::pair< const Block *, uint_t > > &minTargetLevels, std::vector< const Block * > &blocksAlreadyMarkedForRefinement, const BlockForest &forest) |
Private Attributes | |
ConstBlockDataID | fieldID_ |
Filter_T | filter_ |
real_t | upperLimit_ |
real_t | lowerLimit_ |
uint_t | maxLevel_ |
using walberla::lbm::refinement::VorticityBasedLevelDetermination< Filter_T, Pseudo2D >::VectorField_T = GhostLayerField<Vector3<real_t>, 1> |
|
inline |
void walberla::lbm::refinement::VorticityBasedLevelDetermination< Filter_T, Pseudo2D >::operator() | ( | std::vector< std::pair< const Block *, uint_t > > & | minTargetLevels, |
std::vector< const Block * > & | blocksAlreadyMarkedForRefinement, | ||
const BlockForest & | forest | ||
) |
|
private |
|
private |
|
private |
|
private |
|
private |