ASL  0.1.7
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;
32  typedef std::shared_ptr<acl::Kernel> SPKernel;
33  class KernelMerger;
34  typedef std::shared_ptr<acl::KernelMerger> SPKernelMerger;
35 }
36 
37 namespace 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:
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:
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 
134  {
135  protected:
136  std::unique_ptr<acl::Kernel> kernel;
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;
155 
156  public:
157  BCVelocityMap(SPLBGK nm,
160  BCVelocityMap(SPLBGK nm,
164  ~BCVelocityMap();
165  virtual void execute();
166  virtual void init();
167  };
168 
173  {
174  protected:
175  std::unique_ptr<acl::Kernel> kernel;
179  public:
188  virtual void execute();
189  virtual void init();
190  };
191 
193 
201  {
202  protected:
203  std::unique_ptr<acl::Kernel> kernel;
207  public:
213  virtual void execute();
214  virtual void init();
215  };
216 
218 
225  {
226  protected:
227  std::unique_ptr<acl::Kernel> kernel;
232  public:
239  virtual void execute();
240  virtual void init();
241  };
242 
248  {
249  protected:
250  std::unique_ptr<acl::Kernel> kernel;
253  public:
258  virtual void execute();
259  virtual void init();
260  };
261 
266  {
267  protected:
268  std::unique_ptr<acl::Kernel> kernel;
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
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)
std::shared_ptr< DataWithGhostNodesACLData > SPDataWithGhostNodesACLData
Definition: aslGenerators.h:47
Virtual class describes general interface for boundary conditions.
Definition: aslBCond.h:58
std::shared_ptr< NumMethod > SPNumMethod
Definition: aslNumMethod.h:44
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
std::shared_ptr< BCond > SPBCond
Definition: aslBCond.h:88
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::shared_ptr< AbstractDataWithGhostNodes > SPAbstractDataWithGhostNodes
Definition: aslGenerators.h:50
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.