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>
37
38#include <algorithm>
39#include <cmath>
40
42{
43
45enum class TurbulenceModel {
47 None,
49 Default,
53 Moeng,
57};
58
59constexpr real calcTurbulentDiffusivityDefault(real turbulentViscosity, real turbulentPrandtlNumber)
60{
61 return turbulentViscosity / turbulentPrandtlNumber;
62}
63
65{
66 using namespace vf::basics::constant;
67 real lengthScale = c1o1;
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
73 }
74 const real invTurbulentPrandtlNumber = c1o1 + c2o1 * lengthScale;
75 return turbulentViscosity * invTurbulentPrandtlNumber;
76}
77
81{
82 using namespace vf::basics::constant;
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
std::shared_ptr< T > SPtr
float real
Definition DataTypes.h:42
constexpr real calcTurbulentDiffusivityDefault(real turbulentViscosity, real turbulentPrandtlNumber)
constexpr real calcTurbulentDiffusivityMoeng(real temperatureGradient, real turbulentViscosity, real buoyancyParameter)
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)
TurbulenceModel
An enumeration for selecting a template of the advection-diffusion turbulence model.