ASL  0.1.6
Advanced Simulation Library
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"
29 
30 namespace acl{
31  class Kernel;
33  class KernelMerger;
35 }
36 
37 namespace asl
38 {
39  class LBGK;
41  class PositionFunction;
43 
44 
45  class BCLBGKCommon:public BCond
46  {
47  protected:
48  SPLBGK num;
49  std::vector<acl::SPKernel> kernels;
51 
54 
55  void sortDirections();
56  public:
57  BCLBGKCommon(SPLBGK nm);
58  virtual void execute();
59  };
60 
62 
67  class BCNoSlip: public BCLBGKCommon
68  {
69  public:
70  BCNoSlip(SPLBGK nm);
71  virtual void init();
72  };
73 
75 
80  {
81  protected:
83  public:
84  BCConstantPressure(SPLBGK nm, const acl::VectorOfElements & p);
85  virtual void init();
86  };
87 
89 
100  {
101  protected:
103  public:
104  BCConstantVelocity(SPLBGK nm, const acl::VectorOfElements & v);
105  virtual void init();
106  };
107 
109 
117  {
118  protected:
121  public:
122  BCConstantPressureVelocity(SPLBGK nm,
123  const acl::VectorOfElements & p,
124  const acl::VectorOfElements & v);
125  virtual void init();
126  };
127 
129 
134  {
135  protected:
136  std::unique_ptr<acl::Kernel> kernel;
137  SPLBGK num;
138  public:
140  ~BCNoSlipMap();
141  virtual void execute();
142  virtual void init();
143  };
144 
146 
150  {
151  protected:
152  std::unique_ptr<acl::Kernel> kernel;
153  SPLBGK num;
154  SPPositionFunction velocity;
155 
156  public:
157  BCVelocityMap(SPLBGK nm,
158  SPPositionFunction v,
160  BCVelocityMap(SPLBGK nm,
161  SPPositionFunction v,
164  ~BCVelocityMap();
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:
254  ComputeSurfaceFluxMap(SPLBGK nm,
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:
272  ComputeSurfaceForceMap(SPLBGK nm,
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,
305  SPNumMethod generateBCVelocity(SPLBGK nm,
306  SPPositionFunction v,
309  SPNumMethod generateBCVelocity(SPLBGK nm,
310  SPPositionFunction v,
312  SPAbstractDataWithGhostNodes computationalDomain);
315  SPPositionFunction v,
319  double p0,
320  double limitingFactor,
324  double beta,
325  double p0,
326  double limitingFactor,
332 
337 
338 } //asl
339 
340 #endif //ASLBGKBC_H
std::shared_ptr< PositionFunction > SPPositionFunction
virtual void init()
Builds the necesery internal data and kernels.
virtual void execute()
Executes the numerical procedure.
BCNoSlip(SPLBGK nm)
BCConstantPressureVelocityMap(SPLBGK nm, acl::VectorOfElements p, SPAbstractDataWithGhostNodes map)
virtual void execute()
Executes the numerical procedure.
acl::VectorOfElements velocity
Definition: aslLBGKBC.h:178
Advanced Simulation Library.
Definition: aslDataInc.h:30
Advanced Computational Language.
Definition: acl.h:40
std::shared_ptr< Kernel > SPKernel
virtual void init()
Builds the necesery internal data and kernels.
Bondary condition corresponding to a rigid wall ( )
Definition: aslLBGKBC.h:133
BCLBGKCommon(SPLBGK nm)
Virtual class describes general interface for boundary conditions.
Definition: aslBCond.h:58
virtual void execute()
Executes the numerical procedure.
SPNumMethod generateBCKineticsLimitedDeposition(SPLBGK nm, double beta, double p0, double limitingFactor, SPAbstractDataWithGhostNodes map)
BCNoSlipMap(SPLBGK nm, SPAbstractDataWithGhostNodes map)
acl::VectorOfElements pressure
Definition: aslLBGKBC.h:119
virtual void init()
Builds the necesery internal data and kernels.
virtual void init()
Builds the necesery internal data and kernels.
ComputeSurfaceForceMap(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
virtual void execute()
Executes the numerical procedure.
OpenCl Kernel merger.
SPNumMethod generateBCNoSlipRho(SPLBGK nmU, SPAbstractDataWithGhostNodes map)
ComputeSurfaceFluxMap(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
std::unique_ptr< acl::Kernel > kernel
Definition: aslLBGKBC.h:136
BCConstantVelocity(SPLBGK nm, const acl::VectorOfElements &v)
virtual void execute()
Executes the numerical procedure.
SPBCond generateBCConstantPressureVelocity(SPLBGK nm, double p, AVec<> v, const std::vector< SlicesNames > &sl)
SPNumMethod generateComputeSurfaceFlux(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
Bondary condition corresponding wall with given velocity for uncompressible.
Definition: aslLBGKBC.h:99
SPPositionFunction velocity
Definition: aslLBGKBC.h:154
virtual void execute()
Executes the numerical procedure.
acl::VectorOfElements limitingFactor
Definition: aslLBGKBC.h:206
virtual void init()
Builds the necesery internal data and kernels.
AVec< int > directionGroupsShifts
Definition: aslLBGKBC.h:52
virtual void init()
Builds the necesery internal data and kernels.
SPAbstractDataWithGhostNodes computationalDomain
Computational domain which contains all boundaries and the particular boundary as well...
Definition: aslBCond.h:114
virtual void execute()
Executes the numerical procedure.
std::shared_ptr< LBGK > SPLBGK
Definition: aslLBGK.h:133
SPBCond generateBCConstantVelocity(SPLBGK nm, AVec<> v, const std::vector< SlicesNames > &sl)
SPDataWithGhostNodesACLData fluxField
Definition: aslLBGKBC.h:252
virtual void init()
Builds the necesery internal data and kernels.
acl::VectorOfElements p0
Definition: aslLBGKBC.h:229
virtual void init()
Builds the necesery internal data and kernels.
BCConstantPressure(SPLBGK nm, const acl::VectorOfElements &p)
Set outflux corresponding to transport limitation of the deposition rate.
Definition: aslLBGKBC.h:200
SPDataWithGhostNodesACLData forceField
Definition: aslLBGKBC.h:270
acl::VectorOfElements velocity
Definition: aslLBGKBC.h:120
acl::VectorOfElements limitingFactor
Definition: aslLBGKBC.h:230
SPAbstractDataWithGhostNodes map
boundary description for the particular BC
Definition: aslBCond.h:111
BCTransportLimitedDepositionMap(SPLBGK nm, acl::VectorOfElements p, acl::VectorOfElements lF, SPAbstractDataWithGhostNodes map)
virtual void execute()
Executes the numerical procedure.
std::unique_ptr< acl::Kernel > kernel
Definition: aslLBGKBC.h:227
The class represents several Element.
virtual void init()
Builds the necesery internal data and kernels.
SPNumMethod generateBCVelocityVel(SPLBGK nm, SPPositionFunction v, SPAbstractDataWithGhostNodes map)
BCVelocityMap(SPLBGK nm, SPPositionFunction v, SPAbstractDataWithGhostNodes map)
acl::SPKernelMerger km
Definition: aslLBGKBC.h:50
acl::VectorOfElements velocity
Definition: aslLBGKBC.h:102
Bondary condition corresponding wall with given velocity for uncompressible.
Definition: aslLBGKBC.h:116
Bondary condition corresponding an in- or outflow boundary conditions with a given pressure...
Definition: aslLBGKBC.h:79
std::shared_ptr< T > map(ElementData m)
Definition: aclMemBlock.h:68
SPBCond generateBCConstantPressure(SPLBGK nm, double p, const std::vector< SlicesNames > &sl)
Virtual class describes general interface for boundary conditions.
Definition: aslBCond.h:100
std::unique_ptr< acl::Kernel > kernel
Definition: aslLBGKBC.h:268
acl::VectorOfElements pressure
Definition: aslLBGKBC.h:82
std::vector< acl::SPKernel > kernels
Definition: aslLBGKBC.h:49
std::shared_ptr< acl::KernelMerger > SPKernelMerger
Definition: aslLBGKBC.h:33
AVec< int > directionGroupsSizes
Definition: aslLBGKBC.h:53
std::unique_ptr< acl::Kernel > kernel
Definition: aslLBGKBC.h:250
virtual void init()
Builds the necesery internal data and kernels.
SPNumMethod generateComputeSurfaceForce(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
SPNumMethod generateBCTransportLimitedDeposition(SPLBGK nm, double p0, double limitingFactor, SPAbstractDataWithGhostNodes map)
BCKineticsLimitedDepositionMap(SPLBGK nm, acl::VectorOfElements p, acl::VectorOfElements lF, acl::VectorOfElements b, SPAbstractDataWithGhostNodes map)
std::unique_ptr< acl::Kernel > kernel
Definition: aslLBGKBC.h:203
acl::VectorOfElements beta
Definition: aslLBGKBC.h:231
std::unique_ptr< acl::Kernel > kernel
Definition: aslLBGKBC.h:152
Set outflux corresponding to kinetics and transport limitations of the deposition rate...
Definition: aslLBGKBC.h:224
BCConstantPressureVelocity(SPLBGK nm, const acl::VectorOfElements &p, const acl::VectorOfElements &v)
SPNumMethod generateBCNoSlipVel(SPLBGK nmU, SPAbstractDataWithGhostNodes map)
for velocity field
Bondary condition corresponding to a rigid wall ( )
Definition: aslLBGKBC.h:67
SPNumMethod generateBCVelocity(SPLBGK nm, SPPositionFunction v, SPAbstractDataWithGhostNodes map)
acl::VectorOfElements pressure
Definition: aslLBGKBC.h:177
std::unique_ptr< acl::Kernel > kernel
Definition: aslLBGKBC.h:175
SPBCond generateBCNoSlip(SPLBGK nm, const std::vector< SlicesNames > &sl)
virtual void init()
Builds the necesery internal data and kernels.