28 #include <data/aslBlocks.h> 29 #include <acl/aclMath/aclVectorOfElementsDef.h> 34 class ExpressionContainer;
41 template <
typename V>
class DataWithGhostNodes;
47 class DistanceFunction;
51 class AbstractDataWithGhostNodes;
58 class BCond:
public NumMethod
62 const VectorTemplate *
const templ;
64 std::vector<int> indices;
65 std::vector<int> directions;
66 std::vector<double> fractions;
67 std::vector<int> neighbourIndices;
74 void loadIndicesToACL();
75 void loadNeighbourIndicesToACL();
76 void loadDirectionsToACL();
77 void loadfractionsACL();
80 BCond(
const Block & b);
81 BCond(
const Block & b,
const VectorTemplate *
const t);
82 void addPoint(AVec<int> a,
int d=0,
double fr=0);
83 const Block & getBlock();
84 inline const VectorTemplate * getVT();
100 class BCondWithMap:
public NumMethod
106 const VectorTemplate *
const templ;
111 SPAbstractDataWithGhostNodes
map;
112 SPDistanceFunction mapDF;
114 SPAbstractDataWithGhostNodes computationalDomain;
115 SPDistanceFunction computationalDomainDF;
117 unique_ptr<TemplateVE> mapTVE;
118 unique_ptr<TemplateVE> cDomainTVE;
146 BCondWithMap(SPAbstractDataWithGhostNodes m,
const VectorTemplate *
const vt);
151 BCondWithMap(SPDistanceFunction m,
const Block & b,
const VectorTemplate *
const vt);
157 BCondWithMap(SPAbstractDataWithGhostNodes m,
158 SPAbstractDataWithGhostNodes cd,
159 const VectorTemplate *
const vt);
165 BCondWithMap(SPAbstractDataWithGhostNodes m,
166 SPDistanceFunction cd,
167 const VectorTemplate *
const vt);
174 BCondWithMap(SPDistanceFunction m,
175 SPDistanceFunction cd,
177 const VectorTemplate *
const vt);
179 inline const VectorTemplate * getVT();
189 class BCondConnector:
public NumMethod
195 std::vector<int> indices1;
196 std::vector<int> directions1;
197 std::vector<int> indices2;
198 std::vector<int> directions2;
205 void loadIndicesToACL();
206 void loadDirectionsToACL();
208 BCondConnector(
const Block & b1,
const Block & b2);
209 void addGhostPoint(AVec<int> a1,AVec<int> a2);
210 void addGhostPoint(AVec<int> a1,
int d1,AVec<int> a2,
int d2);
211 const Block & getBlock1();
212 const Block & getBlock2();
227 class BCondSlice:
public NumMethod
231 const VectorTemplate *
const templ;
235 AVec<int> sliceDimentions;
236 AVec<int> sliceIncrements;
240 BCondSlice(
const Block & b);
241 BCondSlice(
const Block & b,
const VectorTemplate *
const t);
242 void addGhostSlice(AVec<int> pB,AVec<int> pE,
int dir);
243 const Block & getBlock();
258 class BCondConnectorSlice:
public NumMethod
263 const VectorTemplate *
const templ;
267 AVec<int> sliceDimentions1;
268 AVec<int> sliceIncrements1;
273 AVec<int> sliceDimentions2;
274 AVec<int> sliceIncrements2;
278 BCondConnectorSlice(
const Block & b1,
const Block & b2,
const VectorTemplate *
const t);
279 void addGhostSlice1(AVec<int> pB,AVec<int> pE,
int dir);
280 void addGhostSlice2(AVec<int> pB,AVec<int> pE,
int dir);
281 const Block & getBlock1();
282 const Block & getBlock2();
292 class BCondDynamic:
public NumMethod
296 const VectorTemplate *
const templ;
302 BCondDynamic(
const Block & b);
303 BCondDynamic(
const Block & b,
const VectorTemplate *
const t);
304 const Block & getBlock();
305 inline const VectorTemplate * getVT();
acl::VectorOfElements isComputationNode(TemplateVE &distanceTVE, unsigned int i)
returns expression corresponding to check if the node in i^th direction is computation one ...
void addSliceZ(BCond &, int z)
Advanced Simulation Library.
Advanced Computational Language.
void addSliceXE(BCondSlice &)
std::shared_ptr< DistanceFunction > SPDistanceFunction
std::shared_ptr< DataWithGhostNodesACLData > SPDataWithGhostNodesACLData
Virtual class describes general interface for boundary conditions.
std::shared_ptr< BCond > SPBCond
void addSlices(BCond &, const vector< SlicesNames > &)
DataWithGhostNodes< acl::VectorOfElementsData > DataWithGhostNodesACLData
void addSliceZ0(BCondSlice &)
SlicesNames
defines names of walls of a box
The class represents several Element.
void addSliceX0(BCondSlice &)
void addSliceYE(BCondSlice &)
void addSliceZE(BCondSlice &)
void addSliceY(BCond &, int y)
void addSliceX(BCond &, int x)
std::shared_ptr< T > map(ElementData m)
Virtual class describes general interface for boundary conditions.
std::shared_ptr< AbstractDataWithGhostNodes > SPAbstractDataWithGhostNodes
DataWithGhostNodes< acl::VectorOfElements > DataWithGhostNodesACL
std::shared_ptr< DataWithGhostNodesACL > SPDataWithGhostNodesACL
Defines set of vectros with several properties.
acl::VectorOfElements isGhostNode(TemplateVE &distanceTVE, unsigned int i)
returns expression corresponding to check if the node in i^th direction is ghost one ...
void addSliceY0(BCondSlice &)