OpenLB 1.7
Loading...
Searching...
No Matches
rtlbmBoundaryDynamics.h
Go to the documentation of this file.
1/* This file is part of the OpenLB library
2 *
3 * Copyright (C) 2017 Albert Mink
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
24#ifndef RTLBM_BOUNDARY_DYNAMICS_H
25#define RTLBM_BOUNDARY_DYNAMICS_H
26
27
28#include "dynamics/dynamics.h"
29
30namespace olb {
31
41template<typename T, typename DESCRIPTOR, typename MOMENTA, int direction, int orientation>
42class RtlbmDiffuseBoundaryDynamics : public legacy::BasicDynamics<T,DESCRIPTOR,MOMENTA> {
43public:
44 template<typename M>
46
50 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
54 T getOmega() const;
56 void setOmega(T omega_);
57};
58
59template<typename T, typename DESCRIPTOR, typename MOMENTA, int plane, int normal1, int normal2>
60class RtlbmDiffuseEdgeBoundaryDynamics : public legacy::BasicDynamics<T,DESCRIPTOR,MOMENTA> {
61public:
62 template<typename M>
64
68 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
72 T getOmega() const;
74 void setOmega(T omega_);
75};
76
77template<typename T, typename DESCRIPTOR, typename MOMENTA, int xNormal, int yNormal, int zNormal>
78class RtlbmDiffuseCornerBoundaryDynamics : public legacy::BasicDynamics<T,DESCRIPTOR,MOMENTA> {
79public:
80 template<typename M>
82
86 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
90 T getOmega() const;
92 void setOmega(T omega_);
93};
94
95
106template<typename T, typename DESCRIPTOR, typename MOMENTA, int direction, int orientation>
107class RtlbmDiffuseConstBoundaryDynamics : public legacy::BasicDynamics<T,DESCRIPTOR,MOMENTA> {
108public:
109 template<typename M>
111
115 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
119 T getOmega() const;
121 void setOmega(T omega_);
122};
123
124
125
133template<typename T, typename DESCRIPTOR, typename MOMENTA, int plane, int normal1, int normal2>
135public:
136 template<typename M>
138
142 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
146 T getOmega() const;
148 void setOmega(T omega_);
149};
150
151
159template<typename T, typename DESCRIPTOR, typename MOMENTA, int xNormal, int yNormal, int zNormal>
161public:
162 template<typename M>
167 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
171 T getOmega() const;
173 void setOmega(T omega_);
174};
175
176
177
178template<typename T, typename DESCRIPTOR, typename MOMENTA, int direction, int orientation>
179class RtlbmDirectedBoundaryDynamics : public legacy::BasicDynamics<T,DESCRIPTOR,MOMENTA> {
180public:
181 template<typename M>
186 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
190 T getOmega() const;
192 void setOmega(T omega_);
193};
194
195template<typename T, typename DESCRIPTOR, typename MOMENTA, int plane, int normal1, int normal2>
196class RtlbmDirectedEdgeBoundaryDynamics : public legacy::BasicDynamics<T,DESCRIPTOR,MOMENTA> {
197public:
198 template<typename M>
200
204 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
208 T getOmega() const;
210 void setOmega(T omega_);
211};
212
213template<typename T, typename DESCRIPTOR, typename MOMENTA, int xNormal, int yNormal, int zNormal>
214class RtlbmDirectedCornerBoundaryDynamics : public legacy::BasicDynamics<T,DESCRIPTOR,MOMENTA> {
215public:
216 template<typename M>
218
222 T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override;
226 T getOmega() const;
228 void setOmega(T omega_);
229};
230
231} // namespace olb
232
233#endif
Highest-level interface to Cell data.
Definition cell.h:148
Defines incoming (axis parallel) directions on flat walls.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for flat boundary.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
RtlbmDiffuseBoundaryDynamics(T omega_)
Constructor.
Defines incoming directions on flat walls.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for flat boundary.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
Defines incoming directions on corner boundaries.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for corner.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
Defines incoming directions on edge boundaries.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for edges.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for corner.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for flat boundary.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
RtlbmDirectedBoundaryDynamics(T omega_)
Constructor.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for directed boundary walls.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for directed boundary walls.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d]) const override
Compute equilibrium distribution function.
CellStatistic< T > collide(Cell< T, DESCRIPTOR > &cell) override
Collision step for directed boundary walls.
Top level namespace for all of OpenLB.
Return value of any collision.
Definition interface.h:43