ASL 0.1.7
Advanced Simulation Library
Loading...
Searching...
No Matches
aslLBGKBC.h
Go to the documentation of this file.
1/*
2 * Advanced Simulation Library <http://asl.org.il>
3 *
4 * Copyright 2015 Avtech Scientific <http://avtechscientific.com>
5 *
6 *
7 * This file is part of Advanced Simulation Library (ASL).
8 *
9 * ASL is free software: you can redistribute it and/or modify it
10 * under the terms of the GNU Affero General Public License as
11 * published by the Free Software Foundation, version 3 of the License.
12 *
13 * ASL 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 Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with ASL. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23
24#ifndef ASLLBGKBC_H
25#define ASLLBGKBC_H
26
27#include "aslBCond.h"
28#include "acl/aclMath/aclVectorOfElementsDef.h"
29
30namespace acl{
31 class Kernel;
32 typedef std::shared_ptr<acl::Kernel> SPKernel;
33 class KernelMerger;
34 typedef std::shared_ptr<acl::KernelMerger> SPKernelMerger;
35}
36
37namespace asl
38{
39 class LBGK;
40 typedef std::shared_ptr<LBGK> SPLBGK;
41 class PositionFunction;
42 typedef std::shared_ptr<PositionFunction> SPPositionFunction;
43
44
45 class BCLBGKCommon:public BCond
46 {
47 protected:
48 SPLBGK num;
49 std::vector<acl::SPKernel> kernels;
51
52 AVec<int> directionGroupsShifts;
53 AVec<int> directionGroupsSizes;
54
56 public:
58 virtual void execute();
59 };
60
62
67 class BCNoSlip: public BCLBGKCommon
68 {
69 public:
71 virtual void init();
72 };
73
75
80 {
81 protected:
83 public:
85 virtual void init();
86 };
87
89
100 {
101 protected:
103 public:
105 virtual void init();
106 };
107
109
117 {
118 protected:
121 public:
123 const acl::VectorOfElements & p,
124 const acl::VectorOfElements & v);
125 virtual void init();
126 };
127
129
132
133 class BCNoSlipMap:public BCondWithMap
134 {
135 protected:
136 std::unique_ptr<acl::Kernel> kernel;
137 SPLBGK num;
138 public:
141 virtual void execute();
142 virtual void init();
143 };
144
146
149 class BCVelocityMap:public BCondWithMap
150 {
151 protected:
152 std::unique_ptr<acl::Kernel> kernel;
153 SPLBGK num;
155
156 public:
165 virtual void execute();
166 virtual void init();
167 };
168
173 {
174 protected:
175 std::unique_ptr<acl::Kernel> kernel;
176 SPLBGK num;
179 public:
188 virtual void execute();
189 virtual void init();
190 };
191
193
201 {
202 protected:
203 std::unique_ptr<acl::Kernel> kernel;
204 SPLBGK num;
207 public:
213 virtual void execute();
214 virtual void init();
215 };
216
218
225 {
226 protected:
227 std::unique_ptr<acl::Kernel> kernel;
228 SPLBGK num;
232 public:
239 virtual void execute();
240 virtual void init();
241 };
242
248 {
249 protected:
250 std::unique_ptr<acl::Kernel> kernel;
251 SPLBGK num;
253 public:
258 virtual void execute();
259 virtual void init();
260 };
261
266 {
267 protected:
268 std::unique_ptr<acl::Kernel> kernel;
269 SPLBGK num;
271 public:
276 virtual void execute();
277 virtual void init();
278 };
279
281 SPBCond generateBCNoSlip(SPLBGK nm, const std::vector<SlicesNames> & sl);
283 SPBCond generateBCConstantVelocity(SPLBGK nm, AVec<> v, const std::vector<SlicesNames> & sl);
285 SPBCond generateBCConstantPressure(SPLBGK nm, double p, const std::vector<SlicesNames> & sl);
288 double p,
289 AVec<> v,
290 const std::vector<SlicesNames> & sl);
295 double p,
296 AVec<> v,
312 SPAbstractDataWithGhostNodes computationalDomain);
319 double p0,
320 double limitingFactor,
324 double beta,
325 double p0,
326 double limitingFactor,
332
337
338} //asl
339
340#endif //ASLBGKBC_H
OpenCl Kernel generator.
Definition aclKernel.h:49
OpenCl Kernel merger.
The class represents several Element.
Bondary condition corresponding an in- or outflow boundary conditions with a given pressure.
Definition aslLBGKBC.h:80
acl::VectorOfElements pressure
Definition aslLBGKBC.h:82
BCConstantPressure(SPLBGK nm, const acl::VectorOfElements &p)
virtual void init()
Builds the necesery internal data and kernels.
Bondary condition corresponding wall with given velocity for uncompressible.
Definition aslLBGKBC.h:117
BCConstantPressureVelocity(SPLBGK nm, const acl::VectorOfElements &p, const acl::VectorOfElements &v)
virtual void init()
Builds the necesery internal data and kernels.
acl::VectorOfElements velocity
Definition aslLBGKBC.h:120
acl::VectorOfElements pressure
Definition aslLBGKBC.h:119
virtual void execute()
Executes the numerical procedure.
std::unique_ptr< acl::Kernel > kernel
Definition aslLBGKBC.h:175
acl::VectorOfElements pressure
Definition aslLBGKBC.h:177
BCConstantPressureVelocityMap(SPLBGK nm, acl::VectorOfElements p, SPAbstractDataWithGhostNodes map)
acl::VectorOfElements velocity
Definition aslLBGKBC.h:178
BCConstantPressureVelocityMap(SPLBGK nm, acl::VectorOfElements p, acl::VectorOfElements v, SPAbstractDataWithGhostNodes map)
virtual void init()
Builds the necesery internal data and kernels.
Bondary condition corresponding wall with given velocity for uncompressible.
Definition aslLBGKBC.h:100
acl::VectorOfElements velocity
Definition aslLBGKBC.h:102
virtual void init()
Builds the necesery internal data and kernels.
BCConstantVelocity(SPLBGK nm, const acl::VectorOfElements &v)
Set outflux corresponding to kinetics and transport limitations of the deposition rate.
Definition aslLBGKBC.h:225
BCKineticsLimitedDepositionMap(SPLBGK nm, acl::VectorOfElements p, acl::VectorOfElements lF, acl::VectorOfElements b, SPAbstractDataWithGhostNodes map)
std::unique_ptr< acl::Kernel > kernel
Definition aslLBGKBC.h:227
virtual void execute()
Executes the numerical procedure.
acl::VectorOfElements limitingFactor
Definition aslLBGKBC.h:230
virtual void init()
Builds the necesery internal data and kernels.
std::vector< acl::SPKernel > kernels
Definition aslLBGKBC.h:49
AVec< int > directionGroupsShifts
Definition aslLBGKBC.h:52
BCLBGKCommon(SPLBGK nm)
virtual void execute()
Executes the numerical procedure.
acl::SPKernelMerger km
Definition aslLBGKBC.h:50
AVec< int > directionGroupsSizes
Definition aslLBGKBC.h:53
Bondary condition corresponding to a rigid wall ( ).
Definition aslLBGKBC.h:68
virtual void init()
Builds the necesery internal data and kernels.
BCNoSlip(SPLBGK nm)
Bondary condition corresponding to a rigid wall ( ).
Definition aslLBGKBC.h:134
virtual void execute()
Executes the numerical procedure.
BCNoSlipMap(SPLBGK nm, SPAbstractDataWithGhostNodes map)
virtual void init()
Builds the necesery internal data and kernels.
std::unique_ptr< acl::Kernel > kernel
Definition aslLBGKBC.h:136
Set outflux corresponding to transport limitation of the deposition rate.
Definition aslLBGKBC.h:201
std::unique_ptr< acl::Kernel > kernel
Definition aslLBGKBC.h:203
virtual void init()
Builds the necesery internal data and kernels.
virtual void execute()
Executes the numerical procedure.
BCTransportLimitedDepositionMap(SPLBGK nm, acl::VectorOfElements p, acl::VectorOfElements lF, SPAbstractDataWithGhostNodes map)
acl::VectorOfElements limitingFactor
Definition aslLBGKBC.h:206
virtual void init()
Builds the necesery internal data and kernels.
BCVelocityMap(SPLBGK nm, SPPositionFunction v, SPAbstractDataWithGhostNodes map, SPAbstractDataWithGhostNodes computationalDomain)
BCVelocityMap(SPLBGK nm, SPPositionFunction v, SPAbstractDataWithGhostNodes map)
std::unique_ptr< acl::Kernel > kernel
Definition aslLBGKBC.h:152
SPPositionFunction velocity
Definition aslLBGKBC.h:154
virtual void execute()
Executes the numerical procedure.
Virtual class describes general interface for boundary conditions.
Definition aslBCond.h:59
Virtual class describes general interface for boundary conditions.
Definition aslBCond.h:101
SPAbstractDataWithGhostNodes map
boundary description for the particular BC
Definition aslBCond.h:111
SPAbstractDataWithGhostNodes computationalDomain
Computational domain which contains all boundaries and the particular boundary as well.
Definition aslBCond.h:114
ComputeSurfaceFluxMap(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
SPDataWithGhostNodesACLData fluxField
Definition aslLBGKBC.h:252
virtual void execute()
Executes the numerical procedure.
virtual void init()
Builds the necesery internal data and kernels.
std::unique_ptr< acl::Kernel > kernel
Definition aslLBGKBC.h:250
std::unique_ptr< acl::Kernel > kernel
Definition aslLBGKBC.h:268
SPDataWithGhostNodesACLData forceField
Definition aslLBGKBC.h:270
virtual void execute()
Executes the numerical procedure.
virtual void init()
Builds the necesery internal data and kernels.
ComputeSurfaceForceMap(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
Numerical method for fluid flow.
Definition aslLBGK.h:78
std::shared_ptr< PositionFunction > SPPositionFunction
SPNumMethod generateComputeSurfaceForce(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
SPBCond generateBCConstantVelocity(SPLBGK nm, AVec<> v, const std::vector< SlicesNames > &sl)
SPNumMethod generateComputeSurfaceFlux(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
SPBCond generateBCConstantPressure(SPLBGK nm, double p, const std::vector< SlicesNames > &sl)
SPNumMethod generateBCVelocityVel(SPLBGK nm, SPPositionFunction v, SPAbstractDataWithGhostNodes map)
SPNumMethod generateBCNoSlipVel(SPLBGK nmU, SPAbstractDataWithGhostNodes map)
SPNumMethod generateBCTransportLimitedDeposition(SPLBGK nm, double p0, double limitingFactor, SPAbstractDataWithGhostNodes map)
SPBCond generateBCConstantPressureVelocity(SPLBGK nm, double p, AVec<> v, const std::vector< SlicesNames > &sl)
SPNumMethod generateBCKineticsLimitedDeposition(SPLBGK nm, double beta, double p0, double limitingFactor, SPAbstractDataWithGhostNodes map)
SPNumMethod generateBCVelocity(SPLBGK nm, SPPositionFunction v, SPAbstractDataWithGhostNodes map)
SPBCond generateBCNoSlip(SPLBGK nm, const std::vector< SlicesNames > &sl)
SPNumMethod generateBCNoSlipRho(SPLBGK nmU, SPAbstractDataWithGhostNodes map)
Advanced Computational Language.
Definition acl.h:41
std::shared_ptr< acl::KernelMerger > SPKernelMerger
Definition aslLBGKBC.h:34
std::shared_ptr< Kernel > SPKernel
Advanced Simulation Library.
Definition aslDataInc.h:31
std::shared_ptr< AbstractDataWithGhostNodes > SPAbstractDataWithGhostNodes
std::shared_ptr< NumMethod > SPNumMethod
std::shared_ptr< BCond > SPBCond
Definition aslBCond.h:88
std::shared_ptr< DataWithGhostNodesACLData > SPDataWithGhostNodesACLData
std::shared_ptr< LBGK > SPLBGK
Definition aslLBGK.h:133