VirtualFluids
0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
TurbulentDiffusivity.h
Go to the documentation of this file.
1
//=======================================================================================
2
// ____ ____ __ ______ __________ __ __ __ __
3
// \ \ | | | | | _ \ |___ ___| | | | | / \ | |
4
// \ \ | | | | | |_) | | | | | | | / \ | |
5
// \ \ | | | | | _ / | | | | | | / /\ \ | |
6
// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____
7
// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______|
8
// \ \ | | ________________________________________________________________
9
// \ \ | | | ______________________________________________________________|
10
// \ \| | | | __ __ __ __ ______ _______
11
// \ | | |_____ | | | | | | | | | _ \ / _____)
12
// \ | | _____| | | | | | | | | | | \ \ \_______
13
// \ | | | | |_____ | \_/ | | | | |_/ / _____ |
14
// \ _____| |__| |________| \_______/ |__| |______/ (_______/
15
//
16
// This file is part of VirtualFluids. VirtualFluids is free software: you can
17
// redistribute it and/or modify it under the terms of the GNU General Public
18
// License as published by the Free Software Foundation, either version 3 of
19
// the License, or (at your option) any later version.
20
//
21
// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
22
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24
// for more details.
25
//
26
// SPDX-License-Identifier: GPL-3.0-or-later
27
// SPDX-FileCopyrightText: Copyright © VirtualFluids Project contributors, see AUTHORS.md in root folder
28
//
32
//=======================================================================================
33
#ifndef LBM_TURBULENTDIFFUSION_H
34
#define LBM_TURBULENTDIFFUSION_H
35
#include <
basics/DataTypes.h
>
36
#include <
basics/constants/NumericConstants.h
>
37
38
#include <algorithm>
39
#include <cmath>
40
41
namespace
vf::lbm::advection_diffusion
42
{
43
45
enum class
TurbulenceModel
{
47
None
,
49
Default
,
53
Moeng
,
56
AMDStratified
57
};
58
59
constexpr
real
calcTurbulentDiffusivityDefault
(
real
turbulentViscosity,
real
turbulentPrandtlNumber)
60
{
61
return
turbulentViscosity / turbulentPrandtlNumber;
62
}
63
64
constexpr
real
calcTurbulentDiffusivityMoeng
(
real
temperatureGradient
,
real
turbulentViscosity,
real
buoyancyParameter
)
65
{
66
using namespace
vf::basics::constant
;
67
real
lengthScale
= c1o1;
68
const
real
bruntVaisalaFrequencySquared
=
buoyancyParameter
*
temperatureGradient
;
69
const
real
subgridTurbulentKineticEnergy
= turbulentViscosity * turbulentViscosity;
70
const
real
limit
= c76o100 * c76o100 *
subgridTurbulentKineticEnergy
;
71
if
(
bruntVaisalaFrequencySquared
>
limit
) {
// for numerical stability & clips to minimum of 1
72
lengthScale
=
sqrtf
((
float
)
limit
/ (
float
)
bruntVaisalaFrequencySquared
);
73
}
74
const
real
invTurbulentPrandtlNumber
= c1o1 + c2o1 *
lengthScale
;
75
return
turbulentViscosity *
invTurbulentPrandtlNumber
;
76
}
77
78
constexpr
real
calcTurbulentDiffusivityAMD
(
real
SGSConstant,
real
dvxdx
,
real
dvxdy
,
real
dvxdz
,
real
dvydx
,
real
dvydy
,
79
real
dvydz
,
real
dvzdx
,
real
dvzdy
,
real
dvzdz
,
real
dthetadx
,
real
dthetady
,
80
real
dthetadz
)
81
{
82
using namespace
vf::basics::constant
;
83
const
real
numerator
= -((
dvxdx
*
dthetadx
+
dvxdy
*
dthetady
+
dvxdz
*
dthetadz
) *
dthetadx
+
84
(
dvydx
*
dthetadx
+
dvydy
*
dthetady
+
dvydz
*
dthetadz
) *
dthetady
+
85
(
dvzdx
*
dthetadx
+
dvzdy
*
dthetady
+
dvzdz
*
dthetadz
) *
dthetadz
);
86
const
real
denominator
=
dthetadx
*
dthetadx
+
dthetady
*
dthetady
+
dthetadz
*
dthetadz
;
87
if
(
denominator
< cSmallSingle)
88
return
c0o1;
89
constexpr
real
zero = c0o1;
90
constexpr
real
upperLimit
= c1o100;
91
return
std::clamp(SGSConstant *
numerator
/
denominator
, zero,
upperLimit
);
92
}
93
}
// namespace vf::lbm::advection_diffusion
94
#endif
95
DataTypes.h
NumericConstants.h
SPtr
std::shared_ptr< T > SPtr
Definition
PointerDefinitions.h:39
real
float real
Definition
DataTypes.h:42
vf::basics::constant
Definition
NumericConstants.h:41
vf::lbm::advection_diffusion
Definition
BoundaryConditions.h:41
vf::lbm::advection_diffusion::calcTurbulentDiffusivityDefault
constexpr real calcTurbulentDiffusivityDefault(real turbulentViscosity, real turbulentPrandtlNumber)
Definition
TurbulentDiffusivity.h:59
vf::lbm::advection_diffusion::calcTurbulentDiffusivityMoeng
constexpr real calcTurbulentDiffusivityMoeng(real temperatureGradient, real turbulentViscosity, real buoyancyParameter)
Definition
TurbulentDiffusivity.h:64
vf::lbm::advection_diffusion::calcTurbulentDiffusivityAMD
constexpr real calcTurbulentDiffusivityAMD(real SGSConstant, real dvxdx, real dvxdy, real dvxdz, real dvydx, real dvydy, real dvydz, real dvzdx, real dvzdy, real dvzdz, real dthetadx, real dthetady, real dthetadz)
Definition
TurbulentDiffusivity.h:78
vf::lbm::advection_diffusion::TurbulenceModel
TurbulenceModel
An enumeration for selecting a template of the advection-diffusion turbulence model.
Definition
TurbulentDiffusivity.h:45
vf::lbm::advection_diffusion::TurbulenceModel::AMDStratified
@ AMDStratified
vf::lbm::advection_diffusion::TurbulenceModel::None
@ None
vf::lbm::advection_diffusion::TurbulenceModel::Default
@ Default
vf::lbm::advection_diffusion::TurbulenceModel::Moeng
@ Moeng
src
lbm
advectionDiffusion
TurbulentDiffusivity.h
Generated on Sat Sep 12 2026 02:03:21 for VirtualFluids by
1.9.8