VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
Grid3D.h
Go to the documentation of this file.
1//=======================================================================================
2// ____ ____ __ ______ __________ __ __ __ __
3// \ \ | | | | | _ \ |___ ___| | | | | / \ | |
4// \ \ | | | | | |_) | | | | | | | / \ | |
5// \ \ | | | | | _ / | | | | | | / /\ \ | |
6// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____
7// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______|
8// \ \ | | ________________________________________________________________
9// \ \ | | | ______________________________________________________________|
10// \ \| | | | __ __ __ __ ______ _______
11// \ | | |_____ | | | | | | | | | _ \ / _____)
12// \ | | _____| | | | | | | | | | | \ \ \_______
13// \ | | | | |_____ | \_/ | | | | |_/ / _____ |
14// \ _____| |__| |________| \_______/ |__| |______/ (_______/
15//
16// This file is part of VirtualFluids. VirtualFluids is free software: you can
17// redistribute it and/or modify it under the terms of the GNU General Public
18// License as published by the Free Software Foundation, either version 3 of
19// the License, or (at your option) any later version.
20//
21// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
22// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24// for more details.
25//
26// SPDX-License-Identifier: GPL-3.0-or-later
27// SPDX-FileCopyrightText: Copyright © VirtualFluids Project contributors, see AUTHORS.md in root folder
28//
33//=======================================================================================
34
35#ifndef GRID3D_H
36#define GRID3D_H
37
38#include <map>
39#include <vector>
40
45
46#include <lbm/constants/D3Q27.h>
47
49
50#include <Block3DVisitor.h>
51#include <Grid3DVisitor.h>
52
53namespace vf::parallel {class Communicator;}
54class Block3D;
55class Interactor3D;
56
59class Grid3D : public enableSharedFromThis<Grid3D>
60{
61public:
63 using Block3DMap = std::map<Block3DKey, SPtr<Block3D>>;
64 using BlockIDMap = std::map<int, SPtr<Block3D>>;
65 using LevelSet = std::vector<Block3DMap>;
66 using Interactor3DSet = std::vector<SPtr<Interactor3D>>;
67
68public:
69 Grid3D();
70 Grid3D(std::shared_ptr<vf::parallel::Communicator> comm);
71 Grid3D(std::shared_ptr<vf::parallel::Communicator> comm, int blockNx1, int blockNx2, int blockNx3, int gridNx1, int gridNx2, int gridNx3);
72 virtual ~Grid3D() = default;
74 // blocks control
75 void addBlock(SPtr<Block3D> block);
76 bool deleteBlock(SPtr<Block3D> block);
77 bool deleteBlock(int ix1, int ix2, int ix3, int level);
78 void deleteBlocks();
79 void deleteBlocks(const std::vector<int> &ids);
80 void replaceBlock(SPtr<Block3D> block);
81 SPtr<Block3D> getBlock(int ix1, int ix2, int ix3, int level) const;
82 SPtr<Block3D> getBlock(int id) const;
83 void getBlocksByCuboid(real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3,
84 std::vector<SPtr<Block3D>> &blocks);
85 void getBlocksByCuboid(int level, real minX1, real minX2, real minX3, real maxX1, real maxX2,
86 real maxX3, std::vector<SPtr<Block3D>> &blocks);
87 void getAllBlocksByCuboid(real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3,
88 std::vector<SPtr<Block3D>> &blocks);
90 void getBlocks(int level, std::vector<SPtr<Block3D>> &blockVector);
92 void getBlocks(int level, int rank, std::vector<SPtr<Block3D>> &blockVector);
94 void getBlocks(int level, int rank, bool active, std::vector<SPtr<Block3D>> &blockVector);
96 int getNumberOfBlocks(int level);
98 void deleteBlockIDs();
99 void renumberBlockIDs();
100 void updateDistributedBlocks(std::shared_ptr<vf::parallel::Communicator> comm);
102 SPtr<Block3D> getSuperBlock(int ix1, int ix2, int ix3, int level);
103 void getSubBlocks(SPtr<Block3D> block, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
104 void getSubBlocks(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blockVector);
105 SPtr<Block3D> getNeighborBlock(int dir, int ix1, int ix2, int ix3, int level) const;
106 SPtr<Block3D> getNeighborBlock(int dir, SPtr<Block3D> block) const;
107 bool expandBlock(int ix1, int ix2, int ix3, int level);
108 SPtr<Block3D> collapseBlock(int fix1, int fix2, int fix3, int flevel, int levelDepth);
109 void getAllNeighbors(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
110 void getAllNeighbors(SPtr<Block3D> block, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
111 void getNeighborBlocksForDirection(int dir, int ix1, int ix2, int ix3, int level, int levelDepth,
112 std::vector<SPtr<Block3D>> &blocks);
113 void getNeighborBlocksForDirectionWithREST(int dir, int ix1, int ix2, int ix3, int level, int levelDepth,
114 std::vector<SPtr<Block3D>> &blocks);
115
116 void getNeighborsZero(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
117 void getNeighborsNorth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
118 void getNeighborsSouth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
119 void getNeighborsEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
120 void getNeighborsWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
121 void getNeighborsTop(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
122 void getNeighborsBottom(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
123
124 void getNeighborsNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth,
125 std::vector<SPtr<Block3D>> &blocks);
126 void getNeighborsNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth,
127 std::vector<SPtr<Block3D>> &blocks);
128 void getNeighborsSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth,
129 std::vector<SPtr<Block3D>> &blocks);
130 void getNeighborsSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth,
131 std::vector<SPtr<Block3D>> &blocks);
132
133 void getNeighborsTopNorth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
134 void getNeighborsTopSouth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
135 void getNeighborsTopEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
136 void getNeighborsTopWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks);
137
138 void getNeighborsBottomNorth(int ix1, int ix2, int ix3, int level, int levelDepth,
139 std::vector<SPtr<Block3D>> &blocks);
140 void getNeighborsBottomSouth(int ix1, int ix2, int ix3, int level, int levelDepth,
141 std::vector<SPtr<Block3D>> &blocks);
142 void getNeighborsBottomEast(int ix1, int ix2, int ix3, int level, int levelDepth,
143 std::vector<SPtr<Block3D>> &blocks);
144 void getNeighborsBottomWest(int ix1, int ix2, int ix3, int level, int levelDepth,
145 std::vector<SPtr<Block3D>> &blocks);
146
147 void getNeighborsTopNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth,
148 std::vector<SPtr<Block3D>> &blocks);
149 void getNeighborsTopNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth,
150 std::vector<SPtr<Block3D>> &blocks);
151 void getNeighborsTopSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth,
152 std::vector<SPtr<Block3D>> &blocks);
153 void getNeighborsTopSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth,
154 std::vector<SPtr<Block3D>> &blocks);
155 void getNeighborsBottomNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth,
156 std::vector<SPtr<Block3D>> &blocks);
157 void getNeighborsBottomNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth,
158 std::vector<SPtr<Block3D>> &blocks);
159 void getNeighborsBottomSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth,
160 std::vector<SPtr<Block3D>> &blocks);
161 void getNeighborsBottomSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth,
162 std::vector<SPtr<Block3D>> &blocks);
164 // level control
168 void deleteConnectors();
170 // interactors control
171 void addInteractor(SPtr<Interactor3D> interactor);
172 void addAndInitInteractor(SPtr<Interactor3D> interactor, real timestep = 0);
175 // visitors
180 // bundle and rank for distributed memory
181 void setBundle(int bundle);
182 int getBundle() const;
183 int getRank() const;
184 void setRank(int rank);
186 // periodic boundary
187 bool isPeriodicX1() const;
188 bool isPeriodicX2() const;
189 bool isPeriodicX3() const;
190 void setPeriodicX1(bool value);
191 void setPeriodicX2(bool value);
192 void setPeriodicX3(bool value);
194 // Topology
201 void setDeltaX(real dx);
203 real getDeltaX(int level) const;
204 real getDeltaX(SPtr<Block3D> block) const;
206 GbVector3D getNodeCoordinates(SPtr<Block3D> block, int ix1, int ix2, int ix3) const;
208 void setBlockNX(int nx1, int nx2, int nx3);
209 UbTupleInt3 getBlockNX() const;
212 void setNX1(int nx1);
213 void setNX2(int nx2);
214 void setNX3(int nx3);
215 int getNX1() const;
216 int getNX2() const;
217 int getNX3() const;
220 int getGhostLayerWidth() const;
221 void setGhostLayerWidth(int ghostLayerWidth);
223 // LBM
224 // double getDeltaT(SPtr<Block3D>) const;
226 void setTimeStep(real step);
227 real getTimeStep() const;
228
229protected:
230 void checkLevel(int level);
231 bool hasLevel(int level) const;
232
233 void fillExtentWithBlocks(UbTupleInt3 minInd, UbTupleInt3 maxInd);
234
235 void getSubBlocksZero(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
236 int levelDepth);
237
238 void getSubBlocksEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
239 int levelDepth);
240 void getSubBlocksWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
241 int levelDepth);
242 void getSubBlocksNorth(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
243 int levelDepth);
244 void getSubBlocksSouth(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
245 int levelDepth);
246 void getSubBlocksTop(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector, int levelDepth);
247 void getSubBlocksBottom(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
248 int levelDepth);
249
250 void getSubBlocksSouthEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
251 int levelDepth);
252 void getSubBlocksSouthWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
253 int levelDepth);
254 void getSubBlocksNorthEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
255 int levelDepth);
256 void getSubBlocksNorthWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
257 int levelDepth);
258
259 void getSubBlocksTopEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
260 int levelDepth);
261 void getSubBlocksTopWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
262 int levelDepth);
263 void getSubBlocksTopNorth(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
264 int levelDepth);
265 void getSubBlocksTopSouth(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
266 int levelDepth);
267
268 void getSubBlocksBottomEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
269 int levelDepth);
270 void getSubBlocksBottomWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
271 int levelDepth);
272 void getSubBlocksBottomNorth(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
273 int levelDepth);
274 void getSubBlocksBottomSouth(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
275 int levelDepth);
276
277 void getSubBlocksTopNorthEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
278 int levelDepth);
279 void getSubBlocksTopNorthWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
280 int levelDepth);
281 void getSubBlocksTopSouthEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
282 int levelDepth);
283 void getSubBlocksTopSouthWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
284 int levelDepth);
285 void getSubBlocksBottomNorthEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
286 int levelDepth);
287 void getSubBlocksBottomNorthWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
288 int levelDepth);
289 void getSubBlocksBottomSouthEast(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
290 int levelDepth);
291 void getSubBlocksBottomSouthWest(int ix1, int ix2, int ix3, int level, std::vector<SPtr<Block3D>> &blockVector,
292 int levelDepth);
293
294private:
295 LevelSet levelSet;
296 BlockIDMap blockIdMap;
297 Interactor3DSet interactors;
298
299 int rank{ 0 };
300 int bundle{ 0 };
301
302 bool periodicX1{ false };
303 bool periodicX2{ false };
304 bool periodicX3{ false };
305
306 int blockNx1{ 0 };
307 int blockNx2{ 0 };
308 int blockNx3{ 0 };
309
310 int nx1{ 0 };
311 int nx2{ 0 };
312 int nx3{ 0 };
313
315 real orgDeltaX{ 1.0 };
316
317 real timeStep{ 0.0 };
318
319 real offset{ 0.5 };
320};
321
322#endif
323
A class implements a block structure.
Definition Block3D.h:49
Abstract class provides interface for visitor design pettern.
A class provides 3d coordinate transformation.
This Class provides basic 3D vector objects.
Definition GbVector3D.h:47
A class implements block grid.
Definition Grid3D.h:60
std::map< int, SPtr< Block3D > > BlockIDMap
Definition Grid3D.h:64
std::vector< Block3DMap > LevelSet
Definition Grid3D.h:65
std::map< Block3DKey, SPtr< Block3D > > Block3DMap
Definition Grid3D.h:63
std::vector< SPtr< Interactor3D > > Interactor3DSet
Definition Grid3D.h:66
virtual ~Grid3D()=default
Abstract class provides interface for visitor design pettern.
A base class for grid generation.
std::shared_ptr< T > SPtr
float real
Definition DataTypes.h:42
std::enable_shared_from_this< T > enableSharedFromThis
const SPtr< CoordinateTransformation3D > getCoordinateTransformator() const
Definition Grid3D.cpp:492
int getFinestInitializedLevel()
Definition Grid3D.cpp:1990
void getNeighborsTopEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:830
void calcStartCoordinatesWithOutOverlap(SPtr< Block3D > block, real &worldX1, real &worldX2, real &worldX3)
Definition Grid3D.cpp:2218
void getNeighborsBottomEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:900
SPtr< Block3D > collapseBlock(int fix1, int fix2, int fix3, int flevel, int levelDepth)
Definition Grid3D.cpp:341
UbTupleDouble3 getBlockLengths(SPtr< Block3D > block) const
Definition Grid3D.cpp:475
void getSubBlocksTopSouthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1870
UbTupleInt3 getNodeIndexes(SPtr< Block3D > block, real nodeX1Coord, real nodeX2Coord, real nodeX3Coord) const
Definition Grid3D.cpp:525
void setNX2(int nx2)
Definition Grid3D.cpp:2008
void addBlock(SPtr< Block3D > block)
Definition Grid3D.cpp:138
void getNeighborsSouth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:710
void getSubBlocksBottomSouth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1816
void getSubBlocksBottomSouthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1945
void getAllBlocksByCuboid(real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:2141
int getNumberOfBlocks()
Definition Grid3D.cpp:2027
void getSubBlocksTopWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1681
void deleteConnectors()
Definition Grid3D.cpp:409
void getNeighborsSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:794
SPtr< Block3D > getNeighborBlock(int dir, int ix1, int ix2, int ix3, int level) const
Definition Grid3D.cpp:622
void getSubBlocksTopNorthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1855
void getNeighborsTopSouth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:881
void getNeighborsTopNorth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:864
void getSubBlocksSouthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1613
BlockIDMap & getBlockIDs()
Definition Grid3D.cpp:225
void getSubBlocksSouth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1464
SPtr< Block3D > getBlock(int ix1, int ix2, int ix3, int level) const
Definition Grid3D.cpp:182
void getNeighborsTopSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1002
void getNeighborsTopNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:968
int getNX2() const
Definition Grid3D.cpp:2014
void getSubBlocksNorthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1591
void getNeighborsTopSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1019
void setTimeStep(real step)
Definition Grid3D.cpp:2243
bool isPeriodicX2() const
Definition Grid3D.cpp:429
GbVector3D getNodeCoordinates(SPtr< Block3D > block, int ix1, int ix2, int ix3) const
Definition Grid3D.cpp:512
void getBlocksByCuboid(real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:2038
void getSubBlocksTopNorth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1750
void accept(Block3DVisitor &blockVisitor)
Definition Grid3D.cpp:90
void calcStartCoordinatesAndDelta(SPtr< Block3D > block, real &worldX1, real &worldX2, real &worldX3, real &deltaX)
Definition Grid3D.cpp:2200
void setBundle(int bundle)
Definition Grid3D.cpp:425
int getBundle() const
Definition Grid3D.cpp:423
bool hasLevel(int level) const
Definition Grid3D.cpp:600
int getNX3() const
Definition Grid3D.cpp:2016
void getSubBlocksTopEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1659
void getNeighborBlocksForDirection(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1104
void getAllNeighbors(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:637
void getNeighborsZero(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1193
void checkLevel(int level)
Definition Grid3D.cpp:587
void setNX1(int nx1)
Definition Grid3D.cpp:2006
void getNeighborsTopWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:847
void getSubBlocksZero(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1210
bool isPeriodicX1() const
Definition Grid3D.cpp:427
int getRank() const
Definition Grid3D.cpp:421
void getNeighborsBottomWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:917
UbTupleDouble6 getBlockOversize() const
Definition Grid3D.cpp:488
void addAndInitInteractor(SPtr< Interactor3D > interactor, real timestep=0)
Definition Grid3D.cpp:82
UbTupleDouble3 getBlockWorldCoordinates(SPtr< Block3D > block) const
Definition Grid3D.cpp:553
void setPeriodicX3(bool value)
Definition Grid3D.cpp:437
void getNeighborsNorth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:661
void getNeighborsWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:742
void getBlocks(int level, std::vector< SPtr< Block3D > > &blockVector)
get blocks for level
Definition Grid3D.cpp:1960
void getSubBlocksNorth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1430
void getNeighborsSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:811
void getSubBlocksBottomEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1703
UbTupleDouble3 getNodeOffset(SPtr< Block3D > block) const
Definition Grid3D.cpp:506
void getNeighborsEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:726
void updateDistributedBlocks(std::shared_ptr< vf::parallel::Communicator > comm)
Definition Grid3D.cpp:2321
void getSubBlocks(SPtr< Block3D > block, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:257
real getDeltaX(int level) const
Definition Grid3D.cpp:498
UbTupleInt3 getBlockIndexes(real blockX1Coord, real blockX2Coord, real blockX3Coord) const
Definition Grid3D.cpp:439
void getSubBlocksBottomNorthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1900
void getNeighborBlocksForDirectionWithREST(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1269
void getNeighborsBottomSouth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:951
real getTimeStep() const
Definition Grid3D.cpp:2245
void deleteBlocks()
Definition Grid3D.cpp:162
void fillExtentWithBlocks(UbTupleInt3 minInd, UbTupleInt3 maxInd)
Definition Grid3D.cpp:2247
void getSubBlocksBottom(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1532
void getNeighborsBottomSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1087
Interactor3DSet getInteractors()
Definition Grid3D.cpp:88
bool isPeriodicX3() const
Definition Grid3D.cpp:431
void setNX3(int nx3)
Definition Grid3D.cpp:2010
void getNeighborsNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:777
void getSubBlocksEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1361
void getNeighborsBottomNorth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:934
void setCoordinateTransformator(SPtr< CoordinateTransformation3D > trafo)
Definition Grid3D.cpp:490
void getSubBlocksNorthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1569
void renumberBlockIDs()
Definition Grid3D.cpp:2299
void addInteractor(SPtr< Interactor3D > interactor)
Definition Grid3D.cpp:80
void replaceBlock(SPtr< Block3D > block)
Definition Grid3D.cpp:174
void setPeriodicX2(bool value)
Definition Grid3D.cpp:435
void setPeriodicX1(bool value)
Definition Grid3D.cpp:433
int getCoarsestInitializedLevel()
Definition Grid3D.cpp:1998
void getNeighborsBottomSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1070
void getSubBlocksBottomSouthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1930
void getSubBlocksBottomWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1725
int getNX1() const
Definition Grid3D.cpp:2012
Grid3D()
Definition Grid3D.cpp:53
UbTupleInt3 getBlockNX() const
Definition Grid3D.cpp:619
void getSubBlocksTopSouth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1772
bool deleteBlock(SPtr< Block3D > block)
Definition Grid3D.cpp:147
void getNeighborsBottom(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:693
void getNeighborsNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:760
void getSubBlocksTopNorthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1840
void getSubBlocksWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1396
bool expandBlock(int ix1, int ix2, int ix3, int level)
Definition Grid3D.cpp:291
void deleteBlockIDs()
Definition Grid3D.cpp:2297
void getNeighborsBottomNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1036
void setGhostLayerWidth(int ghostLayerWidth)
Definition Grid3D.cpp:2238
void getSubBlocksBottomNorthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1915
void getNeighborsTopNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:985
int getGhostLayerWidth() const
Definition Grid3D.cpp:2233
void setRank(int rank)
Definition Grid3D.cpp:419
void getSubBlocksBottomNorth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1794
void setDeltaX(real dx)
Definition Grid3D.cpp:494
void getNeighborsBottomNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:1053
void getSubBlocksTopSouthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1885
void getSubBlocksTop(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1498
SPtr< Block3D > getSuperBlock(SPtr< Block3D > block)
Definition Grid3D.cpp:227
void setBlockNX(int nx1, int nx2, int nx3)
Definition Grid3D.cpp:612
void getNeighborsTop(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Definition Grid3D.cpp:677
void getSubBlocksSouthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
Definition Grid3D.cpp:1635
UbTuple< double, double, double, double, double, double > UbTupleDouble6
Definition UbTuple.h:636