OpenLB 1.8.1
Loading...
Searching...
No Matches
advectionDiffusionBoundaryPostProcessor3D.h
Go to the documentation of this file.
1/* This file is part of the OpenLB library
2 *
3 * Copyright (C) 2006, 2016 Robin Trunk
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 * Generic version of the collision, which modifies the particle
9 * distribution functions, by Orestis Malaspinas.
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this program; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24 * Boston, MA 02110-1301, USA.
25*/
26#ifndef ADVECTION_DIFFUSION_BOUNDARY_POST_PROCESSOR_3D_H
27#define ADVECTION_DIFFUSION_BOUNDARY_POST_PROCESSOR_3D_H
28
29
30
31#include "core/postProcessing.h"
32
33namespace olb {
34
42template<typename T, typename DESCRIPTOR>
44public:
45 ConvectionBoundaryProcessor3D(int x0_, int x1_, int y0_, int y1_, int z0_,
46 int z1_, int discreteNormalX_,
47 int discreteNormalY_, int discreteNormalZ_);
48 int extent() const override
49 {
50 return 0;
51 }
52 int extent(int whichDirection) const override
53 {
54 return 0;
55 }
56 void process(BlockLattice<T,DESCRIPTOR>& blockLattice) override;
58 int x0_, int x1_, int y0_, int y1_, int z0_, int z1_) override;
59private:
60 int interpolationPop[DESCRIPTOR::q];
61 int x0, x1, y0, y1, z0, z1;
62};
63
64template<typename T, typename DESCRIPTOR>
66public:
67 ConvectionBoundaryProcessorGenerator3D(int x0_, int x1_, int y0_, int y1_,
68 int z0_, int z1_, int discreteNormalX_,
69 int discreteNormalY_, int discreteNormalZ_);
72private:
73 int discreteNormalX;
74 int discreteNormalY;
75 int discreteNormalZ;
76};
77
89template<typename T, typename DESCRIPTOR>
91public:
92 ZeroDistributionBoundaryProcessor3D(int x0_, int x1_, int y0_, int y1_, int z0_,
93 int z1_, int discreteNormalX_, int discreteNormalY_,
94 int discreteNormalZ_);
95 int extent() const override
96 {
97 return 0;
98 }
99 int extent(int whichDirection) const override
100 {
101 return 0;
102 }
103 void process(BlockLattice<T,DESCRIPTOR>& blockLattice) override;
105 int x0_, int x1_, int y0_, int y1_, int z0_, int z1_) override;
106private:
107 int resetPop[DESCRIPTOR::q];
108 int x0, x1, y0, y1, z0, z1;
109};
110
111template<typename T, typename DESCRIPTOR>
113public:
114 ZeroDistributionBoundaryProcessorGenerator3D(int x0_, int x1_, int y0_, int y1_,
115 int z0_, int z1_, int discreteNormalX_,
116 int discreteNormalY_, int discreteNormalZ_);
119private:
120 int discreteNormalX;
121 int discreteNormalY;
122 int discreteNormalZ;
123};
124}
125
126
127#endif
This class interpolates missing f_i from values near the boundary to get a more stable outflow condit...
ConvectionBoundaryProcessor3D(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, int discreteNormalX_, int discreteNormalY_, int discreteNormalZ_)
void process(BlockLattice< T, DESCRIPTOR > &blockLattice) override
Execute post-processing step.
void processSubDomain(BlockLattice< T, DESCRIPTOR > &blockLattice, int x0_, int x1_, int y0_, int y1_, int z0_, int z1_) override
Execute post-processing step on a sublattice.
int extent(int whichDirection) const override
Extent of application area along a direction (0 or 1)
int extent() const override
Extent of application area (0 for purely local operations)
PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const override
ConvectionBoundaryProcessorGenerator3D(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, int discreteNormalX_, int discreteNormalY_, int discreteNormalZ_)
PostProcessor3D< T, DESCRIPTOR > * generate() const override
This class copies missing values in the external field from the neighbour in normal direction.
void process(BlockLattice< T, DESCRIPTOR > &blockLattice) override
Execute post-processing step.
void processSubDomain(BlockLattice< T, DESCRIPTOR > &blockLattice, int x0_, int x1_, int y0_, int y1_, int z0_, int z1_) override
Execute post-processing step on a sublattice.
int extent() const override
Extent of application area (0 for purely local operations)
ZeroDistributionBoundaryProcessor3D(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, int discreteNormalX_, int discreteNormalY_, int discreteNormalZ_)
int extent(int whichDirection) const override
Extent of application area along a direction (0 or 1)
PostProcessor3D< T, DESCRIPTOR > * generate() const override
ZeroDistributionBoundaryProcessorGenerator3D(int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, int discreteNormalX_, int discreteNormalY_, int discreteNormalZ_)
PostProcessorGenerator3D< T, DESCRIPTOR > * clone() const override
Top level namespace for all of OpenLB.
Interface for post-processing steps – header file.