MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
lbbndcnddxqy.h
Go to the documentation of this file.
1// Copyright (C) 2024 The m-AIA AUTHORS
2//
3// This file is part of m-AIA (https://git.rwth-aachen.de/aia/m-AIA/m-AIA)
4//
5// SPDX-License-Identifier: LGPL-3.0-only
6
7#ifndef LBBNDCNDDXQY_H
8#define LBBNDCNDDXQY_H
9
10#include <random>
11#include "lbbndcnd.h"
12#include "lbconstants.h"
13#include "lblatticedescriptor.h"
14#include "lbsolverdxqy.h"
15
16using namespace lbconstants;
17
18template <MInt nDim, MInt nDist, class SysEqn>
19class LbBndCndDxQy : public LbBndCnd<nDim> {
20 const SysEqn m_sysEqn{};
21
22 public:
23 // Add fields used from template base class to avoid calling with 'this->'
24 using LbBndCnd<nDim>::m_solverId;
26 using LbBndCnd<nDim>::m_rho1;
27 using LbBndCnd<nDim>::m_rho2;
29 using LbBndCnd<nDim>::m_bndCells;
30 using LbBndCnd<nDim>::m_bndCndIds;
31 using LbBndCnd<nDim>::m_rhoLast;
32 using LbBndCnd<nDim>::m_lRho;
34 using LbBndCnd<nDim>::m_bndCndSegIds;
36 using LbBndCnd<nDim>::m_bndCndOffsets;
39 using LbBndCnd<nDim>::m_gridCutTest;
46 using LbBndCnd<nDim>::m_Ma;
48 using LbBndCnd<nDim>::m_blasius_delta;
49 using LbBndCnd<nDim>::m_blasius;
50 using LbBndCnd<nDim>::m_nu;
51 using LbBndCnd<nDim>::PV;
52 using LbBndCnd<nDim>::m_methodId;
54 using LbBndCnd<nDim>::m_exDirs;
55 using LbBndCnd<nDim>::m_exWeights;
56 using LbBndCnd<nDim>::m_omega;
58 using LbBndCnd<nDim>::m_domainLength;
59 using LbBndCnd<nDim>::m_BCComm;
60 using LbBndCnd<nDim>::m_BCWallMBComm;
63 using LbBndCnd<nDim>::m_Re;
64 using LbBndCnd<nDim>::m_deltaRho;
65 using LbBndCnd<nDim>::m_maxDeltaRho;
66 using LbBndCnd<nDim>::m_ReLast;
67 using LbBndCnd<nDim>::m_BCneighbors;
68 using LbBndCnd<nDim>::m_noBCNeighbors;
73 using LbBndCnd<nDim>::m_forceFile;
76 using LbBndCnd<nDim>::m_hasLocalReCut;
79 using LbBndCnd<nDim>::m_localReCutRe;
81 using LbBndCnd<nDim>::m_firstBCinComm;
93 using LbBndCnd<nDim>::m_bndNormals;
94 using LbBndCnd<nDim>::m_latentHeat;
96
97 // Introduce cell type from parent class
98 using Cell = typename LbBndCnd<nDim>::Cell;
100
101 template <MInt nDim_, MInt nDist_, class SysEqn_>
102 friend class LbSolverDxQy;
103
104 private:
107
108#ifdef WAR_NVHPC_PSTL
111#endif
114 std::vector<MInt> noMissDistBnd;
115 std::vector<std::vector<MFloat>> noMissDistBndWeighted;
116 std::vector<MInt> ibbBndIds;
117
118 // mucosa model
119 struct {
132
135 MFloat** m_mucousDist = nullptr;
136 MFloat** m_fluidDist = nullptr;
137
139 inline void calculateWallInterface(MInt cellId, MFloat* wallConc, MFloat* wallTemp);
140
141 public:
143 virtual ~LbBndCndDxQy();
144
145 constexpr SysEqn sysEqn() const { return m_sysEqn; }
146
147 protected:
150 void addWallDistanceFieldToOutputFile(ParallelIo& parallelIo, const MBool writeHeader,
151 const MBool writeData) override;
152 void initVortices(MInt /*index*/){};
153 void writeBoundaryVTK(MFloat** vertices, MInt num, MInt segmentId);
155 MFloat** allOwnersGetBoundaryVertices(MInt segmentId, MInt* num);
156
157 void bc0(MInt index);
158
159 void bc66666(MInt set);
160 void bc66668(MInt set);
161
162 void bc20000(MInt index);
163 void bc20001(MInt index);
164 void bc20002(MInt index);
165 void bc20003(MInt index);
166 void bc20004(MInt index);
167 void bc20005(MInt index);
168 void bc20020(MInt index);
169 void bc20022(MInt index);
170 void bc20023(MInt index);
171 void bc20024(MInt index);
172 void bc20025(MInt index);
173 void bc20026(MInt index);
174 void bc20027(MInt index);
175 void bc20030(MInt index);
176 template <MInt direction>
177 void slidingWall(MInt index);
178 void bc20050(MInt index) { slidingWall<0>(index); };
179 void bc20051(MInt index) { slidingWall<1>(index); };
180 void bc20052(MInt index) { slidingWall<2>(index); };
181 void bc20053(MInt index) { slidingWall<3>(index); };
182 void bc20054(MInt index) { slidingWall<4>(index); };
183 void bc20055(MInt index) { slidingWall<5>(index); };
184
185 void bc20220(MInt index);
186
187 void bc20226(MInt index) { heatFluxBc(index, 0); };
188 void bc20227(MInt index) { heatFluxBc(index, 1); };
189 void bc20228(MInt index) { heatFluxBc(index, 2); };
190 void heatFluxBc(MInt index, MInt bcMode);
192
193 void bc20230(MInt index);
194
195 void bc20501(MInt index);
196 void bc20501_init(MInt index);
197
198 void bc10000(MInt index);
199 void bc10001(MInt index);
200 void bc10002(MInt index);
201 void bc10003(MInt index);
202 void bc10004(MInt index);
203 void bc10010(MInt index);
204 void bc10020(MInt index);
205 void bc10022(MInt index);
206 void bc40000(MInt index);
207 void bc40020(MInt index);
208 void dnt(MInt index, MInt direction);
209 void bc40030(MInt index);
210 void bc40130(MInt index);
211 void bc10050(MInt index);
212 void bc10060(MInt index);
213 void bc10061(MInt index);
214
215 void bc10090(MInt index);
216
217 void bc10070(MInt index);
218 void bc10080(MInt index);
219 void bc10111(MInt index);
220 void bc40070(MInt index);
221 void bc40071(MInt index);
222 void bc40072(MInt index);
223 void recalcRho(MInt index);
224 void bc40073(MInt index);
225 void bc40080(MInt index);
226 void bc40081(MInt index);
227 void bc40082(MInt index);
229
230 void bc40100(MInt index);
231 void bc40110(MInt index);
232
233 void bc40120(MInt index);
234
235 void bc30000(MInt index);
236
237 template <MUint type>
238 inline void calcCharValues(const MInt index, const MInt bndCellId, MFloat& rho_b, MFloat* u_b);
239 inline void calcCharValuesOnFace(const MInt index, const MInt direction, const MInt bndCellId, MFloat& rho_b,
240 MFloat* u_b);
241 void charVelocity(MInt index, MInt direction);
242 void bc10040(MInt index) { charVelocity(index, 0); };
243 void bc10041(MInt index) { charVelocity(index, 1); };
244 void bc10042(MInt index) { charVelocity(index, 2); };
245 void bc10043(MInt index) { charVelocity(index, 3); };
246 void bc10044(MInt index) { charVelocity(index, 4); };
247 void bc10045(MInt index) { charVelocity(index, 5); };
248 void bc10046(MInt index);
249
250 void charPressure(MInt index, MInt direction);
251 void bc40040(MInt index) { charPressure(index, 0); };
252 void bc40041(MInt index) { charPressure(index, 1); };
253 void bc40042(MInt index) { charPressure(index, 2); };
254 void bc40043(MInt index) { charPressure(index, 3); };
255 void bc40044(MInt index) { charPressure(index, 4); };
256 void bc40045(MInt index) { charPressure(index, 5); };
257 void bc40046(MInt index);
258
259 void charPressure2(MInt index, MInt direction);
260 void bc40050(MInt index) { charPressure2(index, 0); };
261 void bc40051(MInt index) { charPressure2(index, 1); };
262 void bc40052(MInt index) { charPressure2(index, 2); };
263 void bc40053(MInt index) { charPressure2(index, 3); };
264 void bc40054(MInt index) { charPressure2(index, 4); };
265 void bc40055(MInt index) { charPressure2(index, 5); };
266
267 template <MInt direction>
268 void outflow(MInt index);
269 void bc30010(MInt index) { outflow<0>(index); };
270 void bc30011(MInt index) { outflow<1>(index); };
271 void bc30012(MInt index) { outflow<2>(index); };
272 void bc30013(MInt index) { outflow<3>(index); };
273 void bc30014(MInt index) { outflow<4>(index); };
274 void bc30015(MInt index) { outflow<5>(index); };
275
276 template <MBool thermal>
277 void slipFlow(MInt index);
278 void bc30020(MInt index) { slipFlow<false>(index); };
279 void bc30021(MInt /*index*/) { TERMM(1, "Only use 3020 BC, not 3021"); };
280 void bc30022(MInt /*index*/) { TERMM(1, "Only use 3020 BC, not 3022"); };
281 void bc30023(MInt /*index*/) { TERMM(1, "Only use 3020 BC, not 3023"); };
282 void bc30024(MInt /*index*/) { TERMM(1, "Only use 3020 BC, not 3024"); };
283 void bc30025(MInt /*index*/) { TERMM(1, "Only use 3020 BC, not 3025"); };
284
285 template <MInt direction>
286 void outflowLinear(MInt index);
287 void bc30030(MInt index) { outflowLinear<0>(index); };
288 void bc30031(MInt index) { outflowLinear<1>(index); };
289 void bc30032(MInt index) { outflowLinear<2>(index); };
290 void bc30033(MInt index) { outflowLinear<3>(index); };
291 void bc30034(MInt index) { outflowLinear<4>(index); };
292 void bc30035(MInt index) { outflowLinear<5>(index); };
293
294 void bc30040(MInt index) { slipFlow<true>(index); };
295 void bc30041(MInt /*index*/) { TERMM(1, "Only use 3040 BC, not 3041"); };
296 void bc30042(MInt /*index*/) { TERMM(1, "Only use 3040 BC, not 3042"); };
297 void bc30043(MInt /*index*/) { TERMM(1, "Only use 3040 BC, not 3043"); };
298 void bc30044(MInt /*index*/) { TERMM(1, "Only use 3040 BC, not 3044"); };
299 void bc30045(MInt /*index*/) { TERMM(1, "Only use 3040 BC, not 3045"); };
300
301 void pab(MInt index);
302 void bc40060(MInt index) { pab(index); };
303
304 void writeBCOutput(MInt index);
305
306 void interpolatedBounceBackSingleSpecies(const MInt cellId, const MFloat* const uW);
307 void interpolatedBounceBackSingleSpeciesThermal(const MInt cellId, const MFloat* const wTPtr, const MFloat* const uW);
308 void interpolatedBounceBackSingleSpeciesThermal(const MInt cellId, const MFloat wT, const MFloat* const uW) {
309 std::array<MFloat, nDist> wTPtr{};
310 for(MInt d = 0; d < nDist; d++) {
311 wTPtr[d] = wT;
312 }
313 interpolatedBounceBackSingleSpeciesThermal(cellId, wTPtr.data(), uW);
314 };
315 void interpolatedBounceBackSingleSpeciesTransport(const MInt cellId, const MFloat* const wCPtr,
316 const MFloat* const uW);
317 void interpolatedBounceBackSingleSpeciesTransport(const MInt cellId, const MFloat wC, const MFloat* const uW) {
318 std::array<MFloat, nDist> wCPtr{};
319 for(MInt d = 0; d < nDist; d++) {
320 wCPtr[d] = wC;
321 }
322 interpolatedBounceBackSingleSpeciesTransport(cellId, wCPtr.data(), uW);
323 };
324 void interpolatedBounceBackSingleSpeciesThermalFlux(const MInt cellId, const MFloat qT, MInt bcIndex);
325 inline void calculateEqDistsWallSingleSpecies(const MInt pCellId);
331 inline void extrapolateVariable(const MInt index, const MInt pCellId, const MInt var, MFloat* const p_var);
332 inline void extrapolateVelocities(MInt index, const MInt pCellId, MFloat* l_uu);
333 inline void incrementForces(const MInt cellId, const MInt j, const MFloat* uW, MFloat* forces);
334 inline void incrementForces(const MInt cellId, const MInt mbCellId, const MInt j, const MFloat* uW);
335 void getBoundaryVelocityMb(const MInt cellId, MFloat* uW);
336 void getBoundaryVelocity(const MInt index, MFloat* uW);
338 inline MFloat firstMomentSourceTerm(const MFloat* const uW, const MFloat rho, const MInt dist);
339 template <MInt mode>
340 MFloat zerothMomentSourceTerm(const MInt pCellId, const MInt dist, const MFloat var, const MFloat* uW);
341
342 inline void calculateEqDistsTotalEnergy(const MInt pCellId, const MFloat l_rho, const MFloat squared_velocity,
343 const MFloat l_uu[nDim], const MFloat l_t);
344 inline void calculateEqDistsTransport(const MInt pCellId, const MFloat l_rho, const MFloat squared_velocity,
345 const MFloat l_uu[nDim], MFloat l_c);
346 inline void interpolatedBounceBackMb_Bouzidi_lin(const MInt cellIndex, const MInt set);
347 inline void interpolatedBounceBackMb_Bouzidi_qua(const MInt cellIndex, const MInt set);
348 inline void interpolatedBounceBackMb_Yu_qua(const MInt cellIndex, const MInt set);
349 inline void interpolatedBounceBackMb_Bouzidi_lin_thermal(const MInt cellIndex, const MInt set);
350 inline void interpolatedBounceBackMb_Bouzidi_lin_transport(const MInt cellIndex, const MInt set);
351
352 inline void interpolatedAntiBounceBackMb_Bouzidi_qua(const MInt cellIndex, const MInt set);
353
354 public:
356 void refillEmergedCell(const MInt /*pCellId*/);
359 inline MFloat getDistanceMb(const MInt cellId, const MInt mbCellId, const MInt distId) {
360 const MFloat cellLength = m_solver->c_cellLengthAtLevel(m_solver->a_level(cellId));
361
362 MFloat q;
363 if(distId < Ld::distFld(0)) {
364 q = m_boundaryCellsMb.distance(mbCellId, distId) / cellLength;
365 } else if(distId < (Ld::distFld(0) + Ld::distFld(1))) {
366 q = m_boundaryCellsMb.distance(mbCellId, distId) / (SQRT2 * cellLength);
367 } else {
368 q = m_boundaryCellsMb.distance(mbCellId, distId) / (SQRT3 * cellLength);
369 }
370 return q;
371 }
372};
373#endif
GridCell
Grid cell Property Labels.
void slidingWall(MInt index)
void heatFluxBc(MInt index, MInt bcMode)
void bc30013(MInt index)
Definition: lbbndcnddxqy.h:272
void bc20004(MInt index)
LbBndCndDxQy(LbSolver< nDim > *solver)
void writeBoundaryVTK(MFloat **vertices, MInt num, MInt segmentId)
Writes the rim of a boundary as VTP to file.
void bc20005(MInt index)
void bc40045(MInt index)
Definition: lbbndcnddxqy.h:256
void bc20228(MInt index)
Definition: lbbndcnddxqy.h:189
void bc10004(MInt index)
void bc20054(MInt index)
Definition: lbbndcnddxqy.h:182
void bc20025(MInt index)
void bc10000(MInt index)
void bc10090(MInt index)
void bc20026(MInt index)
void bc40052(MInt index)
Definition: lbbndcnddxqy.h:262
void recalcRho(MInt index)
void bc20050(MInt index)
Definition: lbbndcnddxqy.h:178
std::vector< MInt > ibbBndIds
Definition: lbbndcnddxqy.h:116
void refillEmergedCell(const MInt)
void bc20000(MInt index)
void bc20051(MInt index)
Definition: lbbndcnddxqy.h:179
void parabolicInflow(MInt index)
void bc20002(MInt index)
void extrapolateVelocities(MInt index, const MInt pCellId, MFloat *l_uu)
void bc10080(MInt index)
MFloat mucosaThickness
Definition: lbbndcnddxqy.h:122
void bc40046(MInt index)
void bc20030(MInt index)
void bc30033(MInt index)
Definition: lbbndcnddxqy.h:290
void bc10046(MInt index)
void bc40120(MInt index)
void bc0(MInt index)
void bc40042(MInt index)
Definition: lbbndcnddxqy.h:253
void bc20022(MInt index)
void charPressure2(MInt index, MInt direction)
void bc10003(MInt index)
void bc40020(MInt index)
void bc40043(MInt index)
Definition: lbbndcnddxqy.h:254
void bc40000(MInt index)
void slipFlow(MInt index)
void charPressure(MInt index, MInt direction)
void bc40072(MInt index)
void refillEmergedCellNormalExtrapolationLinear(const MInt)
void bc40044(MInt index)
Definition: lbbndcnddxqy.h:255
void bc40073(MInt index)
void bc30042(MInt)
Definition: lbbndcnddxqy.h:296
void calculateEqDistsTransport(const MInt pCellId, const MFloat l_rho, const MFloat squared_velocity, const MFloat l_uu[nDim], MFloat l_c)
void dnt(MInt index, MInt direction)
void interpolatedBounceBackSingleSpeciesThermal(const MInt cellId, const MFloat *const wTPtr, const MFloat *const uW)
void bc10070(MInt index)
void bc30022(MInt)
Definition: lbbndcnddxqy.h:280
void bc40110(MInt index)
MFloat refCondF
Definition: lbbndcnddxqy.h:129
void calculateWallForcesMb(MInt set)
MFloat refDiff
Definition: lbbndcnddxqy.h:128
void bc40081(MInt index)
void bc30023(MInt)
Definition: lbbndcnddxqy.h:281
void bc40080(MInt index)
void interpolatedBounceBackSingleSpeciesTransport(const MInt cellId, const MFloat wC, const MFloat *const uW)
Definition: lbbndcnddxqy.h:317
void bc30034(MInt index)
Definition: lbbndcnddxqy.h:291
void bc20501_init(MInt index)
void calculateSublayerDistances(MInt index)
MFloat firstMomentSourceTerm(const MFloat *const uW, const MFloat rho, const MInt dist)
Momentum source term used in bounce back schemes for moving boundaries.
void interpolatedBounceBackMb_Bouzidi_qua(const MInt cellIndex, const MInt set)
Interpolated bounce back for moving walls using the quadratic BFL scheme.
void getBoundaryVelocity(const MInt index, MFloat *uW)
Reads boundary velocity from properties.
void bc30032(MInt index)
Definition: lbbndcnddxqy.h:289
std::vector< std::vector< MFloat > > noMissDistBndWeighted
Definition: lbbndcnddxqy.h:115
void bc40082(MInt index)
void getBoundaryVelocityMb(const MInt cellId, MFloat *uW)
Reads boundary velocity from the moving boundary cell collector.
void bc30040(MInt index)
Definition: lbbndcnddxqy.h:294
void calculateWallForces(MInt index)
void bc10022(MInt index)
void calculateEqDistsTotalEnergy(const MInt pCellId, const MFloat l_rho, const MFloat squared_velocity, const MFloat l_uu[nDim], const MFloat l_t)
void bc30035(MInt index)
Definition: lbbndcnddxqy.h:292
void bc20501(MInt index)
void bc30014(MInt index)
Definition: lbbndcnddxqy.h:273
void calculateEqDistsWallSingleSpeciesThermal(const MInt pCellId, MFloat wT)
void outflow(MInt index)
MFloat getBoundaryTemperature(const MInt index)
Reads boundary temperature from properties.
void interpolatedBounceBackMb_Bouzidi_lin_thermal(const MInt cellIndex, const MInt set)
void calculateWallDistances2D()
void bc20220(MInt index)
void bc40055(MInt index)
Definition: lbbndcnddxqy.h:265
const SysEqn m_sysEqn
Definition: lbbndcnddxqy.h:20
void calculateWallInterface(MInt cellId, MFloat *wallConc, MFloat *wallTemp)
void bc30000(MInt index)
void(LbBndCndDxQy< nDim, nDist, SysEqn >::* bounceBackFunctionMb)(const MInt cellIndex, const MInt set)
Definition: lbbndcnddxqy.h:106
void bc30020(MInt index)
Definition: lbbndcnddxqy.h:278
void extrapolateVariable(const MInt index, const MInt pCellId, const MInt var, MFloat *const p_var)
void bc30045(MInt)
Definition: lbbndcnddxqy.h:299
void interpolatedBounceBackSingleSpecies(const MInt cellId, const MFloat *const uW)
MFloat getDistanceMb(const MInt cellId, const MInt mbCellId, const MInt distId)
Definition: lbbndcnddxqy.h:359
void bc10002(MInt index)
void bc30012(MInt index)
Definition: lbbndcnddxqy.h:271
void bc20230(MInt index)
MFloat ** m_mucousDist
Definition: lbbndcnddxqy.h:135
LbSolverDxQy< nDim, nDist, SysEqn > * m_solver
Definition: lbbndcnddxqy.h:330
void bc20024(MInt index)
void interpolatedBounceBackMb_Yu_qua(const MInt cellIndex, const MInt set)
Interpolated bounce back for moving walls using the quadratic scheme by Yu et al.
void bc40050(MInt index)
Definition: lbbndcnddxqy.h:260
MInt ** m_distIntersectionElementId
Definition: lbbndcnddxqy.h:134
void bc20227(MInt index)
Definition: lbbndcnddxqy.h:188
void interpolatedBounceBackSingleSpeciesTransport(const MInt cellId, const MFloat *const wCPtr, const MFloat *const uW)
void bc10020(MInt index)
void bc20020(MInt index)
void bc40054(MInt index)
Definition: lbbndcnddxqy.h:264
void bc40060(MInt index)
Definition: lbbndcnddxqy.h:302
void bc10111(MInt index)
void bc30030(MInt index)
Definition: lbbndcnddxqy.h:287
MFloat zerothMomentSourceTerm(const MInt pCellId, const MInt dist, const MFloat var, const MFloat *uW)
void bc20027(MInt index)
void bc10050(MInt index)
void bc30025(MInt)
Definition: lbbndcnddxqy.h:283
void interpolatedBounceBackMb_Bouzidi_lin_transport(const MInt cellIndex, const MInt set)
MInt bounceBackSchemeMb
Definition: lbbndcnddxqy.h:105
void bc20053(MInt index)
Definition: lbbndcnddxqy.h:181
void bc10042(MInt index)
Definition: lbbndcnddxqy.h:244
void bc40030(MInt index)
void bc20052(MInt index)
Definition: lbbndcnddxqy.h:180
void bc40070(MInt index)
void calculateEqDistsWallSingleSpeciesTransport(const MInt pCellId, MFloat wC)
void extrapolateVelocitiesMb()
void bc10060(MInt index)
void bc40130(MInt index)
void bc66666(MInt set)
void bc30011(MInt index)
Definition: lbbndcnddxqy.h:270
void calcCharValuesOnFace(const MInt index, const MInt direction, const MInt bndCellId, MFloat &rho_b, MFloat *u_b)
void bc40072_40082_init(MInt index)
void bc30031(MInt index)
Definition: lbbndcnddxqy.h:288
void bc10010(MInt index)
MFloat ** m_distances
Definition: lbbndcnddxqy.h:109
void initVortices(MInt)
Definition: lbbndcnddxqy.h:152
void interpolatedBounceBackSingleSpeciesThermalFlux(const MInt cellId, const MFloat qT, MInt bcIndex)
void bc40071(MInt index)
void bc30043(MInt)
Definition: lbbndcnddxqy.h:297
void bc30015(MInt index)
Definition: lbbndcnddxqy.h:274
void bc10041(MInt index)
Definition: lbbndcnddxqy.h:243
void bc20003(MInt index)
void pab(MInt index)
void bc40100(MInt index)
void calculateEqDistsWallSingleSpecies(const MInt pCellId)
void incrementForces(const MInt cellId, const MInt j, const MFloat *uW, MFloat *forces)
void charVelocity(MInt index, MInt direction)
void bc40041(MInt index)
Definition: lbbndcnddxqy.h:252
void bc20226(MInt index)
Definition: lbbndcnddxqy.h:187
void interpolatedBounceBackMb_Bouzidi_lin(const MInt cellIndex, const MInt set)
Interpolated bounce back for moving walls using the linear BFL scheme.
MInt m_bounceBackFunctionMbCase
Definition: lbbndcnddxqy.h:110
void outflowLinear(MInt index)
void bc10043(MInt index)
Definition: lbbndcnddxqy.h:245
void bc30024(MInt)
Definition: lbbndcnddxqy.h:282
MFloat condRatio
Definition: lbbndcnddxqy.h:123
MFloat ** allOwnersGetBoundaryVertices(MInt segmentId, MInt *num)
Obtain all boundary vertices for a given segmentId.
void interpolatedAntiBounceBackMb_Bouzidi_qua(const MInt cellIndex, const MInt set)
void calculateWallDistances()
calculates the intersection point between the boundary wall and the trajectories of the distribution ...
MFloat m_zeroInflowVelocity
Definition: lbbndcnddxqy.h:112
void addWallDistanceFieldToOutputFile(ParallelIo &parallelIo, const MBool writeHeader, const MBool writeData) override
void refillEmergedCellNormalExtrapolationQuadratic(const MInt)
MInt m_refillMethodOrder
Definition: lbbndcnddxqy.h:113
void bc30010(MInt index)
Definition: lbbndcnddxqy.h:269
constexpr SysEqn sysEqn() const
Definition: lbbndcnddxqy.h:145
void bc10040(MInt index)
Definition: lbbndcnddxqy.h:242
typename LbBndCnd< nDim >::Cell Cell
Definition: lbbndcnddxqy.h:98
virtual ~LbBndCndDxQy()
Destructor for the nDim/nDist specific boundary condition.
void bc30044(MInt)
Definition: lbbndcnddxqy.h:298
void bc10044(MInt index)
Definition: lbbndcnddxqy.h:246
void calcCharValues(const MInt index, const MInt bndCellId, MFloat &rho_b, MFloat *u_b)
void bc30041(MInt)
Definition: lbbndcnddxqy.h:295
void writeBCOutput(MInt index)
void bc10001(MInt index)
void bc30021(MInt)
Definition: lbbndcnddxqy.h:279
void bc40040(MInt index)
Definition: lbbndcnddxqy.h:251
MFloat ** m_oldWallTemp
Definition: lbbndcnddxqy.h:133
void bc20001(MInt index)
void bc20023(MInt index)
void bc20055(MInt index)
Definition: lbbndcnddxqy.h:183
void bcIBBNeumannInit(MInt index)
void bc40053(MInt index)
Definition: lbbndcnddxqy.h:263
std::vector< MInt > noMissDistBnd
Definition: lbbndcnddxqy.h:114
void bc40051(MInt index)
Definition: lbbndcnddxqy.h:261
void bc66668(MInt set)
MFloat diffRatio
Definition: lbbndcnddxqy.h:124
MFloat ** m_fluidDist
Definition: lbbndcnddxqy.h:136
struct LbBndCndDxQy::@17 m_mucosaModel
void interpolatedBounceBackSingleSpeciesThermal(const MInt cellId, const MFloat wT, const MFloat *const uW)
Definition: lbbndcnddxqy.h:308
void bc10061(MInt index)
void bc10045(MInt index)
Definition: lbbndcnddxqy.h:247
MFloat m_ReLast
Definition: lbbndcnd.h:384
MPI_Comm m_BCWallMBComm
Definition: lbbndcnd.h:412
MInt m_noReactivatedCells
Definition: lbbndcnd.h:425
MFloat ** m_blasius
Definition: lbbndcnd.h:166
MBool m_calcWallForces
Definition: lbbndcnd.h:97
MInt * m_inOutSegmentsIds
Definition: lbbndcnd.h:91
std::vector< MInt > m_localReCutCells
Definition: lbbndcnd.h:418
MInt m_firstBCinComm
Definition: lbbndcnd.h:424
MInt m_noPeriodicSegments
Definition: lbbndcnd.h:87
MPrimitiveVariables< nDim > * PV
Definition: lbbndcnd.h:134
MInt m_currentTimeStep
Definition: lbbndcnd.h:388
std::vector< MInt > m_BCWallMBNeighbors
Definition: lbbndcnd.h:417
std::vector< LbGridBoundaryCell< nDim > > m_bndCells
Definition: lbbndcnd.h:130
MFloat m_blasius_delta
Definition: lbbndcnd.h:167
MInt m_noDistributions
Definition: lbbndcnd.h:136
MFloat m_maxDeltaRho
Definition: lbbndcnd.h:387
MInt * m_mapBndCndIdSegId
Definition: lbbndcnd.h:393
MString * m_BCOutputFileName
Definition: lbbndcnd.h:396
std::vector< MInt > m_bndCndIds
Definition: lbbndcnd.h:158
MInt m_lbNoMovingWalls
Definition: lbbndcnd.h:94
MInt m_localReCutInterval
Definition: lbbndcnd.h:421
MFloat * m_lbWallVelocity
Definition: lbbndcnd.h:96
MInt m_initialNoCells[3]
Definition: lbbndcnd.h:69
MFloat ** m_initialVelocityVecs
Definition: lbbndcnd.h:89
std::vector< std::vector< MInt > > m_BCneighbors
Definition: lbbndcnd.h:402
MInt * m_noBCNeighbors
Definition: lbbndcnd.h:401
MFloat m_rhoLast
Definition: lbbndcnd.h:385
MFloat m_Ma
Definition: lbbndcnd.h:141
MInt ** m_exDirs
Definition: lbbndcnd.h:125
MInt m_lbControlInflow
Definition: lbbndcnd.h:157
MString m_gridCutTest
Definition: lbbndcnd.h:132
MInt m_noInOutSegments
Definition: lbbndcnd.h:86
MString m_forceFile
Definition: lbbndcnd.h:416
std::vector< MInt > m_bndCndSegIds
Definition: lbbndcnd.h:160
MFloat m_deltaRho
Definition: lbbndcnd.h:383
MInt * m_segIdHeatedWalls
Definition: lbbndcnd.h:100
MbCellCollector m_boundaryCellsMb
Definition: lbbndcnd.h:57
MFloat m_localReCutRe
Definition: lbbndcnd.h:408
MFloat m_rho1
Definition: lbbndcnd.h:149
MFloat ** m_bndNormals
Definition: lbbndcnd.h:90
MFloat m_localReCutDiameter
Definition: lbbndcnd.h:409
MFloat m_referenceLength
Definition: lbbndcnd.h:145
MInt m_calcWallForcesInterval
Definition: lbbndcnd.h:98
MBool m_outputWallDistanceField
Definition: lbbndcnd.h:114
MFloat m_omega
physical non-dimensional reference length
Definition: lbbndcnd.h:140
MFloat m_domainLength
Definition: lbbndcnd.h:146
std::vector< MInt > m_mapSegIdsInOutCnd
Definition: lbbndcnd.h:161
MInt m_densityFluctuations
Definition: lbbndcnd.h:147
MInt m_methodId
Definition: lbbndcnd.h:137
MFloat m_nu
Definition: lbbndcnd.h:143
MFloat m_localReCutAdpPerc
Definition: lbbndcnd.h:422
MInt * m_totalNoBcCells
Definition: lbbndcnd.h:394
MInt m_lbNoHeatedWalls
Definition: lbbndcnd.h:99
MInt * m_segIdMovingWalls
Definition: lbbndcnd.h:95
MFloat m_lRho
Definition: lbbndcnd.h:386
MPI_Comm * m_BCComm
Definition: lbbndcnd.h:392
std::ofstream * m_BCResidualStream
Definition: lbbndcnd.h:404
MBool m_calcSublayerDist
Definition: lbbndcnd.h:174
MBool m_latentHeat
Definition: lbbndcnd.h:173
MBool m_hasLocalReCut
Definition: lbbndcnd.h:419
std::vector< MInt > m_bndCndOffsets
Definition: lbbndcnd.h:159
MInt m_solverId
index of the array where the boundary conditions are stored in
Definition: lbbndcnd.h:129
MFloat ** m_exWeights
Definition: lbbndcnd.h:126
MInt ** m_allDomainsHaveBC
Definition: lbbndcnd.h:399
MFloat m_pulsatileFrequency
Definition: lbbndcnd.h:170
MFloat m_rho2
Definition: lbbndcnd.h:150
MFloat m_Re
Definition: lbbndcnd.h:142
MFloat * m_lbWallTemperature
Definition: lbbndcnd.h:101
MInt * m_periodicSegmentsIds
Definition: lbbndcnd.h:92
std::map< MInt, MInt > m_boundaryCellMappingMb
Definition: lbbndcnd.h:71
MString m_interpolationDistMethod
Definition: lbbndcnd.h:113
MInt m_localReCutReportInterval
Definition: lbbndcnd.h:423
This class represents all LB models.
Definition: lbsolverdxqy.h:29
MFloat & distance(const MInt id, const MInt did)
Accessor for distances.
int32_t MInt
Definition: maiatypes.h:62
double MFloat
Definition: maiatypes.h:52
bool MBool
Definition: maiatypes.h:58
PARALLELIO_DEFAULT_BACKEND ParallelIo
Definition: parallelio.h:292
MFloat dist(const Point< DIM > &p, const Point< DIM > &q)
Definition: pointbox.h:54
LB lattice descriptor for arrays depending on D and Q.
static constexpr MInt distFld(MInt i)