walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T > Class Template Reference

Detailed Description

template<typename LatticeModel_T, typename Filter_T = field::DefaultEvaluationFilter>
class walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >

Adjusts locally the fluid viscosity based on a LES-Smagorinsky turbulence model when using GNS-LBM.

The original LES model is discussed in:

  • S. Hou, J. Sterling, S. Chen, G. Doolen, A lattice Boltzmann subgrid model for high reynolds number flows, in: A. T. Lawniczak, R. Kapral (Eds.), Pattern formation and lattice gas automata, Vol. 6 of Fields Institute Communications, American Mathematical Society, Providence, RI, 1996, p. 151–166.
  • H. Yu, S. S. Girimaji, L.-S. Luo, DNS and LES of decaying isotropic turbulence with and without frame rotation using lattice Boltzmann method, Journal of Computational Physics 209 (2) (2005) 599–616. doi:10.1016/j.jcp.2005.03.022.

The second reference suggests to use a Smagorinsky constant of 0.1.

An implementation of if for standard LBM is found in "lbm/lattice_model/SmagorinskyLES.h"

This version is adapted to use the special GNS-LBM equilibrium distribution functions to calculate the non-equilibrium PDFs. These are given in Z. Guo, T. S. Zhao - "Lattice Boltzmann model for incompressible flows through porous media", Phys. Rev. E 66 (2002)036304. doi:10.1103/PhysRevE.66.036304.

Combining LES with GNS-LBM was proposed in

  • C. Rettinger, U. Ruede - "A Coupled Lattice Boltzmann Method and Discrete Element Method for Discrete Particle Simulations of Particulate Flows". arXiv preprint arXiv:1711.00336 (2017)

Uses the value from the omegaField as tau0 and adds a calculated tauTurbulent to it. Can be used together with the collision model "SRTField"

#include <GNSSmagorinskyLESField.h>

Public Types

using PdfField_T = lbm::PdfField< LatticeModel_T >
 
using ScalarField_T = GhostLayerField< real_t, 1 >
 
using Stencil_T = typename LatticeModel_T::Stencil
 

Public Member Functions

 GNSSmagorinskyLESField (const shared_ptr< StructuredBlockStorage > &blocks, const BlockDataID &omegaFieldID, const ConstBlockDataID &pdfFieldID, const ConstBlockDataID &solidVolumeFractionFieldID, const real_t &smagorinskyConstant, const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet())
 
 GNSSmagorinskyLESField (const shared_ptr< StructuredBlockStorage > &blocks, const Filter_T &filter, const BlockDataID &omegaFieldID, const ConstBlockDataID &pdfFieldID, const ConstBlockDataID &solidVolumeFractionFieldID, const real_t &smagorinskyConstant, const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet())
 
void operator() (IBlock *const block)
 

Private Attributes

shared_ptr< StructuredBlockStorageblocks_
 
Filter_T filter_
 
BlockDataID omegaFieldID_
 
ConstBlockDataID pdfFieldID_
 
ConstBlockDataID solidVolumeFractionFieldID_
 
real_t smagorinskyConstant_
 
Set< SUID > requiredSelectors_
 
Set< SUID > incompatibleSelectors_
 

Member Typedef Documentation

◆ PdfField_T

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
using walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::PdfField_T = lbm::PdfField<LatticeModel_T>

◆ ScalarField_T

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
using walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::ScalarField_T = GhostLayerField<real_t, 1>

◆ Stencil_T

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
using walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::Stencil_T = typename LatticeModel_T::Stencil

Constructor & Destructor Documentation

◆ GNSSmagorinskyLESField() [1/2]

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::GNSSmagorinskyLESField ( const shared_ptr< StructuredBlockStorage > &  blocks,
const BlockDataID omegaFieldID,
const ConstBlockDataID pdfFieldID,
const ConstBlockDataID solidVolumeFractionFieldID,
const real_t smagorinskyConstant,
const Set< SUID > &  requiredSelectors = Set<SUID>::emptySet(),
const Set< SUID > &  incompatibleSelectors = Set<SUID>::emptySet() 
)
inline

◆ GNSSmagorinskyLESField() [2/2]

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::GNSSmagorinskyLESField ( const shared_ptr< StructuredBlockStorage > &  blocks,
const Filter_T &  filter,
const BlockDataID omegaFieldID,
const ConstBlockDataID pdfFieldID,
const ConstBlockDataID solidVolumeFractionFieldID,
const real_t smagorinskyConstant,
const Set< SUID > &  requiredSelectors = Set<SUID>::emptySet(),
const Set< SUID > &  incompatibleSelectors = Set<SUID>::emptySet() 
)
inline

Member Function Documentation

◆ operator()()

template<typename LatticeModel_T , typename Filter_T >
void walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::operator() ( IBlock *const  block)

Member Data Documentation

◆ blocks_

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
shared_ptr< StructuredBlockStorage > walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::blocks_
private

◆ filter_

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
Filter_T walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::filter_
private

◆ incompatibleSelectors_

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
Set<SUID> walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::incompatibleSelectors_
private

◆ omegaFieldID_

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
BlockDataID walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::omegaFieldID_
private

◆ pdfFieldID_

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
ConstBlockDataID walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::pdfFieldID_
private

◆ requiredSelectors_

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
Set<SUID> walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::requiredSelectors_
private

◆ smagorinskyConstant_

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
real_t walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::smagorinskyConstant_
private

◆ solidVolumeFractionFieldID_

template<typename LatticeModel_T , typename Filter_T = field::DefaultEvaluationFilter>
ConstBlockDataID walberla::pe_coupling::discrete_particle_methods::GNSSmagorinskyLESField< LatticeModel_T, Filter_T >::solidVolumeFractionFieldID_
private

The documentation for this class was generated from the following file: