OpenLB
1.7
Loading...
Searching...
No Matches
src
reaction
explicitFiniteDifference
fdSchemeSpecs
upwind.hh
Go to the documentation of this file.
1
/* This file is part of the OpenLB library
2
*
3
* Copyright (C) 2020 Davide Dapelo
4
* E-mail contact: info@openlb.net
5
* The most recent release of OpenLB can be downloaded at
6
* <http://www.openlb.net/>
7
*
8
* This program is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU General Public License
10
* as published by the Free Software Foundation; either version 2
11
* of the License, or (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public
19
* License along with this program; if not, write to the Free
20
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21
* Boston, MA 02110-1301, USA.
22
*/
23
28
#ifndef FD_SCHEMES_UPWIND_HH
29
#define FD_SCHEMES_UPWIND_HH
30
31
namespace
olb
{
32
33
namespace
fd {
34
35
template
<
unsigned
D,
typename
T>
36
template
<
typename
PARAMETERS>
37
T
AdvectionScheme<D,T,tag::UPWIND>::
38
apply
(T& f0, T f[], T F[], T u[], PARAMETERS& params)
39
{
40
T fNew = 0.;
41
for
(
unsigned
iD=0; iD<D; ++iD) {
42
fNew += u[iD] * ( u[iD]==0. ? T(0.)
43
: ( u[iD] >0. ? f0-f[getArrayPos<1>(0,iD)]
44
: F[getArrayPos<1>(0,iD)]-f0 ) );
45
}
46
return
fNew;
47
}
48
49
template
<
unsigned
D,
typename
T>
50
constexpr
int
AdNeumannZeroBoundaryScheme<D,T,tag::UPWIND>::getExtraExtent
()
51
{
52
return
0;
53
}
54
55
template
<
unsigned
D,
typename
T>
56
template
<
typename
PARAMETERS>
57
void
AdNeumannZeroBoundaryScheme<D,T,tag::UPWIND>::
58
apply
(T fOut[], T& f0, T fIn[],
int
normal[], T u[], PARAMETERS& params)
59
{
60
for
(
unsigned
iD=0; iD<D; ++iD) {
61
fOut[getArrayPos<1>(0,iD)] = ( u[iD]*normal[iD]==0 ? fIn[getArrayPos<1>(0,iD)] : f0 );
62
}
63
}
64
65
}
// namespace fd
66
67
}
// namespace olb
68
69
#endif
olb
Top level namespace for all of OpenLB.
Definition
boundaryPostProcessors2D.h:34
olb::fd::AdNeumannZeroBoundaryScheme::getExtraExtent
static constexpr int getExtraExtent()
Definition
fdScheme.h:66
olb::fd::AdNeumannZeroBoundaryScheme::apply
static void apply(T fOut[], T &f0, T fIn[], int normal[], T u[], PARAMETERS ¶ms)
Definition
fdScheme.h:71
olb::fd::AdvectionScheme::apply
static T apply(T &f0, T f[], T F[], T u[], PARAMETERS ¶ms)
Definition
fdScheme.h:47
Generated on Tue Mar 5 2024 09:57:52 for OpenLB by
1.10.0