OpenLB 1.7
Loading...
Searching...
No Matches
turbulentF3D.h
Go to the documentation of this file.
1/* This file is part of the OpenLB library
2 *
3 * Copyright (C) 2013-2015 Patrick Nathen, Mathias J. Krause
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 TURBULENT_F_3D_H
25#define TURBULENT_F_3D_H
26
27#include <list>
28
29#include "blockBaseF3D.h"
30#include "superBaseF3D.h"
31#include "core/unitConverter.h"
34#include "latticeVelocity3D.h"
37
38
43namespace olb {
44
46template <typename T, typename DESCRIPTOR>
47class SuperLatticeYplus3D : public SuperLatticePhysF3D<T,DESCRIPTOR> {
48private:
49 SuperGeometry<T,3>& _superGeometry;
50 IndicatorF3D<T>& _indicator;
51 const int _material;
52public:
54 SuperGeometry<T,3>& superGeometry, IndicatorF3D<T>& indicator,
55 const int material );
56 bool operator() (T output[], const int input[]) override;
57};
58
61/*template <typename T, typename DESCRIPTOR>
62class BlockLatticeADM3D : public BlockLatticeF3D<T,DESCRIPTOR> {
63protected:
64 T _sigma;
65 int _order;
66 bool _adaptive;
67 const UnitConverter<T,DESCRIPTOR>& _converter;
68
69public:
70 BlockLatticeADM3D(BlockLattice<T,DESCRIPTOR>& blockLattice, T sigma, int order, bool adaptive, const UnitConverter<T,DESCRIPTOR>& converter);
71 bool operator() (T output[], const int input[]);
72 void execute(const int input[]);
73 void execute();
74
75};
76
79template <typename T, typename DESCRIPTOR>
80class SuperLatticeADM3D : public SuperLatticeF3D<T,DESCRIPTOR> {
81protected:
82 T _sigma;
83 int _order;
84 bool _adaptive;
85 const UnitConverter<T,DESCRIPTOR>& _converter;
86public:
87 SuperLatticeADM3D(SuperLattice<T,DESCRIPTOR>& sLattice, T sigma, int order, bool adaptive, const UnitConverter<T,DESCRIPTOR>& converter);
88 bool operator() (T output[], const int input[]);
89 void execute(SuperGeometry<T,3>& superGeometry, const int material);
90};
91*/
92
93template <typename T, typename DESCRIPTOR>
95private:
96 BlockF3D<T>& _blockFinDiff;
97public:
99 bool operator() (T output[], const int input[]);
100};
101
102template <typename T, typename DESCRIPTOR>
104private:
105 BlockF3D<T>& _blockFinDiff;
106public:
108 bool operator() (T output[], const int input[]);
109};
110
113template <typename T, typename DESCRIPTOR>
115private:
118public:
119 SuperLatticeVelocityGradientFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber);
120};
121
124template <typename T, typename DESCRIPTOR>
126private:
129public:
130 SuperLatticeExternalVelocityGradientFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber);
131};
132
133template <typename T, typename DESCRIPTOR>
135private:
136 BlockF3D<T>& _blockFinDiff;
137 const UnitConverter<T,DESCRIPTOR>& _converter;
138public:
140 bool operator() (T output[], const int input[]) override;
141};
142
145template <typename T, typename DESCRIPTOR>
147private:
150 const UnitConverter<T,DESCRIPTOR>& _converter;
151public:
152 SuperLatticePhysVelocityGradientFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber, const UnitConverter<T,DESCRIPTOR>& converter);
153};
154
155template <typename T, typename DESCRIPTOR>
156class BlockLatticeStrainRateFD3D : public BlockLatticeF3D<T,DESCRIPTOR> {
157private:
158 BlockF3D<T>& _blockVeloGrad;
159public:
161 bool operator() (T output[], const int input[]);
162};
163
166template <typename T, typename DESCRIPTOR>
167class SuperLatticeStrainRateFD3D : public SuperLatticeF3D<T,DESCRIPTOR> {
168private:
170public:
171 SuperLatticeStrainRateFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber);
172};
173
174template <typename T, typename DESCRIPTOR>
176private:
177 BlockF3D<T>& _blockVeloGrad;
178 const UnitConverter<T,DESCRIPTOR>& _converter;
179public:
181 bool operator() (T output[], const int input[]);
182};
183
186template <typename T, typename DESCRIPTOR>
188private:
190 const UnitConverter<T,DESCRIPTOR>& _converter;
191public:
192 SuperLatticePhysStrainRateFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber, const UnitConverter<T,DESCRIPTOR>& converter);
193};
194
195template <typename T, typename DESCRIPTOR>
196class BlockLatticeDissipationFD3D : public BlockLatticeF3D<T,DESCRIPTOR> {
197private:
198 BlockF3D<T>& _blockVeloGrad;
199 const UnitConverter<T,DESCRIPTOR>& _converter;
200public:
202 bool operator() (T output[], const int input[]);
203};
204
207template <typename T, typename DESCRIPTOR>
208class SuperLatticeDissipationFD3D : public SuperLatticeF3D<T,DESCRIPTOR> {
209private:
211 const UnitConverter<T,DESCRIPTOR>& _converter;
212public:
213 SuperLatticeDissipationFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber, const UnitConverter<T,DESCRIPTOR>& converter);
214};
215
216template <typename T, typename DESCRIPTOR>
218private:
219 BlockF3D<T>& _blockVeloGrad;
220 const UnitConverter<T,DESCRIPTOR>& _converter;
221public:
223 bool operator() (T output[], const int input[]) override;
224};
225
228template <typename T, typename DESCRIPTOR>
230private:
232 const UnitConverter<T,DESCRIPTOR>& _converter;
233public:
234 SuperLatticePhysDissipationFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber, const UnitConverter<T,DESCRIPTOR>& converter);
235};
236
237template <typename T, typename DESCRIPTOR>
239private:
240 BlockF3D<T>& _blockVeloGrad;
241 const UnitConverter<T,DESCRIPTOR>& _converter;
242 std::function<T(Cell<T,DESCRIPTOR>&)> _effectiveOmegaF;
243public:
245 const UnitConverter<T,DESCRIPTOR>& converter, std::function<T(Cell<T,DESCRIPTOR>&)> effectiveOmegaF);
246 bool operator() (T output[], const int input[]) override;
247};
248
251template <typename T, typename DESCRIPTOR>
253private:
255 const UnitConverter<T,DESCRIPTOR>& _converter;
256public:
257 SuperLatticePhysEffectiveDissipationFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber,
258 const UnitConverter<T,DESCRIPTOR>& converter, std::function<T(Cell<T,DESCRIPTOR>&)> effectiveOmegaF);
259};
260
261template <typename T, typename DESCRIPTOR>
262class BlockLatticeVorticityFD3D : public BlockLatticeF3D<T,DESCRIPTOR> {
263private:
264 BlockF3D<T>& _blockVeloGrad;
265public:
267 bool operator() (T output[], const int input[]);
268};
269
272template <typename T, typename DESCRIPTOR>
273class SuperLatticeVorticityFD3D : public SuperLatticeF3D<T,DESCRIPTOR> {
274private:
276public:
277 SuperLatticeVorticityFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber);
278};
279
280template <typename T, typename DESCRIPTOR>
281class BlockLatticePhysVorticityFD3D : public BlockLatticeF3D<T,DESCRIPTOR> {
282private:
283 BlockF3D<T>& _blockVeloGrad;
284 const UnitConverter<T,DESCRIPTOR>& _converter;
285public:
287 bool operator() (T output[], const int input[]);
288};
289
292template <typename T, typename DESCRIPTOR>
293class SuperLatticePhysVorticityFD3D : public SuperLatticeF3D<T,DESCRIPTOR> {
294private:
296 const UnitConverter<T,DESCRIPTOR>& _converter;
297public:
298 SuperLatticePhysVorticityFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber, const UnitConverter<T,DESCRIPTOR>& converter);
299};
300
302template <typename T, typename DESCRIPTOR>
303class BlockLatticePhysEnstrophyFD3D : public BlockLatticeF3D<T,DESCRIPTOR> {
304private:
305 BlockF3D<T>& _blockVeloGrad;
306 const UnitConverter<T,DESCRIPTOR>& _converter;
307public:
309 bool operator() (T output[], const int input[]);
310};
311
312template <typename T, typename DESCRIPTOR>
313class SuperLatticePhysEnstrophyFD3D : public SuperLatticeF3D<T,DESCRIPTOR> {
314private:
316 const UnitConverter<T,DESCRIPTOR>& _converter;
317public:
318 SuperLatticePhysEnstrophyFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber, const UnitConverter<T,DESCRIPTOR>& converter);
319};
320
321template <typename T, typename DESCRIPTOR>
322class BlockLatticePhysStressFD3D : public BlockLatticeF3D<T,DESCRIPTOR> {
323private:
324 BlockF3D<T>& _blockStrainRate;
325 const UnitConverter<T,DESCRIPTOR>& _converter;
326public:
328 bool operator() (T output[], const int input[]);
329};
330
333template <typename T, typename DESCRIPTOR>
334class SuperLatticePhysStressFD3D : public SuperLatticeF3D<T,DESCRIPTOR> {
335private:
337 const UnitConverter<T,DESCRIPTOR>& _converter;
338public:
339 SuperLatticePhysStressFD3D(SuperGeometry<T,3>& sGeometry, SuperLattice<T,DESCRIPTOR>& sLattice, std::list<int>& matNumber, const UnitConverter<T,DESCRIPTOR>& converter);
340};
341
343template <typename T, typename DESCRIPTOR>
345private:
346 BlockF3D<T>& _blockVelocity;
347
348public:
350 bool operator() (T output[], const int input[]);
351};
352
353template <typename T, typename DESCRIPTOR>
355private:
357 const UnitConverter<T,DESCRIPTOR>& _converter;
358public:
360};
361
362/*
363template <typename T, typename DESCRIPTOR>
364class BlockLatticeSigmaADM3D : public BlockLatticeF3D<T,DESCRIPTOR> {
365protected:
366public:
367 BlockLatticeSigmaADM3D(BlockLattice<T,DESCRIPTOR>& blockLattice);
368 bool operator() (T output[], const int input[]);
369};
370
373template <typename T, typename DESCRIPTOR>
374class SuperLatticeSigmaADM3D : public SuperLatticeF3D<T,DESCRIPTOR> {
375protected:
376public:
377 SuperLatticeSigmaADM3D(SuperLattice<T,DESCRIPTOR>& sLattice);
378 bool operator() (T output[], const int input[]);
379};
380*/
381
382} // end namespace olb
383
384#endif
385
386
represents all functors that operate on a cuboid in general, mother class of BlockLatticeF,...
functor that returns pointwise the turbulent, kinetic energy
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
BlockIsotropicHomogeneousTKE3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &f)
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
BlockLatticeDissipationFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor, const UnitConverter< T, DESCRIPTOR > &converter)
BlockLatticeExternalVelocityGradientFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor)
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
represents all functors that operate on a DESCRIPTOR in general, e.g. getVelocity(),...
BlockLatticePhysDissipationFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor, const UnitConverter< T, DESCRIPTOR > &_converter)
bool operator()(T output[], const int input[]) override
has to be implemented for 'every' derived class
BlockLatticePhysEffectiveDissipationFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor, const UnitConverter< T, DESCRIPTOR > &converter, std::function< T(Cell< T, DESCRIPTOR > &)> effectiveOmegaF)
bool operator()(T output[], const int input[]) override
has to be implemented for 'every' derived class
functor that returns pointwise the enstrophy
BlockLatticePhysEnstrophyFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockVeloGrad, const UnitConverter< T, DESCRIPTOR > &converter)
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
BlockLatticePhysStrainRateFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor, const UnitConverter< T, DESCRIPTOR > &converter)
BlockLatticePhysStressFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor, const UnitConverter< T, DESCRIPTOR > &converter)
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
bool operator()(T output[], const int input[]) override
has to be implemented for 'every' derived class
BlockLatticePhysVelocityGradientFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor, const UnitConverter< T, DESCRIPTOR > &converter)
BlockLatticePhysVorticityFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor, const UnitConverter< T, DESCRIPTOR > &converter)
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
BlockLatticeStrainRateFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor)
functor to get pointwise explicit filtering on local lattice, if globIC is not on the local processor...
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
BlockLatticeVelocityGradientFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor)
BlockLatticeVorticityFD3D(BlockLattice< T, DESCRIPTOR > &blockLattice, BlockF3D< T > &blockFunctor)
bool operator()(T output[], const int input[])
has to be implemented for 'every' derived class
Platform-abstracted block lattice for external access and inter-block interaction.
Highest-level interface to Cell data.
Definition cell.h:148
IndicatorF3D is an application from .
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
Representation of a statistic for a parallel 2D geometry.
SuperIsotropicHomogeneousTKE3D(SuperLattice< T, DESCRIPTOR > &sLattice, const UnitConverter< T, DESCRIPTOR > &converter)
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticeDissipationFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber, const UnitConverter< T, DESCRIPTOR > &converter)
functor to get pointwise velocity on local lattice
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticeExternalVelocityGradientFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber)
represents all functors that operate on a SuperLattice in general, e.g. getVelocity(),...
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticePhysDissipationFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber, const UnitConverter< T, DESCRIPTOR > &converter)
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticePhysEffectiveDissipationFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber, const UnitConverter< T, DESCRIPTOR > &converter, std::function< T(Cell< T, DESCRIPTOR > &)> effectiveOmegaF)
SuperLatticePhysEnstrophyFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber, const UnitConverter< T, DESCRIPTOR > &converter)
represents all functors that operate on a DESCRIPTOR with output in Phys, e.g. physVelocity(),...
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticePhysStrainRateFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber, const UnitConverter< T, DESCRIPTOR > &converter)
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticePhysStressFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber, const UnitConverter< T, DESCRIPTOR > &converter)
functor to get pointwise phys velocity on local lattice
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticePhysVelocityGradientFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber, const UnitConverter< T, DESCRIPTOR > &converter)
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticePhysVorticityFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber, const UnitConverter< T, DESCRIPTOR > &converter)
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticeStrainRateFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber)
functor to get pointwise velocity on local lattice
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticeVelocityGradientFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber)
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
SuperLatticeVorticityFD3D(SuperGeometry< T, 3 > &sGeometry, SuperLattice< T, DESCRIPTOR > &sLattice, std::list< int > &matNumber)
functor to get pointwise yPlus from rho, shear stress and local density on local lattices
bool operator()(T output[], const int input[]) override
SuperLatticeYplus3D(SuperLattice< T, DESCRIPTOR > &sLattice, const UnitConverter< T, DESCRIPTOR > &converter, SuperGeometry< T, 3 > &superGeometry, IndicatorF3D< T > &indicator, const int material)
Super class maintaining block lattices for a cuboid decomposition.
functor to get pointwise explicit filter on local lattice, if globIC is not on the local processor,...
Conversion between physical and lattice units, as well as discretization.
Top level namespace for all of OpenLB.
Unit conversion handling – header file.