diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index 59f45be60ac12ad7225ac030658c349013e9ab3b..6c1c0e2b0ef81a21ca3e268a209a771e616eca18 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -166,33 +166,7 @@ void GridGenerator::allocArrays_BoundaryQs() real* QQ = para->getParH()->pressureBC.q27[0]; unsigned int sizeQ = para->getParH()->pressureBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[E] = &QQ[E *sizeQ]; - Q.q27[W] = &QQ[W *sizeQ]; - Q.q27[N] = &QQ[N *sizeQ]; - Q.q27[S] = &QQ[S *sizeQ]; - Q.q27[T] = &QQ[T *sizeQ]; - Q.q27[B] = &QQ[B *sizeQ]; - Q.q27[NE] = &QQ[NE *sizeQ]; - Q.q27[SW] = &QQ[SW *sizeQ]; - Q.q27[SE] = &QQ[SE *sizeQ]; - Q.q27[NW] = &QQ[NW *sizeQ]; - Q.q27[TE] = &QQ[TE *sizeQ]; - Q.q27[BW] = &QQ[BW *sizeQ]; - Q.q27[BE] = &QQ[BE *sizeQ]; - Q.q27[TW] = &QQ[TW *sizeQ]; - Q.q27[TN] = &QQ[TN *sizeQ]; - Q.q27[BS] = &QQ[BS *sizeQ]; - Q.q27[BN] = &QQ[BN *sizeQ]; - Q.q27[TS] = &QQ[TS *sizeQ]; - Q.q27[REST] = &QQ[REST*sizeQ]; - Q.q27[TNE] = &QQ[TNE *sizeQ]; - Q.q27[TSW] = &QQ[TSW *sizeQ]; - Q.q27[TSE] = &QQ[TSE *sizeQ]; - Q.q27[TNW] = &QQ[TNW *sizeQ]; - Q.q27[BNE] = &QQ[BNE *sizeQ]; - Q.q27[BSW] = &QQ[BSW *sizeQ]; - Q.q27[BSE] = &QQ[BSE *sizeQ]; - Q.q27[BNW] = &QQ[BNW *sizeQ]; + getPointersToBoundaryConditions(Q, QQ, sizeQ); builder->getPressureQs(Q.q27, 0); @@ -208,33 +182,7 @@ void GridGenerator::allocArrays_BoundaryQs() real *QQ = para->getParH()->slipBC.q27[0]; unsigned int sizeQ = para->getParH()->slipBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[E] = &QQ[E * sizeQ]; - Q.q27[W] = &QQ[W * sizeQ]; - Q.q27[N] = &QQ[N * sizeQ]; - Q.q27[S] = &QQ[S * sizeQ]; - Q.q27[T] = &QQ[T * sizeQ]; - Q.q27[B] = &QQ[B * sizeQ]; - Q.q27[NE] = &QQ[NE * sizeQ]; - Q.q27[SW] = &QQ[SW * sizeQ]; - Q.q27[SE] = &QQ[SE * sizeQ]; - Q.q27[NW] = &QQ[NW * sizeQ]; - Q.q27[TE] = &QQ[TE * sizeQ]; - Q.q27[BW] = &QQ[BW * sizeQ]; - Q.q27[BE] = &QQ[BE * sizeQ]; - Q.q27[TW] = &QQ[TW * sizeQ]; - Q.q27[TN] = &QQ[TN * sizeQ]; - Q.q27[BS] = &QQ[BS * sizeQ]; - Q.q27[BN] = &QQ[BN * sizeQ]; - Q.q27[TS] = &QQ[TS * sizeQ]; - Q.q27[REST] = &QQ[REST * sizeQ]; - Q.q27[TNE] = &QQ[TNE * sizeQ]; - Q.q27[TSW] = &QQ[TSW * sizeQ]; - Q.q27[TSE] = &QQ[TSE * sizeQ]; - Q.q27[TNW] = &QQ[TNW * sizeQ]; - Q.q27[BNE] = &QQ[BNE * sizeQ]; - Q.q27[BSW] = &QQ[BSW * sizeQ]; - Q.q27[BSE] = &QQ[BSE * sizeQ]; - Q.q27[BNW] = &QQ[BNW * sizeQ]; + getPointersToBoundaryConditions(Q, QQ, sizeQ); builder->getSlipQs(Q.q27, 0); @@ -250,33 +198,7 @@ void GridGenerator::allocArrays_BoundaryQs() real *QQ = para->getParH()->velocityBC.q27[0]; unsigned int sizeQ = para->getParH()->velocityBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[E] = &QQ[E * sizeQ]; - Q.q27[W] = &QQ[W * sizeQ]; - Q.q27[N] = &QQ[N * sizeQ]; - Q.q27[S] = &QQ[S * sizeQ]; - Q.q27[T] = &QQ[T * sizeQ]; - Q.q27[B] = &QQ[B * sizeQ]; - Q.q27[NE] = &QQ[NE * sizeQ]; - Q.q27[SW] = &QQ[SW * sizeQ]; - Q.q27[SE] = &QQ[SE * sizeQ]; - Q.q27[NW] = &QQ[NW * sizeQ]; - Q.q27[TE] = &QQ[TE * sizeQ]; - Q.q27[BW] = &QQ[BW * sizeQ]; - Q.q27[BE] = &QQ[BE * sizeQ]; - Q.q27[TW] = &QQ[TW * sizeQ]; - Q.q27[TN] = &QQ[TN * sizeQ]; - Q.q27[BS] = &QQ[BS * sizeQ]; - Q.q27[BN] = &QQ[BN * sizeQ]; - Q.q27[TS] = &QQ[TS * sizeQ]; - Q.q27[REST] = &QQ[REST * sizeQ]; - Q.q27[TNE] = &QQ[TNE * sizeQ]; - Q.q27[TSW] = &QQ[TSW * sizeQ]; - Q.q27[TSE] = &QQ[TSE * sizeQ]; - Q.q27[TNW] = &QQ[TNW * sizeQ]; - Q.q27[BNE] = &QQ[BNE * sizeQ]; - Q.q27[BSW] = &QQ[BSW * sizeQ]; - Q.q27[BSE] = &QQ[BSE * sizeQ]; - Q.q27[BNW] = &QQ[BNW * sizeQ]; + getPointersToBoundaryConditions(Q, QQ, sizeQ); builder->getVelocityQs(Q.q27, 0); @@ -301,33 +223,7 @@ void GridGenerator::allocArrays_BoundaryQs() real* QQ = para->getParH()->geometryBC.q27[0]; unsigned int sizeQ = para->getParH()->geometryBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[E] = &QQ[E *sizeQ]; - Q.q27[W] = &QQ[W *sizeQ]; - Q.q27[N] = &QQ[N *sizeQ]; - Q.q27[S] = &QQ[S *sizeQ]; - Q.q27[T] = &QQ[T *sizeQ]; - Q.q27[B] = &QQ[B *sizeQ]; - Q.q27[NE] = &QQ[NE *sizeQ]; - Q.q27[SW] = &QQ[SW *sizeQ]; - Q.q27[SE] = &QQ[SE *sizeQ]; - Q.q27[NW] = &QQ[NW *sizeQ]; - Q.q27[TE] = &QQ[TE *sizeQ]; - Q.q27[BW] = &QQ[BW *sizeQ]; - Q.q27[BE] = &QQ[BE *sizeQ]; - Q.q27[TW] = &QQ[TW *sizeQ]; - Q.q27[TN] = &QQ[TN *sizeQ]; - Q.q27[BS] = &QQ[BS *sizeQ]; - Q.q27[BN] = &QQ[BN *sizeQ]; - Q.q27[TS] = &QQ[TS *sizeQ]; - Q.q27[REST] = &QQ[REST*sizeQ]; - Q.q27[TNE] = &QQ[TNE *sizeQ]; - Q.q27[TSW] = &QQ[TSW *sizeQ]; - Q.q27[TSE] = &QQ[TSE *sizeQ]; - Q.q27[TNW] = &QQ[TNW *sizeQ]; - Q.q27[BNE] = &QQ[BNE *sizeQ]; - Q.q27[BSW] = &QQ[BSW *sizeQ]; - Q.q27[BSE] = &QQ[BSE *sizeQ]; - Q.q27[BNW] = &QQ[BNW *sizeQ]; + getPointersToBoundaryConditions(Q, QQ, sizeQ); builder->getGeometryQs(Q.q27,0); @@ -418,3 +314,33 @@ std::string GridGenerator::checkNeighbor(real x, real y, real z, int index, int } return oss.str(); } + +void GridGenerator::getPointersToBoundaryConditions(QforBoundaryConditions& boundaryConditionStruct, real* subgridDistances, const unsigned int numberOfBCnodes){ + boundaryConditionStruct.q27[E] = &subgridDistances[E * numberOfBCnodes]; + boundaryConditionStruct.q27[W] = &subgridDistances[W * numberOfBCnodes]; + boundaryConditionStruct.q27[N] = &subgridDistances[N * numberOfBCnodes]; + boundaryConditionStruct.q27[S] = &subgridDistances[S * numberOfBCnodes]; + boundaryConditionStruct.q27[T] = &subgridDistances[T * numberOfBCnodes]; + boundaryConditionStruct.q27[B] = &subgridDistances[B * numberOfBCnodes]; + boundaryConditionStruct.q27[NE] = &subgridDistances[NE * numberOfBCnodes]; + boundaryConditionStruct.q27[SW] = &subgridDistances[SW * numberOfBCnodes]; + boundaryConditionStruct.q27[SE] = &subgridDistances[SE * numberOfBCnodes]; + boundaryConditionStruct.q27[NW] = &subgridDistances[NW * numberOfBCnodes]; + boundaryConditionStruct.q27[TE] = &subgridDistances[TE * numberOfBCnodes]; + boundaryConditionStruct.q27[BW] = &subgridDistances[BW * numberOfBCnodes]; + boundaryConditionStruct.q27[BE] = &subgridDistances[BE * numberOfBCnodes]; + boundaryConditionStruct.q27[TW] = &subgridDistances[TW * numberOfBCnodes]; + boundaryConditionStruct.q27[TN] = &subgridDistances[TN * numberOfBCnodes]; + boundaryConditionStruct.q27[BS] = &subgridDistances[BS * numberOfBCnodes]; + boundaryConditionStruct.q27[BN] = &subgridDistances[BN * numberOfBCnodes]; + boundaryConditionStruct.q27[TS] = &subgridDistances[TS * numberOfBCnodes]; + boundaryConditionStruct.q27[REST] = &subgridDistances[REST* numberOfBCnodes]; + boundaryConditionStruct.q27[TNE] = &subgridDistances[TNE * numberOfBCnodes]; + boundaryConditionStruct.q27[TSW] = &subgridDistances[TSW * numberOfBCnodes]; + boundaryConditionStruct.q27[TSE] = &subgridDistances[TSE * numberOfBCnodes]; + boundaryConditionStruct.q27[TNW] = &subgridDistances[TNW * numberOfBCnodes]; + boundaryConditionStruct.q27[BNE] = &subgridDistances[BNE * numberOfBCnodes]; + boundaryConditionStruct.q27[BSW] = &subgridDistances[BSW * numberOfBCnodes]; + boundaryConditionStruct.q27[BSE] = &subgridDistances[BSE * numberOfBCnodes]; + boundaryConditionStruct.q27[BNW] = &subgridDistances[BNW * numberOfBCnodes]; +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h index 20ad11f5a4f958473febb242723dc16d889315ad..7777f5e60731a29bbdba1b19d490ba43e96f7080 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h @@ -83,11 +83,16 @@ private: std::string verifyNeighborIndex(int index, int &invalidNodes, int &stopperNodes, int &wrongNeighbors) const; //! \brief check the neighbors //! \param x,y,z lattice node position - //! \param numberOfWrongNeihgbors reference to the number of wrong neighbors + //! \param numberOfWrongNeighbors reference to the number of wrong neighbors //! \param neighborIndex index of neighbor node //! \param neighborX,neighborY,neighborZ neighbor lattice node position //! \param direction type string std::string checkNeighbor(real x, real y, real z, int index, int& numberOfWrongNeihgbors, int neighborIndex, real neighborX, real neighborY, real neighborZ, std::string direction) const; + //! \brief create the pointers in the struct for the BoundaryConditions from the boundary condition array + //! \param boundaryConditionStruct is a struct containing information about the boundary condition + //! \param subgridDistances is a pointer to an array containing the subgrid distances + //! \param numberOfBCnodes is the number of lattice nodes in the boundary condition + static void getPointersToBoundaryConditions(QforBoundaryConditions& boundaryConditionStruct, real* subgridDistances, const unsigned int numberOfBCnodes); }; #endif