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;
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);
84 inline const VectorTemplate *
getVT();
100 class BCondWithMap:
public NumMethod
106 const VectorTemplate *
const templ;
111 SPAbstractDataWithGhostNodes
map;
112 SPDistanceFunction
mapDF;
117 unique_ptr<TemplateVE>
mapTVE;
146 BCondWithMap(SPAbstractDataWithGhostNodes m,
const VectorTemplate *
const vt);
151 BCondWithMap(SPDistanceFunction m,
const Block & b,
const VectorTemplate *
const vt);
158 SPAbstractDataWithGhostNodes cd,
159 const VectorTemplate *
const vt);
166 SPDistanceFunction cd,
167 const VectorTemplate *
const vt);
175 SPDistanceFunction cd,
177 const VectorTemplate *
const vt);
179 inline const VectorTemplate *
getVT();
189 class BCondConnector:
public NumMethod
227 class BCondSlice:
public NumMethod
231 const VectorTemplate *
const templ;
241 BCondSlice(
const Block & b,
const VectorTemplate *
const t);
258 class BCondConnectorSlice:
public NumMethod
263 const VectorTemplate *
const templ;
292 class BCondDynamic:
public NumMethod
296 const VectorTemplate *
const templ;
303 BCondDynamic(
const Block & b,
const VectorTemplate *
const t);
305 inline const VectorTemplate *
getVT();
321 void addSlices(BCond &,
const vector<SlicesNames> &);
acl::SPVectorOfElementsData neighbourIndicesACL
const VectorTemplate * getVT()
acl::SPVectorOfElementsData indices2ACL
std::vector< int > directions
virtual void initMapInfrastructure(acl::ExpressionContainer &ec)
initialize mapTVE and cDomainTVE
const VectorTemplate * getVT()
void addSliceZ(BCond &, int z)
Advanced Simulation Library.
Advanced Computational Language.
BCondConnector(const Block &b1, const Block &b2)
BCondWithMap(SPAbstractDataWithGhostNodes m, const VectorTemplate *const vt)
std::shared_ptr< DistanceFunction > SPDistanceFunction
std::vector< int > indices1
std::shared_ptr< DataWithGhostNodesACLData > SPDataWithGhostNodesACLData
void addGhostPoint(AVec< int > a1, AVec< int > a2)
std::vector< int > directions1
std::vector< int > indices2
AVec< int > sliceIncrements1
std::shared_ptr< BCond > SPBCond
bool pointsListFlag
flag whether the point list to be generated or not
AVec< int > sliceIncrements2
acl::SPVectorOfElementsData directionsACL
unique_ptr< TemplateVE > cDomainTVE
AVec< int > sliceIncrements
unique_ptr< TemplateVE > mapTVE
acl::VectorOfElements currentPoint
void addSlices(BCond &, const vector< SlicesNames > &)
BCondConnectorSlice(const Block &b1, const Block &b2, const VectorTemplate *const t)
acl::VectorOfElements isComputationNode()
returns expression corresponding to check if the current node is computation one
std::vector< int > neighbourIndices
void addGhostSlice(AVec< int > pB, AVec< int > pE, int dir)
DataWithGhostNodes< acl::VectorOfElementsData > DataWithGhostNodesACLData
void loadDirectionsToACL()
AVec< int > sliceDimentions
SlicesNames
defines names of walls of a box
std::vector< int > directions2
SPAbstractDataWithGhostNodes computationalDomain
Computational domain which contains all boundaries and the particular boundary as well...
acl::SPVectorOfElementsData pointsACL
const VectorTemplate * getVT()
const Block & getBlock2()
acl::SPVectorOfElementsData normalsACL
SPAbstractDataWithGhostNodes map
boundary description for the particular BC
acl::SPVectorOfElementsData directions1ACL
acl::SPVectorOfElementsData directions2ACL
acl::SPVectorOfElementsData indices1ACL
The class represents several Element.
void loadDirectionsToACL()
AVec< int > sliceDimentions2
const VectorTemplate *const templ
std::vector< double > fractions
void addSliceY(BCond &, int y)
void addSliceX(BCond &, int x)
const Block & getBlock1()
const Block & getBlock1()
const VectorTemplate *const templ
void addGhostSlice2(AVec< int > pB, AVec< int > pE, int dir)
const VectorTemplate *const templ
AVec< int > sliceDimentions1
void loadNeighbourIndicesToACL()
const VectorTemplate *const templ
std::shared_ptr< AbstractDataWithGhostNodes > SPAbstractDataWithGhostNodes
DataWithGhostNodes< acl::VectorOfElements > DataWithGhostNodesACL
std::shared_ptr< DataWithGhostNodesACL > SPDataWithGhostNodesACL
acl::VectorOfElements isGhostNode()
returns expression corresponding to check if the current node is ghost one
const Block & getBlock2()
BCondSlice(const Block &b)
acl::SPVectorOfElementsData indicesACL
void addGhostSlice1(AVec< int > pB, AVec< int > pE, int dir)
acl::SPVectorOfElementsData fractionsACL
const VectorTemplate *const templ
void addPoint(AVec< int > a, int d=0, double fr=0)
BCondDynamic(const Block &b)
std::vector< int > indices
SPDistanceFunction computationalDomainDF