diff --git a/src/gpu/VirtualFluids_GPU/Calculation/Cp.cpp b/src/gpu/VirtualFluids_GPU/Calculation/Cp.cpp index 9ee4cb917cdbf76dddf988b4456d5d611c9a11e0..bb20d25bbc6b82e1d2b3dddd8a2f732a384cdb6d 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/Cp.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/Cp.cpp @@ -230,16 +230,16 @@ void excludeGridInterfaceNodesForMirror(Parameter* para, int lev) //define bool vector for nodes outside the interface for (unsigned int it = 0; it < para->getParH(lev + 1)->numberOfPointsCpTop; it++) { - for (unsigned int ifit = 0; ifit < para->getParH((int)lev)->K_CF; ifit++) + for (unsigned int ifit = 0; ifit < para->getParH((int)lev)->coarseToFine.numberOfCells; ifit++) { - if ((para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH((int)lev)->intCF.ICellCFF[ifit]) || - (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborX[para->getParH((int)lev)->intCF.ICellCFF[ifit]]) || - (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborY[para->getParH((int)lev)->intCF.ICellCFF[ifit]]) || - (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborZ[para->getParH((int)lev)->intCF.ICellCFF[ifit]]) || - (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborY[para->getParH(lev + 1)->neighborX[para->getParH((int)lev)->intCF.ICellCFF[ifit]]]) || - (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborZ[para->getParH(lev + 1)->neighborX[para->getParH((int)lev)->intCF.ICellCFF[ifit]]]) || - (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborZ[para->getParH(lev + 1)->neighborY[para->getParH((int)lev)->intCF.ICellCFF[ifit]]]) || - (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborZ[para->getParH(lev + 1)->neighborY[para->getParH(lev + 1)->neighborX[para->getParH((int)lev)->intCF.ICellCFF[ifit]]]])) + if ((para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH((int)lev)->coarseToFine.fineCellIndices[ifit]) || + (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborX[para->getParH((int)lev)->coarseToFine.fineCellIndices[ifit]]) || + (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborY[para->getParH((int)lev)->coarseToFine.fineCellIndices[ifit]]) || + (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborZ[para->getParH((int)lev)->coarseToFine.fineCellIndices[ifit]]) || + (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborY[para->getParH(lev + 1)->neighborX[para->getParH((int)lev)->coarseToFine.fineCellIndices[ifit]]]) || + (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborZ[para->getParH(lev + 1)->neighborX[para->getParH((int)lev)->coarseToFine.fineCellIndices[ifit]]]) || + (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborZ[para->getParH(lev + 1)->neighborY[para->getParH((int)lev)->coarseToFine.fineCellIndices[ifit]]]) || + (para->getParH(lev + 1)->cpTopIndex[it] == (int)para->getParH(lev + 1)->neighborZ[para->getParH(lev + 1)->neighborY[para->getParH(lev + 1)->neighborX[para->getParH((int)lev)->coarseToFine.fineCellIndices[ifit]]]])) { para->getParH(lev + 1)->isOutsideInterface.push_back(false); tempBool = false; @@ -256,9 +256,9 @@ void excludeGridInterfaceNodesForMirror(Parameter* para, int lev) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// for (unsigned int it = 0; it < para->getParH((int)lev)->numberOfPointsCpTop; it++) { - for (unsigned int ifit = 0; ifit < para->getParH((int)lev)->K_FC; ifit++) + for (unsigned int ifit = 0; ifit < para->getParH((int)lev)->fineToCoarse.numberOfCells; ifit++) { - if (para->getParH((int)lev)->cpTopIndex[it] == (int)para->getParH((int)lev)->intFC.ICellFCC[ifit]) + if (para->getParH((int)lev)->cpTopIndex[it] == (int)para->getParH((int)lev)->fineToCoarse.coarseCellIndices[ifit]) { para->getParH((int)lev)->isOutsideInterface.push_back(false); tempBool = false; diff --git a/src/gpu/VirtualFluids_GPU/Calculation/RefinementStrategy.cpp b/src/gpu/VirtualFluids_GPU/Calculation/RefinementStrategy.cpp index b8ca4e9c2020e17cd0192267ac5d931b510afc3a..f1c9bb8e53f81a554091a5e230ba09556b084167 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/RefinementStrategy.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/RefinementStrategy.cpp @@ -42,7 +42,7 @@ void RefinementAndExchange_streams_exchangeInterface::operator()(UpdateGrid27 *u //! //! 1. Interpolation fine to coarse for nodes which are at the border of the gpus/processes //! - updateGrid->fineToCoarse(level, ¶->getParD(level)->intFCBorder, para->getParD(level)->offFC, CudaStreamIndex::SubDomainBorder); + updateGrid->fineToCoarse(level, ¶->getParD(level)->fineToCoarseBorder, para->getParD(level)->neighborFineToCoarse, CudaStreamIndex::SubDomainBorder); //! 2. prepare the exchange between gpus (collect the send nodes for communication in a buffer on the gpu) and trigger bulk kernel execution when finished //! @@ -53,8 +53,8 @@ void RefinementAndExchange_streams_exchangeInterface::operator()(UpdateGrid27 *u //! 3. launch the bulk kernels for both interpolation processes (fine to coarse and coarse to fine) //! para->getStreamManager()->waitOnStartBulkKernelEvent(CudaStreamIndex::Bulk); - updateGrid->fineToCoarse(level, ¶->getParD(level)->intFCBulk, para->getParD(level)->offFCBulk, CudaStreamIndex::SubDomainBorder); - updateGrid->coarseToFine(level, ¶->getParD(level)->intCFBulk, para->getParD(level)->offCFBulk, CudaStreamIndex::SubDomainBorder); + updateGrid->fineToCoarse(level, ¶->getParD(level)->fineToCoarseBulk, para->getParD(level)->neighborFineToCoarseBulk, CudaStreamIndex::SubDomainBorder); + updateGrid->coarseToFine(level, ¶->getParD(level)->coarseToFineBulk, para->getParD(level)->neighborCoarseToFineBulk, CudaStreamIndex::SubDomainBorder); //! 4. exchange information between GPUs (only nodes which are part of the interpolation) //! @@ -62,7 +62,7 @@ void RefinementAndExchange_streams_exchangeInterface::operator()(UpdateGrid27 *u // 5. interpolation fine to coarse for nodes which are at the border of the gpus/processes //! - updateGrid->coarseToFine(level, ¶->getParD(level)->intCFBorder, para->getParD(level)->offCF, CudaStreamIndex::SubDomainBorder); + updateGrid->coarseToFine(level, ¶->getParD(level)->coarseToFineBorder, para->getParD(level)->neighborCoarseToFine, CudaStreamIndex::SubDomainBorder); cudaDeviceSynchronize(); } @@ -73,7 +73,7 @@ void RefinementAndExchange_streams_exchangeAllNodes::operator()(UpdateGrid27 *up //! //! 1. interpolation fine to coarse for nodes which are at the border of the gpus/processes //! - updateGrid->fineToCoarse(level, ¶->getParD(level)->intFCBorder, para->getParD(level)->offFC, CudaStreamIndex::SubDomainBorder); + updateGrid->fineToCoarse(level, ¶->getParD(level)->fineToCoarseBorder, para->getParD(level)->neighborFineToCoarse, CudaStreamIndex::SubDomainBorder); //! 2. prepare the exchange between gpus (collect the send nodes for communication in a buffer on the gpu) and trigger bulk kernel execution when finished //! @@ -84,8 +84,8 @@ void RefinementAndExchange_streams_exchangeAllNodes::operator()(UpdateGrid27 *up //! 3. launch the bulk kernels for both interpolation processes (fine to coarse and coarse to fine) //! para->getStreamManager()->waitOnStartBulkKernelEvent(CudaStreamIndex::Bulk); - updateGrid->fineToCoarse(level, ¶->getParD(level)->intFCBulk, para->getParD(level)->offFCBulk, CudaStreamIndex::SubDomainBorder); - updateGrid->coarseToFine(level, ¶->getParD(level)->intCFBulk, para->getParD(level)->offCFBulk, CudaStreamIndex::SubDomainBorder); + updateGrid->fineToCoarse(level, ¶->getParD(level)->fineToCoarseBulk, para->getParD(level)->neighborFineToCoarseBulk, CudaStreamIndex::SubDomainBorder); + updateGrid->coarseToFine(level, ¶->getParD(level)->coarseToFineBulk, para->getParD(level)->neighborCoarseToFineBulk, CudaStreamIndex::SubDomainBorder); //! 4. exchange information between GPUs (all nodes) //! @@ -93,7 +93,7 @@ void RefinementAndExchange_streams_exchangeAllNodes::operator()(UpdateGrid27 *up // 5. interpolation fine to coarse for nodes which are at the border of the gpus/processes //! - updateGrid->coarseToFine(level, ¶->getParD(level)->intCFBorder, para->getParD(level)->offCF, CudaStreamIndex::SubDomainBorder); + updateGrid->coarseToFine(level, ¶->getParD(level)->coarseToFineBorder, para->getParD(level)->neighborCoarseToFine, CudaStreamIndex::SubDomainBorder); cudaDeviceSynchronize(); } @@ -104,14 +104,14 @@ void RefinementAndExchange_noStreams_exchangeInterface::operator()(UpdateGrid27 //! //! 1. interpolation fine to coarse //! - updateGrid->fineToCoarse(level, ¶->getParD(level)->intFC, para->getParD(level)->offFC, CudaStreamIndex::Legacy); + updateGrid->fineToCoarse(level, ¶->getParD(level)->fineToCoarse, para->getParD(level)->neighborFineToCoarse, CudaStreamIndex::Legacy); //! 2. exchange information between GPUs (only nodes which are part of the interpolation) //! updateGrid->exchangeMultiGPU_noStreams_withPrepare(level, true); //! 3. interpolation coarse to fine - updateGrid->coarseToFine(level, ¶->getParD(level)->intCF, para->getParD(level)->offCF, CudaStreamIndex::Legacy); + updateGrid->coarseToFine(level, ¶->getParD(level)->coarseToFine, para->getParD(level)->neighborCoarseToFine, CudaStreamIndex::Legacy); } void RefinementAndExchange_noStreams_exchangeAllNodes::operator()(UpdateGrid27 *updateGrid, Parameter *para, int level) @@ -120,14 +120,14 @@ void RefinementAndExchange_noStreams_exchangeAllNodes::operator()(UpdateGrid27 * //! //! 1. interpolation fine to coarse //! - updateGrid->fineToCoarse(level, ¶->getParD(level)->intFC, para->getParD(level)->offFC, CudaStreamIndex::Legacy); + updateGrid->fineToCoarse(level, ¶->getParD(level)->fineToCoarse, para->getParD(level)->neighborFineToCoarse, CudaStreamIndex::Legacy); //! 2. exchange information between GPUs (all nodes) //! updateGrid->exchangeMultiGPU_noStreams_withPrepare(level, false); //! 3. interpolation coarse to fine - updateGrid->coarseToFine(level, ¶->getParD(level)->intCF, para->getParD(level)->offCF, CudaStreamIndex::Legacy); + updateGrid->coarseToFine(level, ¶->getParD(level)->coarseToFine, para->getParD(level)->neighborCoarseToFine, CudaStreamIndex::Legacy); } void Refinement_noExchange::operator()(UpdateGrid27 *updateGrid, Parameter *para, int level) @@ -136,7 +136,7 @@ void Refinement_noExchange::operator()(UpdateGrid27 *updateGrid, Parameter *para //! //! 1. interpolation fine to coarse //! - updateGrid->fineToCoarse(level, ¶->getParD(level)->intFC, para->getParD(level)->offFC, CudaStreamIndex::Legacy); + updateGrid->fineToCoarse(level, ¶->getParD(level)->fineToCoarse, para->getParD(level)->neighborFineToCoarse, CudaStreamIndex::Legacy); //! 2. interpolation coarse to fine - updateGrid->coarseToFine(level, ¶->getParD(level)->intCF, para->getParD(level)->offCF, CudaStreamIndex::Legacy); + updateGrid->coarseToFine(level, ¶->getParD(level)->coarseToFine, para->getParD(level)->neighborCoarseToFine, CudaStreamIndex::Legacy); } diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp index 4136614dfbfc9e0d2fc1bf7f4b01624f94eabb6f..a2b1039afca4eaa3fcd75e28cae16cb5f68f6c9b 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp @@ -328,9 +328,9 @@ void UpdateGrid27::preCollisionBC(int level, unsigned int t) ////////////////////////////////////////////////////////////////////////////////// } -void UpdateGrid27::fineToCoarse(int level, InterpolationCellFC* icellFC, OffFC &offFC, CudaStreamIndex streamIndex) +void UpdateGrid27::fineToCoarse(int level, InterpolationCells* fineToCoarse, ICellNeigh &neighborFineToCoarse, CudaStreamIndex streamIndex) { - gridScalingKernelManager->runFineToCoarseKernelLB(level, icellFC, offFC, streamIndex); + gridScalingKernelManager->runFineToCoarseKernelLB(level, fineToCoarse, neighborFineToCoarse, streamIndex); if (para->getDiffOn()) { if (para->getStreamManager()->streamIsRegistered(streamIndex)) { @@ -341,9 +341,9 @@ void UpdateGrid27::fineToCoarse(int level, InterpolationCellFC* icellFC, OffFC & } } -void UpdateGrid27::coarseToFine(int level, InterpolationCellCF* icellCF, OffCF &offCF, CudaStreamIndex streamIndex) +void UpdateGrid27::coarseToFine(int level, InterpolationCells* coarseToFine, ICellNeigh &neighborCoarseToFine, CudaStreamIndex streamIndex) { - this->gridScalingKernelManager->runCoarseToFineKernelLB(level, icellCF, offCF, streamIndex); + this->gridScalingKernelManager->runCoarseToFineKernelLB(level, coarseToFine, neighborCoarseToFine, streamIndex); if (para->getDiffOn()) { diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h index 8ce2cf5bfd72f9f53cdb35bc92502ee9ca0d3ad8..9c6ff48725f4e17121de0a1a8681d0bafcfb58ee 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h @@ -38,8 +38,8 @@ private: void preCollisionBC(int level, unsigned int t); void collisionPorousMedia(int level); - void fineToCoarse(int level, InterpolationCellFC* icellFC, OffFC &offFC, CudaStreamIndex streamIndex); - void coarseToFine(int level, InterpolationCellCF* icellCF, OffCF &offCF, CudaStreamIndex streamIndex); + void fineToCoarse(int level, InterpolationCells* fineToCoarse, ICellNeigh &neighborFineToCoarse, CudaStreamIndex streamIndex); + void coarseToFine(int level, InterpolationCells* coarseToFine, ICellNeigh &neighborCoarseToFine, CudaStreamIndex streamIndex); void prepareExchangeMultiGPU(int level, CudaStreamIndex streamIndex); void prepareExchangeMultiGPUAfterFtoC(int level, CudaStreamIndex streamIndex); diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp index a1c8554cc4e262e9f1eca4204aed4ffcfd4c3a87..647ab169b22dfd5973bb6ee6bbf80745ca647241 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp @@ -165,25 +165,13 @@ void GridReader::allocArrays_OffsetScale() AnzahlKnotenGesFC += tempFC; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //size + memsize CF - para->getParH(i)->K_CF = tempCF; - para->getParD(i)->K_CF = para->getParH(i)->K_CF; - para->getParH(i)->intCF.kCF = para->getParH(i)->K_CF; - para->getParD(i)->intCF.kCF = para->getParH(i)->K_CF; - para->getParH(i)->mem_size_kCF = sizeof(unsigned int)* para->getParH(i)->K_CF; - para->getParD(i)->mem_size_kCF = sizeof(unsigned int)* para->getParD(i)->K_CF; - para->getParH(i)->mem_size_kCF_off = sizeof(real)* para->getParH(i)->K_CF; - para->getParD(i)->mem_size_kCF_off = sizeof(real)* para->getParD(i)->K_CF; + //size CF + para->getParH(i)->coarseToFine.numberOfCells = tempCF; + para->getParD(i)->coarseToFine.numberOfCells = para->getParH(i)->coarseToFine.numberOfCells; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //size + memsize FC - para->getParH(i)->K_FC = tempFC; - para->getParD(i)->K_FC = para->getParH(i)->K_FC; - para->getParH(i)->intFC.kFC = para->getParH(i)->K_FC; - para->getParD(i)->intFC.kFC = para->getParH(i)->K_FC; - para->getParH(i)->mem_size_kFC = sizeof(unsigned int)* para->getParH(i)->K_FC; - para->getParD(i)->mem_size_kFC = sizeof(unsigned int)* para->getParD(i)->K_FC; - para->getParH(i)->mem_size_kFC_off = sizeof(real)* para->getParH(i)->K_FC; - para->getParD(i)->mem_size_kFC_off = sizeof(real)* para->getParD(i)->K_FC; + //size FC + para->getParH(i)->fineToCoarse.numberOfCells = tempFC; + para->getParD(i)->fineToCoarse.numberOfCells = para->getParH(i)->fineToCoarse.numberOfCells; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //alloc cudaMemoryManager->cudaAllocInterfaceCF(i); @@ -192,12 +180,12 @@ void GridReader::allocArrays_OffsetScale() cudaMemoryManager->cudaAllocInterfaceOffFC(i); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //init - obj_offCF->initArrayOffset(para->getParH(i)->offCF.xOffCF, para->getParH(i)->offCF.yOffCF, para->getParH(i)->offCF.zOffCF, i); - obj_offFC->initArrayOffset(para->getParH(i)->offFC.xOffFC, para->getParH(i)->offFC.yOffFC, para->getParH(i)->offFC.zOffFC, i); - obj_scaleCFC->initScale(para->getParH(i)->intCF.ICellCFC, i); - obj_scaleCFF->initScale(para->getParH(i)->intCF.ICellCFF, i); - obj_scaleFCC->initScale(para->getParH(i)->intFC.ICellFCC, i); - obj_scaleFCF->initScale(para->getParH(i)->intFC.ICellFCF, i); + obj_offCF->initArrayOffset(para->getParH(i)->neighborCoarseToFine.x, para->getParH(i)->neighborCoarseToFine.y, para->getParH(i)->neighborCoarseToFine.z, i); + obj_offFC->initArrayOffset(para->getParH(i)->neighborFineToCoarse.x, para->getParH(i)->neighborFineToCoarse.y, para->getParH(i)->neighborFineToCoarse.z, i); + obj_scaleCFC->initScale(para->getParH(i)->coarseToFine.coarseCellIndices, i); + obj_scaleCFF->initScale(para->getParH(i)->coarseToFine.fineCellIndices, i); + obj_scaleFCC->initScale(para->getParH(i)->fineToCoarse.coarseCellIndices, i); + obj_scaleFCF->initScale(para->getParH(i)->fineToCoarse.fineCellIndices, i); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //copy cudaMemoryManager->cudaCopyInterfaceCF(i); diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index c2f86721de26d516ed60f497a65d1d46a34aa182..533382211dfba6c2d1ad88b1c75ef89e32beec0f 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -1179,25 +1179,13 @@ void GridGenerator::allocArrays_OffsetScale() std::cout << "number of nodes FC level " << level << " : " << numberOfNodesPerLevelFC << std::endl; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //size + memsize CF - para->getParH(level)->K_CF = numberOfNodesPerLevelCF; - para->getParD(level)->K_CF = para->getParH(level)->K_CF; - para->getParH(level)->intCF.kCF = para->getParH(level)->K_CF; - para->getParD(level)->intCF.kCF = para->getParH(level)->K_CF; - para->getParH(level)->mem_size_kCF = sizeof(uint)* para->getParH(level)->K_CF; - para->getParD(level)->mem_size_kCF = sizeof(uint)* para->getParD(level)->K_CF; - para->getParH(level)->mem_size_kCF_off = sizeof(real)* para->getParH(level)->K_CF; - para->getParD(level)->mem_size_kCF_off = sizeof(real)* para->getParD(level)->K_CF; + //size CF + para->getParH(level)->coarseToFine.numberOfCells = numberOfNodesPerLevelCF; + para->getParD(level)->coarseToFine.numberOfCells = para->getParH(level)->coarseToFine.numberOfCells; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //size + memsize FC - para->getParH(level)->K_FC = numberOfNodesPerLevelFC; - para->getParD(level)->K_FC = para->getParH(level)->K_FC; - para->getParH(level)->intFC.kFC = para->getParH(level)->K_FC; - para->getParD(level)->intFC.kFC = para->getParH(level)->K_FC; - para->getParH(level)->mem_size_kFC = sizeof(uint)* para->getParH(level)->K_FC; - para->getParD(level)->mem_size_kFC = sizeof(uint)* para->getParD(level)->K_FC; - para->getParH(level)->mem_size_kFC_off = sizeof(real)* para->getParH(level)->K_FC; - para->getParD(level)->mem_size_kFC_off = sizeof(real)* para->getParD(level)->K_FC; + //size FC + para->getParH(level)->fineToCoarse.numberOfCells = numberOfNodesPerLevelFC; + para->getParD(level)->fineToCoarse.numberOfCells = para->getParH(level)->fineToCoarse.numberOfCells; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //alloc cudaMemoryManager->cudaAllocInterfaceCF(level); @@ -1206,9 +1194,9 @@ void GridGenerator::allocArrays_OffsetScale() cudaMemoryManager->cudaAllocInterfaceOffFC(level); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //init - builder->getOffsetCF(para->getParH(level)->offCF.xOffCF, para->getParH(level)->offCF.yOffCF, para->getParH(level)->offCF.zOffCF, level); - builder->getOffsetFC(para->getParH(level)->offFC.xOffFC, para->getParH(level)->offFC.yOffFC, para->getParH(level)->offFC.zOffFC, level); - builder->getGridInterfaceIndices(para->getParH(level)->intCF.ICellCFC, para->getParH(level)->intCF.ICellCFF, para->getParH(level)->intFC.ICellFCC, para->getParH(level)->intFC.ICellFCF, level); + builder->getOffsetCF(para->getParH(level)->neighborCoarseToFine.x, para->getParH(level)->neighborCoarseToFine.y, para->getParH(level)->neighborCoarseToFine.z, level); + builder->getOffsetFC(para->getParH(level)->neighborFineToCoarse.x, para->getParH(level)->neighborFineToCoarse.y, para->getParH(level)->neighborFineToCoarse.z, level); + builder->getGridInterfaceIndices(para->getParH(level)->coarseToFine.coarseCellIndices, para->getParH(level)->coarseToFine.fineCellIndices, para->getParH(level)->fineToCoarse.coarseCellIndices, para->getParH(level)->fineToCoarse.fineCellIndices, level); if (para->getUseStreams() || para->getNumprocs() > 1) { // split fine-to-coarse indices into border and bulk diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.cpp index 4cd8769407220ec97030489585009d435a6cce8e..696254c44e0fe1150ded8566650483878377928c 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.cpp @@ -333,7 +333,7 @@ void IndexRearrangementForStreams::reorderSendIndicesForCommAfterFtoC( { VF_LOG_INFO("Reorder send indices for communication after fine to coarse: level: {} direction: {}", level, direction); - if (para->getParH(level)->intCF.kCF == 0 || para->getParH(level)->intFC.kFC == 0) + if (para->getParH(level)->coarseToFine.numberOfCells == 0 || para->getParH(level)->fineToCoarse.numberOfCells == 0) VF_LOG_CRITICAL("reorderSendIndicesForCommAfterFtoC(): para->getParH(level)->intCF needs to be initialized " "before calling this function"); @@ -342,19 +342,19 @@ void IndexRearrangementForStreams::reorderSendIndicesForCommAfterFtoC( std::vector<int> sendIndicesOther; uint numberOfSendIndices = builder->getNumberOfSendIndices(direction, level); - // iCellFCC + // coarse cells of interpolation fine to coarse (iCellFCC) for (uint posInSendIndices = 0; posInSendIndices < numberOfSendIndices; posInSendIndices++) { sparseIndexSend = sendIndices[posInSendIndices]; - if (isSparseIndexInICellFCC(para->getParH(level)->intFC.kFC, sparseIndexSend, level)) { + if (isSparseIndexInCoarseIndexForFtoC(para->getParH(level)->fineToCoarse.numberOfCells, sparseIndexSend, level)) { addUniqueIndexToCommunicationVectors(sendIndicesAfterFtoC, sparseIndexSend, sendIndicesForCommAfterFtoCPositions, posInSendIndices); } } - // iCellCFC - std::vector<uint> nodesCFC; - aggregateNodesInICellCFC(level, nodesCFC); - for (auto sparseIndex : nodesCFC) + // coarse cells of interpolation coarse to fine (iCellCFC) + std::vector<uint> coarseCellsForCtoF; + aggregateCoarseNodesForCtoF(level, coarseCellsForCtoF); + for (auto sparseIndex : coarseCellsForCtoF) findIfSparseIndexIsInSendIndicesAndAddToCommVectors(sparseIndex, sendIndices, numberOfSendIndices, sendIndicesAfterFtoC, sendIndicesForCommAfterFtoCPositions); @@ -378,27 +378,27 @@ void IndexRearrangementForStreams::reorderSendIndicesForCommAfterFtoC( } } -bool IndexRearrangementForStreams::isSparseIndexInICellFCC(uint sizeOfICellFCC, int sparseIndex, int level) const +bool IndexRearrangementForStreams::isSparseIndexInCoarseIndexForFtoC(uint numberOfCoarseNodesForFtoC, int sparseIndex, int level) const { - for (uint j = 0; j < sizeOfICellFCC; j++) { + for (uint j = 0; j < numberOfCoarseNodesForFtoC; j++) { if (sparseIndex < 0) return false; - if (para->getParH(level)->intFC.ICellFCC[j] == (uint)sparseIndex) { + if (para->getParH(level)->fineToCoarse.coarseCellIndices[j] == (uint)sparseIndex) { return true; } } return false; } -void IndexRearrangementForStreams::aggregateNodesInICellCFC(int level, std::vector<uint> &nodesCFC) const +void IndexRearrangementForStreams::aggregateCoarseNodesForCtoF(int level, std::vector<uint> &nodesCFC) const { uint sparseIndex; uint *neighborX = para->getParH(level)->neighborX; uint *neighborY = para->getParH(level)->neighborY; uint *neighborZ = para->getParH(level)->neighborZ; - for (uint x = 0; x < para->getParH(level)->intCF.kCF; x++) { - sparseIndex = para->getParH(level)->intCF.ICellCFC[x]; + for (uint x = 0; x < para->getParH(level)->coarseToFine.numberOfCells; x++) { + sparseIndex = para->getParH(level)->coarseToFine.coarseCellIndices[x]; nodesCFC.push_back(sparseIndex); nodesCFC.push_back(neighborX[sparseIndex]); nodesCFC.push_back(neighborY[sparseIndex]); diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.h index e6753e21be43a4f004d812cca8b9adafa501ffe8..014c725e30c58921e783810a8332ff0865e7938c 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.h @@ -89,12 +89,12 @@ protected: //! \param sendIndicesForCommAfterFtoCPositions stores each sendIndex's positions before reordering void reorderSendIndicesForCommAfterFtoC(int *sendIndices, int &numberOfSendNodesAfterFtoC, int direction, int level, std::vector<uint> &sendIndicesForCommAfterFtoCPositions) const; - //! \brief Check if a sparse index occurs in the ICellFCC - bool isSparseIndexInICellFCC(uint sizeOfICellFCC, int sparseIndexSend, int level) const; + //! \brief Check if a sparse index occurs in the coarse nodes for the interpolation from fine to coarse + bool isSparseIndexInCoarseIndexForFtoC(uint numberOfCoarseNodesForFtoC, int sparseIndexSend, int level) const; //! \brief Aggregate all nodes in the coarse cells for the interpolation in coarse to fine //! \details For the coarse cells in the interpolation from coarse to fine only one node is stored. This methods //! looks for the other nodes of each cell and puts them into vector. Duplicate nodes are only stored once. - void aggregateNodesInICellCFC(int level, std::vector<uint> &nodesCFC) const; + void aggregateCoarseNodesForCtoF(int level, std::vector<uint> &nodesCFC) const; //! \brief Add index to sendIndicesAfterFtoC and sendIndicesForCommAfterFtoCPositions, but omit indices which are already in sendIndicesAfterFtoC void addUniqueIndexToCommunicationVectors(std::vector<int> &sendIndicesAfterFtoC, int &sparseIndexSend, std::vector<unsigned int> &sendIndicesForCommAfterFtoCPositions, diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp index 7bf534013ab68ba6a58fb3f33ca4ae03610cc12d..289b1607dd6acd47a88594a2b0a4497cdf6e7649 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp @@ -86,10 +86,10 @@ struct SendIndicesForCommAfterFtoCX { const int numberOfProcessNeighbors = 1; const int indexOfProcessNeighbor = 0; - std::vector<uint> iCellCFC = { 8, 10, 12 }; - std::vector<uint> iCellFCC = { 14, 16, 18 }; - const uint kCF = (uint)iCellCFC.size(); - const uint kFC = (uint)iCellFCC.size(); + std::vector<uint> interpolationCellCoarseToFineCoarse = { 8, 10, 12 }; + std::vector<uint> interpolationCellFineToCoarseCoarse = { 14, 16, 18 }; + const uint numNodesCtoF = (uint)interpolationCellCoarseToFineCoarse.size(); + const uint numNodesFtoC = (uint)interpolationCellFineToCoarseCoarse.size(); uint neighborX[18] = { 0u }; uint neighborY[18] = { 0u }; uint neighborZ[18] = { 0u }; @@ -106,14 +106,14 @@ struct SendIndicesForCommAfterFtoCX { class IndexRearrangementForStreamsTest_reorderSendIndices : public testing::Test { protected: - SendIndicesForCommAfterFtoCX si; + SendIndicesForCommAfterFtoCX sendIndices; SPtr<Parameter> para; std::unique_ptr<IndexRearrangementForStreams> testSubject; void act() { - testSubject->reorderSendIndicesForCommAfterFtoCX(si.direction, si.level, si.indexOfProcessNeighbor, - si.sendIndicesForCommAfterFtoCPositions); + testSubject->reorderSendIndicesForCommAfterFtoCX(sendIndices.direction, sendIndices.level, sendIndices.indexOfProcessNeighbor, + sendIndices.sendIndicesForCommAfterFtoCPositions); }; private: @@ -124,21 +124,21 @@ private: SPtr<GridImpDouble> grid = GridImpDouble::makeShared(nullptr, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, Distribution(), 1); std::shared_ptr<LevelGridBuilderDouble> builder = std::make_shared<LevelGridBuilderDouble>(grid); - builder->setNumberOfSendIndices((uint)si.sendIndices.size()); + builder->setNumberOfSendIndices((uint)sendIndices.sendIndices.size()); - para = testingVF::createParameterForLevel(si.level); + para = testingVF::createParameterForLevel(sendIndices.level); - para->getParH(si.level)->intFC.kFC = si.kFC; - para->getParH(si.level)->intFC.ICellFCC = &(si.iCellFCC.front()); - para->getParH(si.level)->intCF.ICellCFC = &(si.iCellCFC.front()); - para->getParH(si.level)->intCF.kCF = si.kCF; - para->getParH(si.level)->neighborX = si.neighborX; - para->getParH(si.level)->neighborY = si.neighborY; - para->getParH(si.level)->neighborZ = si.neighborZ; + para->getParH(sendIndices.level)->fineToCoarse.numberOfCells = sendIndices.numNodesFtoC; + para->getParH(sendIndices.level)->fineToCoarse.coarseCellIndices = &(sendIndices.interpolationCellFineToCoarseCoarse.front()); + para->getParH(sendIndices.level)->coarseToFine.coarseCellIndices = &(sendIndices.interpolationCellCoarseToFineCoarse.front()); + para->getParH(sendIndices.level)->coarseToFine.numberOfCells = sendIndices.numNodesCtoF; + para->getParH(sendIndices.level)->neighborX = sendIndices.neighborX; + para->getParH(sendIndices.level)->neighborY = sendIndices.neighborY; + para->getParH(sendIndices.level)->neighborZ = sendIndices.neighborZ; - para->setNumberOfProcessNeighborsX(si.numberOfProcessNeighbors, si.level, "send"); - para->getParH(si.level)->sendProcessNeighborX[si.indexOfProcessNeighbor].index = si.sendIndices.data(); - para->initProcessNeighborsAfterFtoCX(si.level); + para->setNumberOfProcessNeighborsX(sendIndices.numberOfProcessNeighbors, sendIndices.level, "send"); + para->getParH(sendIndices.level)->sendProcessNeighborX[sendIndices.indexOfProcessNeighbor].index = sendIndices.sendIndices.data(); + para->initProcessNeighborsAfterFtoCX(sendIndices.level); testSubject = std::make_unique<IndexRearrangementForStreams>( IndexRearrangementForStreams(para, builder, vf::gpu::Communicator::getInstance())); @@ -149,14 +149,14 @@ TEST_F(IndexRearrangementForStreamsTest_reorderSendIndices, reorderSendIndicesFo { act(); - EXPECT_THAT(si.sendIndicesForCommAfterFtoCPositions.size(), - testing::Eq(si.sendIndicesForCommAfterFtoCPositions_expected.size())); - EXPECT_THAT(si.sendIndicesForCommAfterFtoCPositions, testing::Eq(si.sendIndicesForCommAfterFtoCPositions_expected)); + EXPECT_THAT(sendIndices.sendIndicesForCommAfterFtoCPositions.size(), + testing::Eq(sendIndices.sendIndicesForCommAfterFtoCPositions_expected.size())); + EXPECT_THAT(sendIndices.sendIndicesForCommAfterFtoCPositions, testing::Eq(sendIndices.sendIndicesForCommAfterFtoCPositions_expected)); - EXPECT_THAT(para->getParH(si.level)->sendProcessNeighborsAfterFtoCX[si.indexOfProcessNeighbor].numberOfNodes, - testing::Eq(si.numberOfSendNodesAfterFtoC_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(si.level)->sendProcessNeighborX[si.indexOfProcessNeighbor].index, - si.sendProcessNeighborX_expected)) + EXPECT_THAT(para->getParH(sendIndices.level)->sendProcessNeighborsAfterFtoCX[sendIndices.indexOfProcessNeighbor].numberOfNodes, + testing::Eq(sendIndices.numberOfSendNodesAfterFtoC_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(sendIndices.level)->sendProcessNeighborX[sendIndices.indexOfProcessNeighbor].index, + sendIndices.sendProcessNeighborX_expected)) << "sendProcessNeighborX[].index does not match the expected vector"; } diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.cpp index 347ab362d1f6b28a6c2b46f2e885085f955fb34e..f3717b58fca0e81e23be100eb8d15371703f8010 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.cpp @@ -14,77 +14,77 @@ void InterpolationCellGrouper::splitFineToCoarseIntoBorderAndBulk(uint level) co { this->reorderFineToCoarseIntoBorderAndBulk(level); - parDs[level]->intFCBorder.kFC = parHs[level]->intFCBorder.kFC; - parDs[level]->intFCBulk.kFC = parHs[level]->intFCBulk.kFC; - parDs[level]->intFCBorder.ICellFCC = parDs[level]->intFC.ICellFCC; - parDs[level]->intFCBulk.ICellFCC = parDs[level]->intFCBorder.ICellFCC + parDs[level]->intFCBorder.kFC; - parDs[level]->intFCBorder.ICellFCF = parDs[level]->intFC.ICellFCF; - parDs[level]->intFCBulk.ICellFCF = parDs[level]->intFCBorder.ICellFCF + parDs[level]->intFCBorder.kFC; - parDs[level]->offFCBulk.xOffFC = parDs[level]->offFC.xOffFC + parDs[level]->intFCBorder.kFC; - parDs[level]->offFCBulk.yOffFC = parDs[level]->offFC.yOffFC + parDs[level]->intFCBorder.kFC; - parDs[level]->offFCBulk.zOffFC = parDs[level]->offFC.zOffFC + parDs[level]->intFCBorder.kFC; + parDs[level]->fineToCoarseBorder.numberOfCells = parHs[level]->fineToCoarseBorder.numberOfCells; + parDs[level]->fineToCoarseBulk.numberOfCells = parHs[level]->fineToCoarseBulk.numberOfCells; + parDs[level]->fineToCoarseBorder.coarseCellIndices = parDs[level]->fineToCoarse.coarseCellIndices; + parDs[level]->fineToCoarseBulk.coarseCellIndices = parDs[level]->fineToCoarseBorder.coarseCellIndices + parDs[level]->fineToCoarseBorder.numberOfCells; + parDs[level]->fineToCoarseBorder.fineCellIndices = parDs[level]->fineToCoarse.fineCellIndices; + parDs[level]->fineToCoarseBulk.fineCellIndices = parDs[level]->fineToCoarseBorder.fineCellIndices + parDs[level]->fineToCoarseBorder.numberOfCells; + parDs[level]->neighborFineToCoarseBulk.x = parDs[level]->neighborFineToCoarse.x + parDs[level]->fineToCoarseBorder.numberOfCells; + parDs[level]->neighborFineToCoarseBulk.y = parDs[level]->neighborFineToCoarse.y + parDs[level]->fineToCoarseBorder.numberOfCells; + parDs[level]->neighborFineToCoarseBulk.z = parDs[level]->neighborFineToCoarse.z + parDs[level]->fineToCoarseBorder.numberOfCells; } void InterpolationCellGrouper::reorderFineToCoarseIntoBorderAndBulk(uint level) const { // create some local variables for better readability - uint *iCellFccAll = parHs[level]->intFC.ICellFCC; - uint *iCellFcfAll = parHs[level]->intFC.ICellFCF; + uint *fineToCoarseCoarseAll = parHs[level]->fineToCoarse.coarseCellIndices; + uint *fineToCoarseFineAll = parHs[level]->fineToCoarse.fineCellIndices; auto grid = this->builder->getGrid(level); - std::vector<uint> iCellFccBorderVector; - std::vector<uint> iCellFccBulkVector; - std::vector<uint> iCellFcfBorderVector; - std::vector<uint> iCellFcfBulkVector; - std::vector<real> xOffFCBorderVector; - std::vector<real> yOffFCBorderVector; - std::vector<real> zOffFCBorderVector; - std::vector<real> xOffFCBulkVector; - std::vector<real> yOffFCBulkVector; - std::vector<real> zOffFCBulkVector; - - // fill border and bulk vectors with iCellFCs - for (uint i = 0; i < parHs[level]->intFC.kFC; i++) - if (grid->isSparseIndexInFluidNodeIndicesBorder(iCellFccAll[i])) { - iCellFccBorderVector.push_back(iCellFccAll[i]); - iCellFcfBorderVector.push_back(iCellFcfAll[i]); - xOffFCBorderVector.push_back(parHs[level]->offFC.xOffFC[i]); - yOffFCBorderVector.push_back(parHs[level]->offFC.yOffFC[i]); - zOffFCBorderVector.push_back(parHs[level]->offFC.zOffFC[i]); + std::vector<uint> fineToCoarseCoarseBorderVector; + std::vector<uint> fineToCoarseCoarseBulkVector; + std::vector<uint> fineToCoarseFineBorderVector; + std::vector<uint> fineToCoarseFineBulkVector; + std::vector<real> neighborXBorder; + std::vector<real> neighborYBorder; + std::vector<real> neighborZBorder; + std::vector<real> neighborXBulk; + std::vector<real> neighborYBulk; + std::vector<real> neighborZBulk; + + // fill border and bulk vectors with interpolation cells fine to coarse + for (uint i = 0; i < parHs[level]->fineToCoarse.numberOfCells; i++) + if (grid->isSparseIndexInFluidNodeIndicesBorder(fineToCoarseCoarseAll[i])) { + fineToCoarseCoarseBorderVector.push_back(fineToCoarseCoarseAll[i]); + fineToCoarseFineBorderVector.push_back(fineToCoarseFineAll[i]); + neighborXBorder.push_back(parHs[level]->neighborFineToCoarse.x[i]); + neighborYBorder.push_back(parHs[level]->neighborFineToCoarse.y[i]); + neighborZBorder.push_back(parHs[level]->neighborFineToCoarse.z[i]); } else { - iCellFccBulkVector.push_back(iCellFccAll[i]); - iCellFcfBulkVector.push_back(iCellFcfAll[i]); - xOffFCBulkVector.push_back(parHs[level]->offFC.xOffFC[i]); - yOffFCBulkVector.push_back(parHs[level]->offFC.yOffFC[i]); - zOffFCBulkVector.push_back(parHs[level]->offFC.zOffFC[i]); + fineToCoarseCoarseBulkVector.push_back(fineToCoarseCoarseAll[i]); + fineToCoarseFineBulkVector.push_back(fineToCoarseFineAll[i]); + neighborXBulk.push_back(parHs[level]->neighborFineToCoarse.x[i]); + neighborYBulk.push_back(parHs[level]->neighborFineToCoarse.y[i]); + neighborZBulk.push_back(parHs[level]->neighborFineToCoarse.z[i]); } // set new sizes and pointers - parHs[level]->intFCBorder.ICellFCC = iCellFccAll; - parHs[level]->intFCBorder.ICellFCF = iCellFcfAll; - parHs[level]->intFCBorder.kFC = (uint)iCellFccBorderVector.size(); - parHs[level]->intFCBulk.kFC = (uint)iCellFccBulkVector.size(); - parHs[level]->intFCBulk.ICellFCC = iCellFccAll + parHs[level]->intFCBorder.kFC; - parHs[level]->intFCBulk.ICellFCF = iCellFcfAll + parHs[level]->intFCBorder.kFC; - parHs[level]->offFCBulk.xOffFC = parHs[level]->offFC.xOffFC + parHs[level]->intFCBorder.kFC; - parHs[level]->offFCBulk.yOffFC = parHs[level]->offFC.yOffFC + parHs[level]->intFCBorder.kFC; - parHs[level]->offFCBulk.zOffFC = parHs[level]->offFC.zOffFC + parHs[level]->intFCBorder.kFC; + parHs[level]->fineToCoarseBorder.coarseCellIndices = fineToCoarseCoarseAll; + parHs[level]->fineToCoarseBorder.fineCellIndices = fineToCoarseFineAll; + parHs[level]->fineToCoarseBorder.numberOfCells = (uint)fineToCoarseCoarseBorderVector.size(); + parHs[level]->fineToCoarseBulk.numberOfCells = (uint)fineToCoarseCoarseBulkVector.size(); + parHs[level]->fineToCoarseBulk.coarseCellIndices = fineToCoarseCoarseAll + parHs[level]->fineToCoarseBorder.numberOfCells; + parHs[level]->fineToCoarseBulk.fineCellIndices = fineToCoarseFineAll + parHs[level]->fineToCoarseBorder.numberOfCells; + parHs[level]->neighborFineToCoarseBulk.x = parHs[level]->neighborFineToCoarse.x + parHs[level]->fineToCoarseBorder.numberOfCells; + parHs[level]->neighborFineToCoarseBulk.y = parHs[level]->neighborFineToCoarse.y + parHs[level]->fineToCoarseBorder.numberOfCells; + parHs[level]->neighborFineToCoarseBulk.z = parHs[level]->neighborFineToCoarse.z + parHs[level]->fineToCoarseBorder.numberOfCells; // copy the created vectors to the memory addresses of the old arrays // this is inefficient :( - for (uint i = 0; i < (uint)iCellFccBorderVector.size(); i++) { - iCellFccAll[i] = iCellFccBorderVector[i]; - iCellFcfAll[i] = iCellFcfBorderVector[i]; - parHs[level]->offFC.xOffFC[i] = xOffFCBorderVector[i]; - parHs[level]->offFC.yOffFC[i] = yOffFCBorderVector[i]; - parHs[level]->offFC.zOffFC[i] = zOffFCBorderVector[i]; + for (uint i = 0; i < (uint)fineToCoarseCoarseBorderVector.size(); i++) { + fineToCoarseCoarseAll[i] = fineToCoarseCoarseBorderVector[i]; + fineToCoarseFineAll[i] = fineToCoarseFineBorderVector[i]; + parHs[level]->neighborFineToCoarse.x[i] = neighborXBorder[i]; + parHs[level]->neighborFineToCoarse.y[i] = neighborYBorder[i]; + parHs[level]->neighborFineToCoarse.z[i] = neighborZBorder[i]; } - for (uint i = 0; i < (uint)iCellFccBulkVector.size(); i++) { - parHs[level]->intFCBulk.ICellFCC[i] = iCellFccBulkVector[i]; - parHs[level]->intFCBulk.ICellFCF[i] = iCellFcfBulkVector[i]; - parHs[level]->offFCBulk.xOffFC[i] = xOffFCBulkVector[i]; - parHs[level]->offFCBulk.yOffFC[i] = yOffFCBulkVector[i]; - parHs[level]->offFCBulk.zOffFC[i] = zOffFCBulkVector[i]; + for (uint i = 0; i < (uint)fineToCoarseCoarseBulkVector.size(); i++) { + parHs[level]->fineToCoarseBulk.coarseCellIndices[i] = fineToCoarseCoarseBulkVector[i]; + parHs[level]->fineToCoarseBulk.fineCellIndices[i] = fineToCoarseFineBulkVector[i]; + parHs[level]->neighborFineToCoarseBulk.x[i] = neighborXBulk[i]; + parHs[level]->neighborFineToCoarseBulk.y[i] = neighborYBulk[i]; + parHs[level]->neighborFineToCoarseBulk.z[i] = neighborZBulk[i]; } } @@ -92,42 +92,42 @@ void InterpolationCellGrouper::splitCoarseToFineIntoBorderAndBulk(uint level) co { this->reorderCoarseToFineIntoBorderAndBulk(level); - parDs[level]->intCFBorder.kCF = parHs[level]->intCFBorder.kCF; - parDs[level]->intCFBulk.kCF = parHs[level]->intCFBulk.kCF; - parDs[level]->intCFBorder.ICellCFC = parDs[level]->intCF.ICellCFC; - parDs[level]->intCFBulk.ICellCFC = parDs[level]->intCFBorder.ICellCFC + parDs[level]->intCFBorder.kCF; - parDs[level]->intCFBorder.ICellCFF = parDs[level]->intCF.ICellCFF; - parDs[level]->intCFBulk.ICellCFF = parDs[level]->intCFBorder.ICellCFF + parDs[level]->intCFBorder.kCF; - parDs[level]->offCFBulk.xOffCF = parDs[level]->offCF.xOffCF + parDs[level]->intCFBorder.kCF; - parDs[level]->offCFBulk.yOffCF = parDs[level]->offCF.yOffCF + parDs[level]->intCFBorder.kCF; - parDs[level]->offCFBulk.zOffCF = parDs[level]->offCF.zOffCF + parDs[level]->intCFBorder.kCF; + parDs[level]->coarseToFineBorder.numberOfCells = parHs[level]->coarseToFineBorder.numberOfCells; + parDs[level]->coarseToFineBulk.numberOfCells = parHs[level]->coarseToFineBulk.numberOfCells; + parDs[level]->coarseToFineBorder.coarseCellIndices = parDs[level]->coarseToFine.coarseCellIndices; + parDs[level]->coarseToFineBulk.coarseCellIndices = parDs[level]->coarseToFineBorder.coarseCellIndices + parDs[level]->coarseToFineBorder.numberOfCells; + parDs[level]->coarseToFineBorder.fineCellIndices = parDs[level]->coarseToFine.fineCellIndices; + parDs[level]->coarseToFineBulk.fineCellIndices = parDs[level]->coarseToFineBorder.fineCellIndices + parDs[level]->coarseToFineBorder.numberOfCells; + parDs[level]->neighborCoarseToFineBulk.x = parDs[level]->neighborCoarseToFine.x + parDs[level]->coarseToFineBorder.numberOfCells; + parDs[level]->neighborCoarseToFineBulk.y = parDs[level]->neighborCoarseToFine.y + parDs[level]->coarseToFineBorder.numberOfCells; + parDs[level]->neighborCoarseToFineBulk.z = parDs[level]->neighborCoarseToFine.z + parDs[level]->coarseToFineBorder.numberOfCells; } void InterpolationCellGrouper::reorderCoarseToFineIntoBorderAndBulk(uint level) const { // create some local variables for better readability - uint *iCellCfcAll = parHs[level]->intCF.ICellCFC; - uint *iCellCffAll = parHs[level]->intCF.ICellCFF; + uint *coarseToFineCoarseAll = parHs[level]->coarseToFine.coarseCellIndices; + uint *coarseToFineFineAll = parHs[level]->coarseToFine.fineCellIndices; uint *neighborX = this->parHs[level]->neighborX; uint *neighborY = this->parHs[level]->neighborY; uint *neighborZ = this->parHs[level]->neighborZ; auto grid = this->builder->getGrid(level); - std::vector<uint> iCellCfcBorderVector; - std::vector<uint> iCellCfcBulkVector; - std::vector<uint> iCellCffBorderVector; - std::vector<uint> iCellCffBulkVector; - std::vector<real> xOffCFBorderVector; - std::vector<real> yOffCFBorderVector; - std::vector<real> zOffCFBorderVector; - std::vector<real> xOffCFBulkVector; - std::vector<real> yOffCFBulkVector; - std::vector<real> zOffCFBulkVector; + std::vector<uint> coarseToFineCoarseBorderVector; + std::vector<uint> coarseToFineCoarseBulkVector; + std::vector<uint> coarseToFineFineBorderVector; + std::vector<uint> coarseToFineFineBulkVector; + std::vector<real> neighborXBorder; + std::vector<real> neighborYBorder; + std::vector<real> neighborZBorder; + std::vector<real> neighborXBulk; + std::vector<real> neighborYBulk; + std::vector<real> neighborZBulk; uint sparseIndexOfICellBSW; - // fill border and bulk vectors with iCellCFs - for (uint i = 0; i < parHs[level]->intCF.kCF; i++) { - sparseIndexOfICellBSW = iCellCfcAll[i]; + // fill border and bulk vectors with interpolation cells coarse to fine + for (uint i = 0; i < parHs[level]->coarseToFine.numberOfCells; i++) { + sparseIndexOfICellBSW = coarseToFineCoarseAll[i]; if (grid->isSparseIndexInFluidNodeIndicesBorder(sparseIndexOfICellBSW) || grid->isSparseIndexInFluidNodeIndicesBorder(neighborX[sparseIndexOfICellBSW]) || @@ -138,45 +138,45 @@ void InterpolationCellGrouper::reorderCoarseToFineIntoBorderAndBulk(uint level) grid->isSparseIndexInFluidNodeIndicesBorder(neighborZ[neighborY[sparseIndexOfICellBSW]]) || grid->isSparseIndexInFluidNodeIndicesBorder(neighborZ[neighborY[neighborX[sparseIndexOfICellBSW]]])) { - iCellCfcBorderVector.push_back(iCellCfcAll[i]); - iCellCffBorderVector.push_back(iCellCffAll[i]); - xOffCFBorderVector.push_back(parHs[level]->offCF.xOffCF[i]); - yOffCFBorderVector.push_back(parHs[level]->offCF.yOffCF[i]); - zOffCFBorderVector.push_back(parHs[level]->offCF.zOffCF[i]); + coarseToFineCoarseBorderVector.push_back(coarseToFineCoarseAll[i]); + coarseToFineFineBorderVector.push_back(coarseToFineFineAll[i]); + neighborXBorder.push_back(parHs[level]->neighborCoarseToFine.x[i]); + neighborYBorder.push_back(parHs[level]->neighborCoarseToFine.y[i]); + neighborZBorder.push_back(parHs[level]->neighborCoarseToFine.z[i]); } else { - iCellCfcBulkVector.push_back(iCellCfcAll[i]); - iCellCffBulkVector.push_back(iCellCffAll[i]); - xOffCFBulkVector.push_back(parHs[level]->offCF.xOffCF[i]); - yOffCFBulkVector.push_back(parHs[level]->offCF.yOffCF[i]); - zOffCFBulkVector.push_back(parHs[level]->offCF.zOffCF[i]); + coarseToFineCoarseBulkVector.push_back(coarseToFineCoarseAll[i]); + coarseToFineFineBulkVector.push_back(coarseToFineFineAll[i]); + neighborXBulk.push_back(parHs[level]->neighborCoarseToFine.x[i]); + neighborYBulk.push_back(parHs[level]->neighborCoarseToFine.y[i]); + neighborZBulk.push_back(parHs[level]->neighborCoarseToFine.z[i]); } } // set new sizes and pointers - parHs[level]->intCFBorder.ICellCFC = parHs[level]->intCF.ICellCFC; - parHs[level]->intCFBorder.ICellCFF = parHs[level]->intCF.ICellCFF; - parHs[level]->intCFBorder.kCF = (uint)iCellCfcBorderVector.size(); - parHs[level]->intCFBulk.kCF = (uint)iCellCfcBulkVector.size(); - parHs[level]->intCFBulk.ICellCFC = parHs[level]->intCF.ICellCFC + parHs[level]->intCFBorder.kCF; - parHs[level]->intCFBulk.ICellCFF = parHs[level]->intCF.ICellCFF + parHs[level]->intCFBorder.kCF; - parHs[level]->offCFBulk.xOffCF = parHs[level]->offCF.xOffCF + parHs[level]->intCFBorder.kCF; - parHs[level]->offCFBulk.yOffCF = parHs[level]->offCF.yOffCF + parHs[level]->intCFBorder.kCF; - parHs[level]->offCFBulk.zOffCF = parHs[level]->offCF.zOffCF + parHs[level]->intCFBorder.kCF; + parHs[level]->coarseToFineBorder.coarseCellIndices = parHs[level]->coarseToFine.coarseCellIndices; + parHs[level]->coarseToFineBorder.fineCellIndices = parHs[level]->coarseToFine.fineCellIndices; + parHs[level]->coarseToFineBorder.numberOfCells = (uint)coarseToFineCoarseBorderVector.size(); + parHs[level]->coarseToFineBulk.numberOfCells = (uint)coarseToFineCoarseBulkVector.size(); + parHs[level]->coarseToFineBulk.coarseCellIndices = parHs[level]->coarseToFine.coarseCellIndices + parHs[level]->coarseToFineBorder.numberOfCells; + parHs[level]->coarseToFineBulk.fineCellIndices = parHs[level]->coarseToFine.fineCellIndices + parHs[level]->coarseToFineBorder.numberOfCells; + parHs[level]->neighborCoarseToFineBulk.x = parHs[level]->neighborCoarseToFine.x + parHs[level]->coarseToFineBorder.numberOfCells; + parHs[level]->neighborCoarseToFineBulk.y = parHs[level]->neighborCoarseToFine.y + parHs[level]->coarseToFineBorder.numberOfCells; + parHs[level]->neighborCoarseToFineBulk.z = parHs[level]->neighborCoarseToFine.z + parHs[level]->coarseToFineBorder.numberOfCells; // copy the created vectors to the memory addresses of the old arrays // this is inefficient :( - for (uint i = 0; i < (uint)iCellCfcBorderVector.size(); i++) { - parHs[level]->intCFBorder.ICellCFC[i] = iCellCfcBorderVector[i]; - parHs[level]->intCFBorder.ICellCFF[i] = iCellCffBorderVector[i]; - parHs[level]->offCF.xOffCF[i] = xOffCFBorderVector[i]; - parHs[level]->offCF.yOffCF[i] = yOffCFBorderVector[i]; - parHs[level]->offCF.zOffCF[i] = zOffCFBorderVector[i]; + for (uint i = 0; i < (uint)coarseToFineCoarseBorderVector.size(); i++) { + parHs[level]->coarseToFineBorder.coarseCellIndices[i] = coarseToFineCoarseBorderVector[i]; + parHs[level]->coarseToFineBorder.fineCellIndices[i] = coarseToFineFineBorderVector[i]; + parHs[level]->neighborCoarseToFine.x[i] = neighborXBorder[i]; + parHs[level]->neighborCoarseToFine.y[i] = neighborYBorder[i]; + parHs[level]->neighborCoarseToFine.z[i] = neighborZBorder[i]; } - for (uint i = 0; i < (uint)iCellCfcBulkVector.size(); i++) { - parHs[level]->intCFBulk.ICellCFC[i] = iCellCfcBulkVector[i]; - parHs[level]->intCFBulk.ICellCFF[i] = iCellCffBulkVector[i]; - parHs[level]->offCFBulk.xOffCF[i] = xOffCFBulkVector[i]; - parHs[level]->offCFBulk.yOffCF[i] = yOffCFBulkVector[i]; - parHs[level]->offCFBulk.zOffCF[i] = zOffCFBulkVector[i]; + for (uint i = 0; i < (uint)coarseToFineCoarseBulkVector.size(); i++) { + parHs[level]->coarseToFineBulk.coarseCellIndices[i] = coarseToFineCoarseBulkVector[i]; + parHs[level]->coarseToFineBulk.fineCellIndices[i] = coarseToFineFineBulkVector[i]; + parHs[level]->neighborCoarseToFineBulk.x[i] = neighborXBulk[i]; + parHs[level]->neighborCoarseToFineBulk.y[i] = neighborYBulk[i]; + parHs[level]->neighborCoarseToFineBulk.z[i] = neighborZBulk[i]; } } diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.h index 5471194f643e044a7c2cdca1db45017b9d3a1022..600b31aef4ff99080a8e580a24625b35463990ac 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.h @@ -54,14 +54,14 @@ protected: ////////////////////////////////////////////////////////////////////////// //! \brief This function reorders the arrays of CFC/CFF indices and sets the pointers and sizes of the new - //! subarrays: \details The coarse cells for interpolation from coarse to fine (iCellCFC) are divided into two - //! subgroups: border and bulk. The fine cells (iCellCFF) are reordered accordingly. The offset cells (xOffCF, + //! subarrays: \details The coarse cells for interpolation from coarse to fine (coarseToFineCoarse) are divided into two + //! subgroups: border and bulk. The fine cells (coarseToFineFine) are reordered accordingly. The offset cells (xOffCF, //! yOffCF, zOffCF) must be reordered in the same way. void reorderCoarseToFineIntoBorderAndBulk(uint level) const; //! \brief This function reorders the arrays of FCC/FCF indices and return pointers and sizes of the new subarrays: - //! \details The coarse cells for interpolation from fine to coarse (iCellFCC) are divided into two subgroups: - //! border and bulk. The fine cells (iCellFCF) are reordered accordingly. The offset cells (xOffFC, + //! \details The coarse cells for interpolation from fine to coarse (fineToCoarseCoarse) are divided into two subgroups: + //! border and bulk. The fine cells (fineToCoarseFine) are reordered accordingly. The offset cells (xOffFC, //! yOffFC, zOffFC) must be reordered in the same way. void reorderFineToCoarseIntoBorderAndBulk(uint level) const; diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouperTest.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouperTest.cpp index 664552b2f47542cc6ae3d4940c2b74ede1beff91..8fa9a8a71ee5e60a129d06dffa09b8247766b88c 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouperTest.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouperTest.cpp @@ -62,37 +62,37 @@ public: } }; -struct CFBorderBulk { +struct CoarseToFineBorderBulk { // data to work on std::vector<uint> fluidNodeIndicesBorder = { 10, 11, 12, 13, 14, 15, 16 }; - std::vector<uint> iCellCFC = { 1, 11, 3, 13, 5, 15, 7 }; - std::vector<uint> iCellCFF = { 2, 12, 4, 14, 6, 16, 8 }; - const uint sizeOfICellCf = (uint)iCellCFC.size(); + std::vector<uint> intCtoFcoarse = { 1, 11, 3, 13, 5, 15, 7 }; + std::vector<uint> fineCellIndices = { 2, 12, 4, 14, 6, 16, 8 }; + const uint sizeOfInterpolationCoarseToFine = (uint)intCtoFcoarse.size(); uint neighborX[17] = { 0u }; uint neighborY[17] = { 0u }; uint neighborZ[17] = { 0u }; const int level = 0; - std::vector<real> offsetCFx = { 1, 11, 3, 13, 5, 15, 7 }; - std::vector<real> offsetCFy = { 101, 111, 103, 113, 105, 115, 107 }; - std::vector<real> offsetCFz = { 1001, 1011, 1003, 1013, 1005, 1015, 1007 }; + std::vector<real> neighborCFx = { 1, 11, 3, 13, 5, 15, 7 }; + std::vector<real> neighborCFy = { 101, 111, 103, 113, 105, 115, 107 }; + std::vector<real> neighborCFz = { 1001, 1011, 1003, 1013, 1005, 1015, 1007 }; // expected data - std::vector<uint> iCellCfcBorder_expected = { 11, 13, 15 }; - std::vector<uint> iCellCfcBulk_expected = { 1, 3, 5, 7 }; - std::vector<uint> iCellCffBorder_expected = { 12, 14, 16 }; - std::vector<uint> iCellCffBulk_expected = { 2, 4, 6, 8 }; - std::vector<real> offsetCFx_Border_expected = { 11, 13, 15 }; - std::vector<real> offsetCFx_Bulk_expected = { 1, 3, 5, 7 }; - std::vector<real> offsetCFy_Border_expected = { 111, 113, 115 }; - std::vector<real> offsetCFy_Bulk_expected = { 101, 103, 105, 107 }; - std::vector<real> offsetCFz_Border_expected = { 1011, 1013, 1015 }; - std::vector<real> offsetCFz_Bulk_expected = { 1001, 1003, 1005, 1007 }; + std::vector<uint> intCtoFcoarseBorder_expected = { 11, 13, 15 }; + std::vector<uint> intCtoFcoarseBulk_expected = { 1, 3, 5, 7 }; + std::vector<uint> fineCellIndicesBorder_expected = { 12, 14, 16 }; + std::vector<uint> fineCellIndicesBulk_expected = { 2, 4, 6, 8 }; + std::vector<real> neighborCFx_Border_expected = { 11, 13, 15 }; + std::vector<real> neighborCFx_Bulk_expected = { 1, 3, 5, 7 }; + std::vector<real> neighborCFy_Border_expected = { 111, 113, 115 }; + std::vector<real> neighborCFy_Bulk_expected = { 101, 103, 105, 107 }; + std::vector<real> neighborCFz_Border_expected = { 1011, 1013, 1015 }; + std::vector<real> neighborCFz_Bulk_expected = { 1001, 1003, 1005, 1007 }; }; class InterpolationCellGrouperTest_IndicesCFBorderBulkTest : public testing::Test { protected: - CFBorderBulk cf; + CoarseToFineBorderBulk cf; SPtr<Parameter> para; std::unique_ptr<InterpolationCellGrouper> testSubject; @@ -105,15 +105,15 @@ private: std::shared_ptr<LevelGridBuilderDouble> builder = std::make_shared<LevelGridBuilderDouble>(grid); para = testingVF::createParameterForLevel(cf.level); - para->getParH(cf.level)->intCF.ICellCFC = &(cf.iCellCFC.front()); - para->getParH(cf.level)->intCF.ICellCFF = &(cf.iCellCFF.front()); + para->getParH(cf.level)->coarseToFine.coarseCellIndices = &(cf.intCtoFcoarse.front()); + para->getParH(cf.level)->coarseToFine.fineCellIndices = &(cf.fineCellIndices.front()); para->getParH(cf.level)->neighborX = cf.neighborX; para->getParH(cf.level)->neighborY = cf.neighborY; para->getParH(cf.level)->neighborZ = cf.neighborZ; - para->getParH(cf.level)->intCF.kCF = cf.sizeOfICellCf; - para->getParH(cf.level)->offCF.xOffCF = &(cf.offsetCFx.front()); - para->getParH(cf.level)->offCF.yOffCF = &(cf.offsetCFy.front()); - para->getParH(cf.level)->offCF.zOffCF = &(cf.offsetCFz.front()); + para->getParH(cf.level)->coarseToFine.numberOfCells = cf.sizeOfInterpolationCoarseToFine; + para->getParH(cf.level)->neighborCoarseToFine.x = &(cf.neighborCFx.front()); + para->getParH(cf.level)->neighborCoarseToFine.y = &(cf.neighborCFy.front()); + para->getParH(cf.level)->neighborCoarseToFine.z = &(cf.neighborCFz.front()); return std::make_unique<InterpolationCellGrouper>(para->getParHallLevels(), para->getParDallLevels(), builder); }; @@ -128,65 +128,65 @@ TEST_F(InterpolationCellGrouperTest_IndicesCFBorderBulkTest, splitCoarseToFineIn { testSubject->splitCoarseToFineIntoBorderAndBulk(cf.level); - EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF + para->getParH(cf.level)->intCFBulk.kCF, - testing::Eq(cf.sizeOfICellCf)) + EXPECT_THAT(para->getParH(cf.level)->coarseToFineBorder.numberOfCells + para->getParH(cf.level)->coarseToFineBulk.numberOfCells, + testing::Eq(cf.sizeOfInterpolationCoarseToFine)) << "The number of interpolation cells from coarse to fine changed during reordering."; // check coarse to fine border (coarse nodes) - EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF, testing::Eq((uint)cf.iCellCfcBorder_expected.size())); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected)) - << "intCFBorder.ICellCFC does not match the expected border vector"; + EXPECT_THAT(para->getParH(cf.level)->coarseToFineBorder.numberOfCells, testing::Eq((uint)cf.intCtoFcoarseBorder_expected.size())); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->coarseToFineBorder.coarseCellIndices, cf.intCtoFcoarseBorder_expected)) + << "coarseToFineBorder.intCtoFcoarse does not match the expected border vector"; // check coarse to fine border (fine nodes) - EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF, testing::Eq((uint)cf.iCellCffBorder_expected.size())); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFF, cf.iCellCffBorder_expected)) - << "intCFBorder.ICellCFF does not match the expected border vector"; + EXPECT_THAT(para->getParH(cf.level)->coarseToFineBorder.numberOfCells, testing::Eq((uint)cf.fineCellIndicesBorder_expected.size())); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->coarseToFineBorder.fineCellIndices, cf.fineCellIndicesBorder_expected)) + << "coarseToFineBorder.fineCellIndices does not match the expected border vector"; // check coarse to fine bulk (coarse nodes) - EXPECT_THAT(para->getParH(cf.level)->intCFBulk.kCF, testing::Eq((uint)cf.iCellCfcBulk_expected.size())); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFC, cf.iCellCfcBulk_expected)) - << "intCFBulk.ICellCFC does not match the expected bulk vector"; + EXPECT_THAT(para->getParH(cf.level)->coarseToFineBulk.numberOfCells, testing::Eq((uint)cf.intCtoFcoarseBulk_expected.size())); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->coarseToFineBulk.coarseCellIndices, cf.intCtoFcoarseBulk_expected)) + << "coarseToFineBulk.intCtoFcoarse does not match the expected bulk vector"; // check coarse to fine bulk (fine nodes) - EXPECT_THAT(para->getParH(cf.level)->intCFBulk.kCF, testing::Eq((uint)cf.iCellCffBulk_expected.size())); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFF, cf.iCellCffBulk_expected)) - << "intCFBulk.ICellCFF does not match the expected bulk vector"; - - // check offset cells - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.xOffCF, cf.offsetCFx_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.xOffCF, cf.offsetCFx_Bulk_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.yOffCF, cf.offsetCFy_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.yOffCF, cf.offsetCFy_Bulk_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.zOffCF, cf.offsetCFz_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.zOffCF, cf.offsetCFz_Bulk_expected)); + EXPECT_THAT(para->getParH(cf.level)->coarseToFineBulk.numberOfCells, testing::Eq((uint)cf.fineCellIndicesBulk_expected.size())); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->coarseToFineBulk.fineCellIndices, cf.fineCellIndicesBulk_expected)) + << "coarseToFineBulk.fineCellIndices does not match the expected bulk vector"; + + // check neighbor cells + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->neighborCoarseToFine.x, cf.neighborCFx_Border_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->neighborCoarseToFineBulk.x, cf.neighborCFx_Bulk_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->neighborCoarseToFine.y, cf.neighborCFy_Border_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->neighborCoarseToFineBulk.y, cf.neighborCFy_Bulk_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->neighborCoarseToFine.z, cf.neighborCFz_Border_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->neighborCoarseToFineBulk.z, cf.neighborCFz_Bulk_expected)); } -struct FCBorderBulk { +struct FineToCoarseBorderBulk { // data to work on std::vector<uint> fluidNodeIndicesBorder = { 110, 111, 112, 113, 114, 115, 116 }; - std::vector<uint> iCellFCC = { 11, 111, 13, 113, 15, 115, 17 }; - std::vector<uint> iCellFCF = { 12, 112, 14, 114, 16, 116, 18 }; - const uint sizeOfICellFC = (uint)iCellFCC.size(); + std::vector<uint> coarseCellIndices = { 11, 111, 13, 113, 15, 115, 17 }; + std::vector<uint> fineCellIndices = { 12, 112, 14, 114, 16, 116, 18 }; + const uint sizeOfIntFineToCoarse = (uint)coarseCellIndices.size(); const int level = 1; - std::vector<real> offsetFCx = { 11, 111, 13, 113, 15, 115, 17 }; - std::vector<real> offsetFCy = { 1101, 1111, 1103, 1113, 1105, 1115, 1107 }; - std::vector<real> offsetFCz = { 11001, 11011, 11003, 11013, 11005, 11015, 11007 }; + std::vector<real> neighborx = { 11, 111, 13, 113, 15, 115, 17 }; + std::vector<real> neighbory = { 1101, 1111, 1103, 1113, 1105, 1115, 1107 }; + std::vector<real> neighborz = { 11001, 11011, 11003, 11013, 11005, 11015, 11007 }; // expected data - std::vector<uint> iCellFccBorder_expected = { 111, 113, 115 }; - std::vector<uint> iCellFccBulk_expected = { 11, 13, 15, 17 }; - std::vector<uint> iCellFcfBorder_expected = { 112, 114, 116 }; - std::vector<uint> iCellFcfBulk_expected = { 12, 14, 16, 18 }; - std::vector<real> offsetFCx_Border_expected = { 111, 113, 115 }; - std::vector<real> offsetFCx_Bulk_expected = { 11, 13, 15, 17 }; - std::vector<real> offsetFCy_Border_expected = { 1111, 1113, 1115 }; - std::vector<real> offsetFCy_Bulk_expected = { 1101, 1103, 1105, 1107 }; - std::vector<real> offsetFCz_Border_expected = { 11011, 11013, 11015 }; - std::vector<real> offsetFCz_Bulk_expected = { 11001, 11003, 11005, 11007 }; + std::vector<uint> coarseCellIndicesBorder_expected = { 111, 113, 115 }; + std::vector<uint> coarseCellIndicesBulk_expected = { 11, 13, 15, 17 }; + std::vector<uint> fineCellIndicesBorder_expected = { 112, 114, 116 }; + std::vector<uint> fineCellIndicesBulk_expected = { 12, 14, 16, 18 }; + std::vector<real> neighborx_Border_expected = { 111, 113, 115 }; + std::vector<real> neighborx_Bulk_expected = { 11, 13, 15, 17 }; + std::vector<real> neighbory_Border_expected = { 1111, 1113, 1115 }; + std::vector<real> neighbory_Bulk_expected = { 1101, 1103, 1105, 1107 }; + std::vector<real> neighborz_Border_expected = { 11011, 11013, 11015 }; + std::vector<real> neighborz_Bulk_expected = { 11001, 11003, 11005, 11007 }; }; class InterpolationCellGrouperTest_IndicesFCBorderBulkTest : public testing::Test { protected: - FCBorderBulk fc; + FineToCoarseBorderBulk fc; SPtr<Parameter> para; std::unique_ptr<InterpolationCellGrouper> testSubject; @@ -199,12 +199,12 @@ private: std::shared_ptr<LevelGridBuilderDouble> builder = std::make_shared<LevelGridBuilderDouble>(grid); para = testingVF::createParameterForLevel(fc.level); - para->getParH(fc.level)->intFC.ICellFCC = &(fc.iCellFCC.front()); - para->getParH(fc.level)->intFC.ICellFCF = &(fc.iCellFCF.front()); - para->getParH(fc.level)->intFC.kFC = fc.sizeOfICellFC; - para->getParH(fc.level)->offFC.xOffFC = &(fc.offsetFCx.front()); - para->getParH(fc.level)->offFC.yOffFC = &(fc.offsetFCy.front()); - para->getParH(fc.level)->offFC.zOffFC = &(fc.offsetFCz.front()); + para->getParH(fc.level)->fineToCoarse.coarseCellIndices = &(fc.coarseCellIndices.front()); + para->getParH(fc.level)->fineToCoarse.fineCellIndices = &(fc.fineCellIndices.front()); + para->getParH(fc.level)->fineToCoarse.numberOfCells = fc.sizeOfIntFineToCoarse; + para->getParH(fc.level)->neighborFineToCoarse.x = &(fc.neighborx.front()); + para->getParH(fc.level)->neighborFineToCoarse.y = &(fc.neighbory.front()); + para->getParH(fc.level)->neighborFineToCoarse.z = &(fc.neighborz.front()); return std::make_unique<InterpolationCellGrouper>(para->getParHallLevels(), para->getParDallLevels(), builder); }; @@ -219,33 +219,33 @@ TEST_F(InterpolationCellGrouperTest_IndicesFCBorderBulkTest, splitFineToCoarseIn { testSubject->splitFineToCoarseIntoBorderAndBulk(fc.level); - EXPECT_THAT(para->getParH(fc.level)->intFCBorder.kFC + para->getParH(fc.level)->intFCBulk.kFC, - testing::Eq(fc.sizeOfICellFC)) + EXPECT_THAT(para->getParH(fc.level)->fineToCoarseBorder.numberOfCells + para->getParH(fc.level)->fineToCoarseBulk.numberOfCells, + testing::Eq(fc.sizeOfIntFineToCoarse)) << "The number of interpolation cells from coarse to fine changed during reordering."; // check coarse to fine border (coarse nodes) - EXPECT_THAT(para->getParH(fc.level)->intFCBorder.kFC, testing::Eq((uint)fc.iCellFccBorder_expected.size())); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->intFCBorder.ICellFCC, fc.iCellFccBorder_expected)) - << "intFCBorder.ICellFCC does not match the expected border vector"; + EXPECT_THAT(para->getParH(fc.level)->fineToCoarseBorder.numberOfCells, testing::Eq((uint)fc.coarseCellIndicesBorder_expected.size())); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->fineToCoarseBorder.coarseCellIndices, fc.coarseCellIndicesBorder_expected)) + << "fineToCoarseBorder.coarseCellIndices does not match the expected border vector"; // check coarse to fine border (fine nodes) - EXPECT_THAT(para->getParH(fc.level)->intFCBorder.kFC, testing::Eq((uint)fc.iCellFcfBorder_expected.size())); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->intFCBorder.ICellFCF, fc.iCellFcfBorder_expected)) - << "intFCBorder.ICellFCF does not match the expected border vector"; + EXPECT_THAT(para->getParH(fc.level)->fineToCoarseBorder.numberOfCells, testing::Eq((uint)fc.fineCellIndicesBorder_expected.size())); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->fineToCoarseBorder.fineCellIndices, fc.fineCellIndicesBorder_expected)) + << "fineToCoarseBorder.fineCellIndices does not match the expected border vector"; // check coarse to fine bulk (coarse nodes) - EXPECT_THAT(para->getParH(fc.level)->intFCBulk.kFC, testing::Eq((uint)fc.iCellFccBulk_expected.size())); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->intFCBulk.ICellFCC, fc.iCellFccBulk_expected)) - << "intFCBulk.ICellFCC does not match the expected bulk vector"; + EXPECT_THAT(para->getParH(fc.level)->fineToCoarseBulk.numberOfCells, testing::Eq((uint)fc.coarseCellIndicesBulk_expected.size())); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->fineToCoarseBulk.coarseCellIndices, fc.coarseCellIndicesBulk_expected)) + << "fineToCoarseBulk.coarseCellIndices does not match the expected bulk vector"; // check coarse to fine bulk (fine nodes) - EXPECT_THAT(para->getParH(fc.level)->intFCBulk.kFC, testing::Eq((uint)fc.iCellFcfBulk_expected.size())); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->intFCBulk.ICellFCF, fc.iCellFcfBulk_expected)) - << "intFCBulk.ICellFCF does not match the expected bulk vector"; - - // check offset cells - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->offFC.xOffFC, fc.offsetFCx_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->offFCBulk.xOffFC, fc.offsetFCx_Bulk_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->offFC.yOffFC, fc.offsetFCy_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->offFCBulk.yOffFC, fc.offsetFCy_Bulk_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->offFC.zOffFC, fc.offsetFCz_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->offFCBulk.zOffFC, fc.offsetFCz_Bulk_expected)); + EXPECT_THAT(para->getParH(fc.level)->fineToCoarseBulk.numberOfCells, testing::Eq((uint)fc.fineCellIndicesBulk_expected.size())); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->fineToCoarseBulk.fineCellIndices, fc.fineCellIndicesBulk_expected)) + << "fineToCoarseBulk.fineCellIndices does not match the expected bulk vector"; + + // check neighbor cells + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->neighborFineToCoarse.x, fc.neighborx_Border_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->neighborFineToCoarseBulk.x, fc.neighborx_Bulk_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->neighborFineToCoarse.y, fc.neighbory_Border_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->neighborFineToCoarseBulk.y, fc.neighbory_Bulk_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->neighborFineToCoarse.z, fc.neighborz_Border_expected)); + EXPECT_TRUE(vectorsAreEqual(para->getParH(fc.level)->neighborFineToCoarseBulk.z, fc.neighborz_Bulk_expected)); } diff --git a/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.cpp b/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.cpp index 49a6887ef2e462aba190023d334caa0012e2254e..297e2ac9c05fd225811f40439a26e0b3b4ce4811 100644 --- a/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.cpp +++ b/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.cpp @@ -3,13 +3,13 @@ void GridScalingFactory::setScalingFactory(const GridScalingFactory::GridScaling gridScalingType) { - this->gridScaling = gridScalingType; + this->gridScalingType = gridScalingType; } -gridScalingFC GridScalingFactory::getGridScalingFC(bool hasTurbulentViscosity) const +gridScaling GridScalingFactory::getGridScalingFC(bool hasTurbulentViscosity) const { // for descriptions of the scaling types refer to the header - switch (gridScaling) { + switch (gridScalingType) { case GridScaling::ScaleRhoSq: return ScaleFC_RhoSq_comp_27; break; @@ -22,10 +22,10 @@ gridScalingFC GridScalingFactory::getGridScalingFC(bool hasTurbulentViscosity) c } } -gridScalingCF GridScalingFactory::getGridScalingCF(bool hasTurbulentViscosity) const +gridScaling GridScalingFactory::getGridScalingCF(bool hasTurbulentViscosity) const { // for descriptions of the scaling types refer to the header - switch (gridScaling) { + switch (gridScalingType) { case GridScaling::ScaleRhoSq: return ScaleCF_RhoSq_comp_27; break; diff --git a/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.h b/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.h index d760240c2c5ed429799cd89e57704464515a92f5..f8729b0ed9df784eb8d409b6ea97a0ab0f9cbb5a 100644 --- a/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.h +++ b/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.h @@ -42,8 +42,7 @@ struct LBMSimulationParameter; class Parameter; struct CUstream_st; -using gridScalingFC = std::function<void(LBMSimulationParameter *, LBMSimulationParameter *, ICellFC *, OffFC&, CUstream_st *stream)>; -using gridScalingCF = std::function<void(LBMSimulationParameter *, LBMSimulationParameter *, ICellCF *, OffCF&, CUstream_st *stream)>; +using gridScaling = std::function<void(LBMSimulationParameter *, LBMSimulationParameter *, ICells *, ICellNeigh&, CUstream_st *stream)>; class GridScalingFactory { @@ -59,11 +58,11 @@ public: void setScalingFactory(const GridScalingFactory::GridScaling gridScalingType); - [[nodiscard]] gridScalingFC getGridScalingFC(bool hasTurbulentViscosity) const; - [[nodiscard]] gridScalingCF getGridScalingCF(bool hasTurbulentViscosity) const; + [[nodiscard]] gridScaling getGridScalingFC(bool hasTurbulentViscosity) const; + [[nodiscard]] gridScaling getGridScalingCF(bool hasTurbulentViscosity) const; private: - GridScaling gridScaling = GridScaling::NotSpecified; + GridScaling gridScalingType = GridScaling::NotSpecified; }; #endif diff --git a/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.cpp b/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.cpp index ec435f0647ba973dbb405aefad069b285e09d6b5..9a0eae2282ca0abf11c77e6e8503c2a5b2bcc0b7 100644 --- a/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.cpp +++ b/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.cpp @@ -1,11 +1,11 @@ #include "FindInterface/FindInterface.h" -void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, +void interpolation(InterpolationCells &intCF, InterpolationCells &intFC, unsigned int LxCoarse, unsigned int LyCoarse, unsigned int LzCoarse, unsigned int LxFine, unsigned int LyFine, unsigned int LzFine, unsigned int dNx, unsigned int dNy, unsigned int dNz, unsigned int *kCoarse, unsigned int *kFine, bool* needInterface, - OffsetCF &offCF, OffsetFC &offFC) + InterpolationCellNeighbor &offCF, InterpolationCellNeighbor &offFC) { unsigned int iC,iF,jC,jF,hC,hF; unsigned int posCSWB, posFSWB; @@ -13,8 +13,8 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, real xOff = (real)0.0f; real yOff = (real)0.0f; real zOff = (real)0.0f; - intCF.kCF = 0; - intFC.kFC = 0; + intCF.numberOfCells = 0; + intFC.numberOfCells = 0; /////////////////////////////////////////////////////////////////////////// //Defines @@ -125,12 +125,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } } ////////////////////////// fine->coarse //////////////////////////// @@ -142,12 +142,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -166,12 +166,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } } ////////////////////////// fine->coarse //////////////////////////// @@ -183,12 +183,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -207,12 +207,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } } ////////////////////////// fine->coarse //////////////////////////// @@ -224,12 +224,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -248,12 +248,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } } ////////////////////////// fine->coarse //////////////////////////// @@ -265,12 +265,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -289,12 +289,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } } ////////////////////////// fine->coarse //////////////////////////// @@ -306,12 +306,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] =xOff; - offFC.yOffFC[intFC.kFC] =yOff; - offFC.zOffFC[intFC.kFC] =zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] =xOff; + offFC.y[intFC.numberOfCells] =yOff; + offFC.z[intFC.numberOfCells] =zOff; + intFC.numberOfCells++; } } } @@ -330,12 +330,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } } ////////////////////////// fine->coarse //////////////////////////// @@ -347,12 +347,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -401,12 +401,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -427,12 +427,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_E]==false) { @@ -443,12 +443,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[INTERFACE_N]==false) @@ -460,12 +460,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -506,12 +506,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -532,12 +532,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_E]==false) { @@ -548,12 +548,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[INTERFACE_S]==false) @@ -565,12 +565,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -611,12 +611,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -637,12 +637,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_E]==false) { @@ -653,12 +653,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[INTERFACE_T]==false) @@ -670,12 +670,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -716,12 +716,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -742,12 +742,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_E]==false) { @@ -758,12 +758,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[INTERFACE_B]==false) @@ -775,12 +775,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -821,12 +821,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -847,12 +847,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_W]==false) { @@ -863,12 +863,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[INTERFACE_N]==false) @@ -880,12 +880,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -926,12 +926,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -952,12 +952,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_W]==false) { @@ -968,12 +968,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[INTERFACE_S]==false) @@ -985,12 +985,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -1031,12 +1031,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -1057,12 +1057,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_W]==false) { @@ -1073,12 +1073,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[INTERFACE_T]==false) @@ -1090,12 +1090,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -1136,12 +1136,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -1162,12 +1162,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_W]==false) { @@ -1178,12 +1178,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[INTERFACE_B]==false) @@ -1195,12 +1195,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -1241,12 +1241,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -1267,12 +1267,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[ INTERFACE_N]==false) { @@ -1283,12 +1283,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[ INTERFACE_T]==false) @@ -1300,12 +1300,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -1346,12 +1346,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -1372,12 +1372,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[ INTERFACE_N]==false) { @@ -1388,12 +1388,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[ INTERFACE_B]==false) @@ -1405,12 +1405,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -1451,12 +1451,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -1477,12 +1477,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[ INTERFACE_S]==false) { @@ -1493,12 +1493,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[ INTERFACE_T]==false) @@ -1510,12 +1510,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -1556,12 +1556,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; } ////////////////////////////////////////////////////////////////////////// @@ -1582,12 +1582,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[ INTERFACE_S]==false) { @@ -1598,12 +1598,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } else if (needInterface[ INTERFACE_B]==false) @@ -1615,12 +1615,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, { posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } } @@ -1665,12 +1665,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, ////////////////////////////////////////////////////////////////////////// posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; ////////////////////////////////////////////////////////////////////////// @@ -1691,12 +1691,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; if (needInterface[INTERFACE_E]==false) { @@ -1706,12 +1706,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_N]==false) { @@ -1721,12 +1721,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_T]==false) { @@ -1736,12 +1736,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_E]==false) && (needInterface[INTERFACE_N]==false)) { @@ -1751,12 +1751,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_E]==false) && (needInterface[INTERFACE_T]==false)) { @@ -1766,12 +1766,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_N]==false) && (needInterface[INTERFACE_T]==false)) { @@ -1781,12 +1781,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } @@ -1822,12 +1822,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, ////////////////////////////////////////////////////////////////////////// posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; ////////////////////////////////////////////////////////////////////////// @@ -1848,12 +1848,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; if (needInterface[INTERFACE_E]==false) { @@ -1863,12 +1863,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_N]==false) { @@ -1878,12 +1878,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_B]==false) { @@ -1893,12 +1893,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_E]==false) && (needInterface[INTERFACE_N]==false)) { @@ -1908,12 +1908,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_E]==false) && (needInterface[INTERFACE_B]==false)) { @@ -1923,12 +1923,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_N]==false) && (needInterface[INTERFACE_B]==false)) { @@ -1938,12 +1938,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } @@ -1979,12 +1979,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, ////////////////////////////////////////////////////////////////////////// posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; ////////////////////////////////////////////////////////////////////////// @@ -2005,12 +2005,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; if (needInterface[INTERFACE_E]==false) { @@ -2020,12 +2020,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_S]==false) { @@ -2035,12 +2035,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_T]==false) { @@ -2050,12 +2050,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_E]==false) && (needInterface[INTERFACE_S]==false)) { @@ -2065,12 +2065,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_E]==false) && (needInterface[INTERFACE_T]==false)) { @@ -2080,12 +2080,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_S]==false) && (needInterface[INTERFACE_T]==false)) { @@ -2095,12 +2095,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } @@ -2136,12 +2136,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, ////////////////////////////////////////////////////////////////////////// posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; ////////////////////////////////////////////////////////////////////////// @@ -2162,12 +2162,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; if (needInterface[INTERFACE_E]==false) { @@ -2177,12 +2177,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_S]==false) { @@ -2192,12 +2192,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_B]==false) { @@ -2207,12 +2207,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_E]==false) && (needInterface[INTERFACE_S]==false)) { @@ -2222,12 +2222,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_E]==false) && (needInterface[INTERFACE_B]==false)) { @@ -2237,12 +2237,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_S]==false) && (needInterface[INTERFACE_B]==false)) { @@ -2252,12 +2252,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } @@ -2293,12 +2293,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, ////////////////////////////////////////////////////////////////////////// posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; ////////////////////////////////////////////////////////////////////////// @@ -2319,12 +2319,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; if (needInterface[INTERFACE_W]==false) { @@ -2334,12 +2334,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_N]==false) { @@ -2349,12 +2349,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_T]==false) { @@ -2364,12 +2364,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_W]==false) && (needInterface[INTERFACE_N]==false)) { @@ -2379,12 +2379,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_W]==false) && (needInterface[INTERFACE_T]==false)) { @@ -2394,12 +2394,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_N]==false) && (needInterface[INTERFACE_T]==false)) { @@ -2409,12 +2409,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } @@ -2450,12 +2450,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, ////////////////////////////////////////////////////////////////////////// posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; ////////////////////////////////////////////////////////////////////////// @@ -2476,12 +2476,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; if (needInterface[INTERFACE_W]==false) { @@ -2491,12 +2491,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_N]==false) { @@ -2506,12 +2506,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_B]==false) { @@ -2521,12 +2521,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_W]==false) && (needInterface[INTERFACE_N]==false)) { @@ -2536,12 +2536,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_W]==false) && (needInterface[INTERFACE_B]==false)) { @@ -2551,12 +2551,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_N]==false) && (needInterface[INTERFACE_B]==false)) { @@ -2566,12 +2566,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } @@ -2607,12 +2607,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, ////////////////////////////////////////////////////////////////////////// posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; ////////////////////////////////////////////////////////////////////////// @@ -2633,12 +2633,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; if (needInterface[INTERFACE_W]==false) { @@ -2648,12 +2648,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_S]==false) { @@ -2663,12 +2663,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_T]==false) { @@ -2678,12 +2678,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_W]==false) && (needInterface[INTERFACE_S]==false)) { @@ -2693,12 +2693,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_W]==false) && (needInterface[INTERFACE_T]==false)) { @@ -2708,12 +2708,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_S]==false) && (needInterface[INTERFACE_T]==false)) { @@ -2723,12 +2723,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } @@ -2764,12 +2764,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, ////////////////////////////////////////////////////////////////////////// posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine , LyFine); - intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB]; - intCF.ICellCFF[intCF.kCF] = kFine[posFSWB]; - offCF.xOffCF[intCF.kCF] = xOff; - offCF.yOffCF[intCF.kCF] = yOff; - offCF.zOffCF[intCF.kCF] = zOff; - intCF.kCF++; + intCF.coarseCellIndices[intCF.numberOfCells] = kCoarse[posCSWB]; + intCF.fineCellIndices[intCF.numberOfCells] = kFine[posFSWB]; + offCF.x[intCF.numberOfCells] = xOff; + offCF.y[intCF.numberOfCells] = yOff; + offCF.z[intCF.numberOfCells] = zOff; + intCF.numberOfCells++; ////////////////////////////////////////////////////////////////////////// @@ -2790,12 +2790,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; if (needInterface[INTERFACE_W]==false) { @@ -2805,12 +2805,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_S]==false) { @@ -2820,12 +2820,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if (needInterface[INTERFACE_B]==false) { @@ -2835,12 +2835,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_W]==false) && (needInterface[INTERFACE_S]==false)) { @@ -2850,12 +2850,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_W]==false) && (needInterface[INTERFACE_B]==false)) { @@ -2865,12 +2865,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } if ((needInterface[INTERFACE_S]==false) && (needInterface[INTERFACE_B]==false)) { @@ -2880,12 +2880,12 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, posC=vectorPosition( iC, jC, hC, LxCoarse, LyCoarse); posFSWB=vectorPosition(iF, jF, hF, LxFine, LyFine); - intFC.ICellFCC[intFC.kFC] = kCoarse[posC]; - intFC.ICellFCF[intFC.kFC] = kFine[posFSWB]; - offFC.xOffFC[intFC.kFC] = xOff; - offFC.yOffFC[intFC.kFC] = yOff; - offFC.zOffFC[intFC.kFC] = zOff; - intFC.kFC++; + intFC.coarseCellIndices[intFC.numberOfCells] = kCoarse[posC]; + intFC.fineCellIndices[intFC.numberOfCells] = kFine[posFSWB]; + offFC.x[intFC.numberOfCells] = xOff; + offFC.y[intFC.numberOfCells] = yOff; + offFC.z[intFC.numberOfCells] = zOff; + intFC.numberOfCells++; } } diff --git a/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h b/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h index 3be49570b33d99f9517796b33934dee1e2f31221..17e63824f930161656291bf2d7ecc05e23af9161 100644 --- a/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h +++ b/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h @@ -5,11 +5,11 @@ #include "lbm/constants/D3Q27.h" -void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, +void interpolation(InterpolationCells &intCF, InterpolationCells &intFC, unsigned int LxCoarse, unsigned int LyCoarse, unsigned int LzCoarse, unsigned int LxFine, unsigned int LyFine, unsigned int LzFine, unsigned int dNx, unsigned int dNy, unsigned int dNz, unsigned int *kCoarse, unsigned int *kFine, bool* needInterface, - OffsetCF &offCF, OffsetFC &offFC); + InterpolationCellNeighbor &offCF, InterpolationCellNeighbor &offFC); #endif diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp index a1797e4358e203f9de017f5cbc3c85f71a4d9641..e9d40ddf71f2e72d68f01fe333df16cf1c7b49d9 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp +++ b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp @@ -1106,116 +1106,131 @@ void CudaMemoryManager::cudaFreeMedianOut(int lev) //Interface CF void CudaMemoryManager::cudaAllocInterfaceCF(int lev) { + uint mem_size_kCF = sizeof(uint) * parameter->getParH(lev)->coarseToFine.numberOfCells; //Host - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->intCF.ICellCFC), parameter->getParH(lev)->mem_size_kCF )); - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->intCF.ICellCFF), parameter->getParH(lev)->mem_size_kCF )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->coarseToFine.coarseCellIndices), mem_size_kCF )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->coarseToFine.fineCellIndices), mem_size_kCF )); //Device - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->intCF.ICellCFC), parameter->getParD(lev)->mem_size_kCF )); - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->intCF.ICellCFF), parameter->getParD(lev)->mem_size_kCF )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->coarseToFine.coarseCellIndices), mem_size_kCF )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->coarseToFine.fineCellIndices), mem_size_kCF )); ////////////////////////////////////////////////////////////////////////// - double tmp = 2. * (double)parameter->getParH(lev)->mem_size_kCF; + double tmp = 2. * (double)mem_size_kCF; setMemsizeGPU(tmp, false); } void CudaMemoryManager::cudaCopyInterfaceCF(int lev) { - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->intCF.ICellCFC, parameter->getParH(lev)->intCF.ICellCFC, parameter->getParH(lev)->mem_size_kCF, cudaMemcpyHostToDevice)); - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->intCF.ICellCFF, parameter->getParH(lev)->intCF.ICellCFF, parameter->getParH(lev)->mem_size_kCF, cudaMemcpyHostToDevice)); + uint mem_size_kCF = sizeof(uint) * parameter->getParH(lev)->coarseToFine.numberOfCells; + + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->coarseToFine.coarseCellIndices, parameter->getParH(lev)->coarseToFine.coarseCellIndices, mem_size_kCF, cudaMemcpyHostToDevice)); + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->coarseToFine.fineCellIndices, parameter->getParH(lev)->coarseToFine.fineCellIndices, mem_size_kCF, cudaMemcpyHostToDevice)); } void CudaMemoryManager::cudaFreeInterfaceCF(int lev) { - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->intCF.ICellCFC)); - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->intCF.ICellCFF)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->coarseToFine.coarseCellIndices)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->coarseToFine.fineCellIndices)); } //Interface FC void CudaMemoryManager::cudaAllocInterfaceFC(int lev) { + uint mem_size_kFC = sizeof(uint) * parameter->getParH(lev)->fineToCoarse.numberOfCells; + //Host - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->intFC.ICellFCF), parameter->getParH(lev)->mem_size_kFC )); - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->intFC.ICellFCC), parameter->getParH(lev)->mem_size_kFC )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->fineToCoarse.fineCellIndices), mem_size_kFC )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->fineToCoarse.coarseCellIndices), mem_size_kFC )); //Device - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->intFC.ICellFCF), parameter->getParD(lev)->mem_size_kFC )); - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->intFC.ICellFCC), parameter->getParD(lev)->mem_size_kFC )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->fineToCoarse.fineCellIndices), mem_size_kFC )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->fineToCoarse.coarseCellIndices), mem_size_kFC )); ////////////////////////////////////////////////////////////////////////// - double tmp = 2. * (double)parameter->getParH(lev)->mem_size_kFC; + double tmp = 2. * (double)mem_size_kFC; setMemsizeGPU(tmp, false); } void CudaMemoryManager::cudaCopyInterfaceFC(int lev) { - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->intFC.ICellFCF, parameter->getParH(lev)->intFC.ICellFCF, parameter->getParH(lev)->mem_size_kFC, cudaMemcpyHostToDevice)); - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->intFC.ICellFCC, parameter->getParH(lev)->intFC.ICellFCC, parameter->getParH(lev)->mem_size_kFC, cudaMemcpyHostToDevice)); + uint mem_size_kFC = sizeof(uint) * parameter->getParH(lev)->fineToCoarse.numberOfCells; + + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->fineToCoarse.fineCellIndices, parameter->getParH(lev)->fineToCoarse.fineCellIndices, mem_size_kFC, cudaMemcpyHostToDevice)); + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->fineToCoarse.coarseCellIndices, parameter->getParH(lev)->fineToCoarse.coarseCellIndices, mem_size_kFC, cudaMemcpyHostToDevice)); } void CudaMemoryManager::cudaCheckInterfaceFCBulk(int lev) { // only use for testing! - size_t memsize = sizeof(uint) * parameter->getParH(lev)->intFCBulk.kFC; - checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->intFCBulk.ICellFCC, parameter->getParH(lev)->intFCBulk.ICellFCC, memsize, cudaMemcpyDeviceToDevice)); - for (uint i = 0; i < parameter->getParH(lev)->intFCBulk.kFC; i++) - printf("%d %d\n", i, parameter->getParH(lev)->intFCBulk.ICellFCC[i]); + size_t memsize = sizeof(uint) * parameter->getParH(lev)->fineToCoarseBulk.numberOfCells; + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->fineToCoarseBulk.coarseCellIndices, parameter->getParH(lev)->fineToCoarseBulk.coarseCellIndices, memsize, cudaMemcpyDeviceToDevice)); + for (uint i = 0; i < parameter->getParH(lev)->fineToCoarseBulk.numberOfCells; i++) + printf("%d %d\n", i, parameter->getParH(lev)->fineToCoarseBulk.coarseCellIndices[i]); } void CudaMemoryManager::cudaFreeInterfaceFC(int lev) { - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->intFC.ICellFCF)); - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->intFC.ICellFCC)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->fineToCoarse.fineCellIndices)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->fineToCoarse.coarseCellIndices)); } //Interface Offset CF void CudaMemoryManager::cudaAllocInterfaceOffCF(int lev) { + uint mem_size_kCF_off = sizeof(real) * parameter->getParH(lev)->coarseToFine.numberOfCells; + //Host - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->offCF.xOffCF), parameter->getParH(lev)->mem_size_kCF_off )); - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->offCF.yOffCF), parameter->getParH(lev)->mem_size_kCF_off )); - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->offCF.zOffCF), parameter->getParH(lev)->mem_size_kCF_off )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborCoarseToFine.x), mem_size_kCF_off )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborCoarseToFine.y), mem_size_kCF_off )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborCoarseToFine.z), mem_size_kCF_off )); getLastCudaError("Allocate host memory"); //Device - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->offCF.xOffCF), parameter->getParD(lev)->mem_size_kCF_off )); - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->offCF.yOffCF), parameter->getParD(lev)->mem_size_kCF_off )); - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->offCF.zOffCF), parameter->getParD(lev)->mem_size_kCF_off )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborCoarseToFine.x), mem_size_kCF_off )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborCoarseToFine.y), mem_size_kCF_off )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborCoarseToFine.z), mem_size_kCF_off )); getLastCudaError("Allocate device memory"); ////////////////////////////////////////////////////////////////////////// - double tmp = 3. * (double)parameter->getParH(lev)->mem_size_kCF_off; + double tmp = 3. * (double)mem_size_kCF_off; setMemsizeGPU(tmp, false); } void CudaMemoryManager::cudaCopyInterfaceOffCF(int lev) { - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->offCF.xOffCF, parameter->getParH(lev)->offCF.xOffCF, parameter->getParH(lev)->mem_size_kCF_off, cudaMemcpyHostToDevice)); - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->offCF.yOffCF, parameter->getParH(lev)->offCF.yOffCF, parameter->getParH(lev)->mem_size_kCF_off, cudaMemcpyHostToDevice)); - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->offCF.zOffCF, parameter->getParH(lev)->offCF.zOffCF, parameter->getParH(lev)->mem_size_kCF_off, cudaMemcpyHostToDevice)); + uint mem_size_kCF_off = sizeof(real) * parameter->getParH(lev)->coarseToFine.numberOfCells; + + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->neighborCoarseToFine.x, parameter->getParH(lev)->neighborCoarseToFine.x, mem_size_kCF_off, cudaMemcpyHostToDevice)); + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->neighborCoarseToFine.y, parameter->getParH(lev)->neighborCoarseToFine.y, mem_size_kCF_off, cudaMemcpyHostToDevice)); + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->neighborCoarseToFine.z, parameter->getParH(lev)->neighborCoarseToFine.z, mem_size_kCF_off, cudaMemcpyHostToDevice)); getLastCudaError("Copy host memory to device"); } void CudaMemoryManager::cudaFreeInterfaceOffCF(int lev) { - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->offCF.xOffCF)); - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->offCF.yOffCF)); - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->offCF.zOffCF)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborCoarseToFine.x)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborCoarseToFine.y)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborCoarseToFine.z)); } //Interface Offset FC void CudaMemoryManager::cudaAllocInterfaceOffFC(int lev) { + uint mem_size_kFC_off = sizeof(real) * parameter->getParH(lev)->fineToCoarse.numberOfCells; + //Host - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->offFC.xOffFC), parameter->getParH(lev)->mem_size_kFC_off )); - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->offFC.yOffFC), parameter->getParH(lev)->mem_size_kFC_off )); - checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->offFC.zOffFC), parameter->getParH(lev)->mem_size_kFC_off )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborFineToCoarse.x), mem_size_kFC_off )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborFineToCoarse.y), mem_size_kFC_off )); + checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborFineToCoarse.z), mem_size_kFC_off )); getLastCudaError("Allocate host memory"); //Device - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->offFC.xOffFC), parameter->getParD(lev)->mem_size_kFC_off )); - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->offFC.yOffFC), parameter->getParD(lev)->mem_size_kFC_off )); - checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->offFC.zOffFC), parameter->getParD(lev)->mem_size_kFC_off )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborFineToCoarse.x), mem_size_kFC_off )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborFineToCoarse.y), mem_size_kFC_off )); + checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborFineToCoarse.z), mem_size_kFC_off )); getLastCudaError("Allocate device memory"); ////////////////////////////////////////////////////////////////////////// - double tmp = 3. * (double)parameter->getParH(lev)->mem_size_kFC_off; + double tmp = 3. * (double)mem_size_kFC_off; setMemsizeGPU(tmp, false); } void CudaMemoryManager::cudaCopyInterfaceOffFC(int lev) { - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->offFC.xOffFC, parameter->getParH(lev)->offFC.xOffFC, parameter->getParH(lev)->mem_size_kFC_off, cudaMemcpyHostToDevice)); - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->offFC.yOffFC, parameter->getParH(lev)->offFC.yOffFC, parameter->getParH(lev)->mem_size_kFC_off, cudaMemcpyHostToDevice)); - checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->offFC.zOffFC, parameter->getParH(lev)->offFC.zOffFC, parameter->getParH(lev)->mem_size_kFC_off, cudaMemcpyHostToDevice)); + uint mem_size_kFC_off = sizeof(real) * parameter->getParH(lev)->fineToCoarse.numberOfCells; + + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->neighborFineToCoarse.x, parameter->getParH(lev)->neighborFineToCoarse.x, mem_size_kFC_off, cudaMemcpyHostToDevice)); + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->neighborFineToCoarse.y, parameter->getParH(lev)->neighborFineToCoarse.y, mem_size_kFC_off, cudaMemcpyHostToDevice)); + checkCudaErrors(cudaMemcpy(parameter->getParD(lev)->neighborFineToCoarse.z, parameter->getParH(lev)->neighborFineToCoarse.z, mem_size_kFC_off, cudaMemcpyHostToDevice)); getLastCudaError("Copy host memory to device"); } void CudaMemoryManager::cudaFreeInterfaceOffFC(int lev) { - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->offFC.xOffFC)); - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->offFC.yOffFC)); - checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->offFC.zOffFC)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborFineToCoarse.x)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborFineToCoarse.y)); + checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborFineToCoarse.z)); } //Inlet diff --git a/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h b/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h index 4a5b7816c1b6591e4193639bcdf71242e77688c0..47ca867e5340595d41b2a2694c7c7e477f794184 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h +++ b/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h @@ -1353,7 +1353,7 @@ void ScaleCFEff27(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleFCEff27(real* DC, real* DF, @@ -1377,7 +1377,7 @@ void ScaleFCEff27(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void ScaleCFLast27(real* DC, real* DF, @@ -1401,7 +1401,7 @@ void ScaleCFLast27(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleFCLast27(real* DC, real* DF, @@ -1425,7 +1425,7 @@ void ScaleFCLast27(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void ScaleCFpress27(real* DC, real* DF, @@ -1449,7 +1449,7 @@ void ScaleCFpress27(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleFCpress27( real* DC, real* DF, @@ -1473,7 +1473,7 @@ void ScaleFCpress27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void ScaleCF_Fix_27(real* DC, real* DF, @@ -1497,7 +1497,7 @@ void ScaleCF_Fix_27(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleCF_Fix_comp_27( real* DC, real* DF, @@ -1521,7 +1521,7 @@ void ScaleCF_Fix_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleCF_0817_comp_27( real* DC, real* DF, @@ -1545,7 +1545,7 @@ void ScaleCF_0817_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF, + ICellNeigh neighborCoarseToFine, CUstream_st* stream); void ScaleCF_comp_D3Q27F3_2018( real* DC, @@ -1571,7 +1571,7 @@ void ScaleCF_comp_D3Q27F3_2018( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleCF_comp_D3Q27F3(real* DC, real* DF, @@ -1596,7 +1596,7 @@ void ScaleCF_comp_D3Q27F3(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF, + ICellNeigh neighborCoarseToFine, CUstream_st *stream); void ScaleCF_staggered_time_comp_27( real* DC, @@ -1621,11 +1621,11 @@ void ScaleCF_staggered_time_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); -void ScaleCF_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellCF * icellCF, OffCF &offsetCF, CUstream_st *stream); +void ScaleCF_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * interpolationCellsCoarseToFine, ICellNeigh &neighborCoarseToFine, CUstream_st *stream); -template<bool hasTurbulentViscosity> void ScaleCF_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellCF * icellCF, OffCF &offsetCF, CUstream_st *stream); +template<bool hasTurbulentViscosity> void ScaleCF_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * interpolationCellsCoarseToFine, ICellNeigh &neighborCoarseToFine, CUstream_st *stream); void ScaleCF_RhoSq_3rdMom_comp_27( real* DC, real* DF, @@ -1649,7 +1649,7 @@ void ScaleCF_RhoSq_3rdMom_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF, + ICellNeigh neighborCoarseToFine, CUstream_st *stream); void ScaleCF_AA2016_comp_27( real* DC, @@ -1674,7 +1674,7 @@ void ScaleCF_AA2016_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF, + ICellNeigh neighborCoarseToFine, CUstream_st *stream); void ScaleCF_NSPress_27(real* DC, @@ -1699,7 +1699,7 @@ void ScaleCF_NSPress_27(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleFC_Fix_27( real* DC, real* DF, @@ -1723,7 +1723,7 @@ void ScaleFC_Fix_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void ScaleFC_Fix_comp_27( real* DC, real* DF, @@ -1747,7 +1747,7 @@ void ScaleFC_Fix_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void ScaleFC_0817_comp_27( real* DC, real* DF, @@ -1771,7 +1771,7 @@ void ScaleFC_0817_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC, + ICellNeigh neighborFineToCoarse, CUstream_st *stream); void ScaleFC_comp_D3Q27F3_2018(real* DC, @@ -1797,7 +1797,7 @@ void ScaleFC_comp_D3Q27F3_2018(real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void ScaleFC_comp_D3Q27F3( real* DC, real* DF, @@ -1822,7 +1822,7 @@ void ScaleFC_comp_D3Q27F3( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC, + ICellNeigh neighborFineToCoarse, CUstream_st *stream); void ScaleFC_staggered_time_comp_27( real* DC, @@ -1847,11 +1847,11 @@ void ScaleFC_staggered_time_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); -void ScaleFC_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellFC * icellFC, OffFC& offsetFC, CUstream_st *stream); +void ScaleFC_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * interpolationCellsFineToCoarse, ICellNeigh& neighborFineToCoarse, CUstream_st *stream); -template<bool hasTurbulentViscosity> void ScaleFC_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellFC * icellFC, OffFC& offsetFC, CUstream_st *stream); +template<bool hasTurbulentViscosity> void ScaleFC_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * icellFC, ICellNeigh& neighborFineToCoarse, CUstream_st *stream); void ScaleFC_RhoSq_3rdMom_comp_27( real* DC, real* DF, @@ -1875,7 +1875,7 @@ void ScaleFC_RhoSq_3rdMom_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC, + ICellNeigh neighborFineToCoarse, CUstream_st *stream); void ScaleFC_AA2016_comp_27( real* DC, @@ -1900,7 +1900,7 @@ void ScaleFC_AA2016_comp_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC, + ICellNeigh neighborFineToCoarse, CUstream_st *stream); void ScaleFC_NSPress_27( real* DC, @@ -1925,7 +1925,7 @@ void ScaleFC_NSPress_27( real* DC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void ScaleCFThS7( real* DC, real* DF, @@ -1986,7 +1986,7 @@ void ScaleCFThSMG7( real* DC, real nu, real diffusivity_fine, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleFCThSMG7(real* DC, real* DF, @@ -2007,7 +2007,7 @@ void ScaleFCThSMG7(real* DC, real nu, real diffusivity_coarse, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void ScaleCFThS27( real* DC, real* DF, @@ -2028,7 +2028,7 @@ void ScaleCFThS27( real* DC, real nu, real diffusivity_fine, unsigned int numberOfThreads, - OffCF offCF); + ICellNeigh neighborCoarseToFine); void ScaleFCThS27( real* DC, real* DF, @@ -2049,7 +2049,7 @@ void ScaleFCThS27( real* DC, real nu, real diffusivity_coarse, unsigned int numberOfThreads, - OffFC offFC); + ICellNeigh neighborFineToCoarse); void DragLiftPostD27(real* DD, int* k_Q, diff --git a/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh b/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh index 0c3c7fcefc2bbb7bc87d7d95863c8c74f14735a3..399bbe35d58d2d3f055325aa8e3ee87bb2bcb63a 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh +++ b/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh @@ -1648,7 +1648,7 @@ __global__ void scaleCFEff27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCFLast27( real* DC, real* DF, @@ -1671,7 +1671,7 @@ __global__ void scaleCFLast27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCFpress27(real* DC, real* DF, @@ -1694,7 +1694,7 @@ __global__ void scaleCFpress27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_Fix_27(real* DC, real* DF, @@ -1717,7 +1717,7 @@ __global__ void scaleCF_Fix_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_Fix_comp_27( real* DC, real* DF, @@ -1740,7 +1740,7 @@ __global__ void scaleCF_Fix_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_0817_comp_27( real* DC, real* DF, @@ -1763,7 +1763,7 @@ __global__ void scaleCF_0817_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_comp_D3Q27F3_2018( real* DC, real* DF, @@ -1787,7 +1787,7 @@ __global__ void scaleCF_comp_D3Q27F3_2018( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_comp_D3Q27F3( real* DC, real* DF, @@ -1811,7 +1811,7 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_staggered_time_comp_27(real* DC, @@ -1835,7 +1835,7 @@ __global__ void scaleCF_staggered_time_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_RhoSq_comp_27( real* DC, real* DF, @@ -1858,7 +1858,7 @@ __global__ void scaleCF_RhoSq_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( real* distributionsCoarse, @@ -1879,7 +1879,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, - OffCF offsetCF); + ICellNeigh offsetCF); __global__ void scaleCF_RhoSq_3rdMom_comp_27(real* DC, real* DF, @@ -1902,7 +1902,7 @@ __global__ void scaleCF_RhoSq_3rdMom_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_AA2016_comp_27(real* DC, real* DF, @@ -1925,7 +1925,7 @@ __global__ void scaleCF_AA2016_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCF_NSPress_27(real* DC, real* DF, @@ -1948,7 +1948,7 @@ __global__ void scaleCF_NSPress_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCFThSMG7( real* DC, real* DF, @@ -1968,7 +1968,7 @@ __global__ void scaleCFThSMG7( real* DC, unsigned int kCF, real nu, real diffusivity_fine, - OffCF offCF); + ICellNeigh neighborCoarseToFine); __global__ void scaleCFThS7(real* DC, real* DF, @@ -2007,7 +2007,7 @@ __global__ void scaleCFThS27(real* DC, unsigned int kCF, real nu, real diffusivity_fine, - OffCF offCF); + ICellNeigh neighborCoarseToFine); //fine to coarse __global__ void scaleFC27(real* DC, @@ -2053,7 +2053,7 @@ __global__ void scaleFCEff27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFCLast27( real* DC, real* DF, @@ -2076,7 +2076,7 @@ __global__ void scaleFCLast27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFCpress27( real* DC, real* DF, @@ -2099,7 +2099,7 @@ __global__ void scaleFCpress27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_Fix_27( real* DC, real* DF, @@ -2122,7 +2122,7 @@ __global__ void scaleFC_Fix_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_Fix_comp_27( real* DC, real* DF, @@ -2145,7 +2145,7 @@ __global__ void scaleFC_Fix_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_0817_comp_27( real* DC, real* DF, @@ -2168,7 +2168,7 @@ __global__ void scaleFC_0817_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_comp_D3Q27F3_2018( real* DC, real* DF, @@ -2192,7 +2192,7 @@ __global__ void scaleFC_comp_D3Q27F3_2018( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_comp_D3Q27F3( real* DC, real* DF, @@ -2216,7 +2216,7 @@ __global__ void scaleFC_comp_D3Q27F3( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_staggered_time_comp_27(real* DC, @@ -2240,7 +2240,7 @@ __global__ void scaleFC_staggered_time_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_RhoSq_comp_27( real* DC, real* DF, @@ -2263,7 +2263,7 @@ __global__ void scaleFC_RhoSq_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( real *distributionsCoarse, @@ -2284,7 +2284,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, - OffFC offsetFC); + ICellNeigh offsetFC); __global__ void scaleFC_RhoSq_3rdMom_comp_27(real* DC, real* DF, @@ -2307,7 +2307,7 @@ __global__ void scaleFC_RhoSq_3rdMom_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_AA2016_comp_27(real* DC, real* DF, @@ -2330,7 +2330,7 @@ __global__ void scaleFC_AA2016_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFC_NSPress_27(real* DC, real* DF, @@ -2353,7 +2353,7 @@ __global__ void scaleFC_NSPress_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFCThSMG7( real* DC, real* DF, @@ -2373,7 +2373,7 @@ __global__ void scaleFCThSMG7( real* DC, unsigned int kFC, real nu, real diffusivity_coarse, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void scaleFCThS7(real* DC, real* DF, @@ -2412,7 +2412,7 @@ __global__ void scaleFCThS27( real* DC, unsigned int kFC, real nu, real diffusivity_coarse, - OffFC offFC); + ICellNeigh neighborFineToCoarse); __global__ void DragLiftPost27( real* DD, int* k_Q, diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF27.cu b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF27.cu index 641d6519669b1522430fe88990c00d0630d00e9b..d720a87c9b9a123739c60439a2b5ef1490eef6f7 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF27.cu @@ -35,7 +35,7 @@ __global__ void scaleCF_0817_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -188,9 +188,9 @@ __global__ void scaleCF_0817_comp_27( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -4104,7 +4104,7 @@ __global__ void scaleCF_AA2016_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -4270,9 +4270,9 @@ __global__ void scaleCF_AA2016_comp_27(real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -10987,7 +10987,7 @@ __global__ void scaleCF_RhoSq_3rdMom_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -11153,9 +11153,9 @@ __global__ void scaleCF_RhoSq_3rdMom_comp_27(real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -17862,7 +17862,7 @@ __global__ void scaleCF_RhoSq_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -18008,9 +18008,9 @@ __global__ void scaleCF_RhoSq_comp_27(real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -22146,7 +22146,7 @@ __global__ void scaleCF_staggered_time_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -22292,9 +22292,9 @@ __global__ void scaleCF_staggered_time_comp_27( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -26382,7 +26382,7 @@ __global__ void scaleCF_Fix_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -26531,9 +26531,9 @@ __global__ void scaleCF_Fix_comp_27( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -31149,7 +31149,7 @@ __global__ void scaleCF_NSPress_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -31294,9 +31294,9 @@ __global__ void scaleCF_NSPress_27( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -35093,7 +35093,7 @@ __global__ void scaleCF_Fix_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -35239,9 +35239,9 @@ __global__ void scaleCF_Fix_27( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -39351,7 +39351,7 @@ __global__ void scaleCFpress27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -39496,9 +39496,9 @@ __global__ void scaleCFpress27( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -41025,7 +41025,7 @@ __global__ void scaleCFLast27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -41170,9 +41170,9 @@ __global__ void scaleCFLast27( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -43257,7 +43257,7 @@ __global__ void scaleCFThSMG7( real* DC, unsigned int kCF, real nu, real diffusivity_fine, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -43425,9 +43425,9 @@ __global__ void scaleCFThSMG7( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - real xoff = offCF.xOffCF[k]; - real yoff = offCF.yOffCF[k]; - real zoff = offCF.zOffCF[k]; + real xoff = offCF.x[k]; + real yoff = offCF.y[k]; + real zoff = offCF.z[k]; real xoff_sq = xoff * xoff; real yoff_sq = yoff * yoff; real zoff_sq = zoff * zoff; @@ -45607,7 +45607,7 @@ __global__ void scaleCFThS27( real* DC, unsigned int kCF, real nu, real diffusivity_fine, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -45835,9 +45835,9 @@ __global__ void scaleCFThS27( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -47300,7 +47300,7 @@ __global__ void scaleCFEff27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -47445,9 +47445,9 @@ __global__ void scaleCFEff27(real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF_F3_27.cu b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF_F3_27.cu index 386493280fd71fff93c117483e754a248bb0830d..fba54269c6d8c2bc3092c52833c98c78e87b988b 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF_F3_27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF_F3_27.cu @@ -36,7 +36,7 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -198,9 +198,9 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -4383,7 +4383,7 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffCF offCF) + ICellNeigh offCF) { real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -4545,9 +4545,9 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, if(k<kCF) { ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; + xoff = offCF.x[k]; + yoff = offCF.y[k]; + zoff = offCF.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC27.cu b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC27.cu index b37ab44d81d15fbbde46c875c860acd7198b8041..48f5041ce12df3e0a219087a2bcda735ea28afd7 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC27.cu @@ -35,7 +35,7 @@ __global__ void scaleFC_0817_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -183,9 +183,9 @@ __global__ void scaleFC_0817_comp_27( real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -1231,7 +1231,7 @@ __global__ void scaleFC_AA2016_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -1393,9 +1393,9 @@ __global__ void scaleFC_AA2016_comp_27(real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -5420,7 +5420,7 @@ __global__ void scaleFC_RhoSq_3rdMom_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -5582,9 +5582,9 @@ __global__ void scaleFC_RhoSq_3rdMom_comp_27(real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -9608,7 +9608,7 @@ __device__ void scaleFC_RhoSq_comp_27_Calculation( unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC, + ICellNeigh offFC, const unsigned k) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, @@ -9741,9 +9741,9 @@ __device__ void scaleFC_RhoSq_comp_27_Calculation( if (k < kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -11094,7 +11094,7 @@ __global__ void scaleFC_RhoSq_comp_27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -11187,7 +11187,7 @@ __global__ void scaleFC_staggered_time_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -11329,9 +11329,9 @@ __global__ void scaleFC_staggered_time_comp_27( real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -12487,7 +12487,7 @@ __global__ void scaleFC_Fix_comp_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -12631,9 +12631,9 @@ __global__ void scaleFC_Fix_comp_27( real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -14347,7 +14347,7 @@ __global__ void scaleFC_NSPress_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -14488,9 +14488,9 @@ __global__ void scaleFC_NSPress_27( real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -15553,7 +15553,7 @@ __global__ void scaleFC_Fix_27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -15695,9 +15695,9 @@ __global__ void scaleFC_Fix_27( real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -16913,7 +16913,7 @@ __global__ void scaleFCpress27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -17057,9 +17057,9 @@ __global__ void scaleFCpress27(real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -17838,7 +17838,7 @@ __global__ void scaleFCLast27( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -17982,9 +17982,9 @@ __global__ void scaleFCLast27( real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -19231,7 +19231,7 @@ __global__ void scaleFCThSMG7( real* DC, unsigned int kFC, real nu, real diffusivity_coarse, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -19392,9 +19392,9 @@ __global__ void scaleFCThSMG7( real* DC, if(k<kFC){ ////////////////////////////////////////////////////////////////////////// - real xoff = offFC.xOffFC[k]; - real yoff = offFC.yOffFC[k]; - real zoff = offFC.zOffFC[k]; + real xoff = offFC.x[k]; + real yoff = offFC.y[k]; + real zoff = offFC.z[k]; real xoff_sq = xoff * xoff; real yoff_sq = yoff * yoff; real zoff_sq = zoff * zoff; @@ -20889,7 +20889,7 @@ __global__ void scaleFCThS27( real* DC, unsigned int kFC, real nu, real diffusivity_coarse, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -21110,9 +21110,9 @@ __global__ void scaleFCThS27( real* DC, if(k<kFC){ ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -22012,7 +22012,7 @@ __global__ void scaleFCEff27(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; @@ -22156,9 +22156,9 @@ __global__ void scaleFCEff27(real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC_F3_27.cu b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC_F3_27.cu index 3b108ad4ae43bd63698f3516a207630214695797..c83da28dfe1781342ea747cfc4b7bc342cbe1dec 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC_F3_27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC_F3_27.cu @@ -36,7 +36,7 @@ __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -205,9 +205,9 @@ __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; @@ -1283,7 +1283,7 @@ __global__ void scaleFC_comp_D3Q27F3( real* DC, unsigned int nyC, unsigned int nxF, unsigned int nyF, - OffFC offFC) + ICellNeigh offFC) { real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -1452,9 +1452,9 @@ __global__ void scaleFC_comp_D3Q27F3( real* DC, if(k<kFC) { ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; + xoff = offFC.x[k]; + yoff = offFC.y[k]; + zoff = offFC.z[k]; xoff_sq = xoff * xoff; yoff_sq = yoff * yoff; zoff_sq = zoff * zoff; diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleCF_compressible.cu b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleCF_compressible.cu index 84529ef2694b57448291957f7792360088bd954f..726e31888658d78562913cd2b386481cd69abbc6 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleCF_compressible.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleCF_compressible.cu @@ -237,7 +237,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, - OffCF offsetCF) + ICellNeigh neighborCoarseToFine) { //////////////////////////////////////////////////////////////////////////////// //! - Get the node index coordinates from threadId_100, blockId_100, blockDim and gridDim. @@ -758,9 +758,9 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( //////////////////////////////////////////////////////////////////////////////// //! - Set the relative position of the offset cell {-1, 0, 1} //! - real xoff = offsetCF.xOffCF[nodeIndex]; - real yoff = offsetCF.yOffCF[nodeIndex]; - real zoff = offsetCF.zOffCF[nodeIndex]; + real xoff = neighborCoarseToFine.x[nodeIndex]; + real yoff = neighborCoarseToFine.y[nodeIndex]; + real zoff = neighborCoarseToFine.z[nodeIndex]; real xoff_sq = xoff * xoff; real yoff_sq = yoff * yoff; @@ -1487,6 +1487,6 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( (distFine.f[DIR_MMM])[k_MMM] = f_MMM; } -template __global__ void scaleCF_compressible<true>( real* distributionsCoarse, real* distributionsFine, unsigned int* neighborXcoarse, unsigned int* neighborYcoarse, unsigned int* neighborZcoarse, unsigned int* neighborXfine, unsigned int* neighborYfine, unsigned int* neighborZfine, unsigned long long numberOfLBnodesCoarse, unsigned long long numberOfLBnodesFine, bool isEvenTimestep, unsigned int* indicesCoarseMMM, unsigned int* indicesFineMMM, unsigned int numberOfInterfaceNodes, real omegaCoarse, real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, OffCF offsetCF); +template __global__ void scaleCF_compressible<true>( real* distributionsCoarse, real* distributionsFine, unsigned int* neighborXcoarse, unsigned int* neighborYcoarse, unsigned int* neighborZcoarse, unsigned int* neighborXfine, unsigned int* neighborYfine, unsigned int* neighborZfine, unsigned long long numberOfLBnodesCoarse, unsigned long long numberOfLBnodesFine, bool isEvenTimestep, unsigned int* indicesCoarseMMM, unsigned int* indicesFineMMM, unsigned int numberOfInterfaceNodes, real omegaCoarse, real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, ICellNeigh offsetCF); -template __global__ void scaleCF_compressible<false>( real* distributionsCoarse, real* distributionsFine, unsigned int* neighborXcoarse, unsigned int* neighborYcoarse, unsigned int* neighborZcoarse, unsigned int* neighborXfine, unsigned int* neighborYfine, unsigned int* neighborZfine, unsigned long long numberOfLBnodesCoarse, unsigned long long numberOfLBnodesFine, bool isEvenTimestep, unsigned int* indicesCoarseMMM, unsigned int* indicesFineMMM, unsigned int numberOfInterfaceNodes, real omegaCoarse, real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, OffCF offsetCF); \ No newline at end of file +template __global__ void scaleCF_compressible<false>( real* distributionsCoarse, real* distributionsFine, unsigned int* neighborXcoarse, unsigned int* neighborYcoarse, unsigned int* neighborZcoarse, unsigned int* neighborXfine, unsigned int* neighborYfine, unsigned int* neighborZfine, unsigned long long numberOfLBnodesCoarse, unsigned long long numberOfLBnodesFine, bool isEvenTimestep, unsigned int* indicesCoarseMMM, unsigned int* indicesFineMMM, unsigned int numberOfInterfaceNodes, real omegaCoarse, real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, ICellNeigh offsetCF); \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleFC_compressible.cu b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleFC_compressible.cu index c89a524c1dd63f426254c395d1e4881a7e96ce7a..4ed8273589001b9d4c87e4774310424274631e2d 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleFC_compressible.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleFC_compressible.cu @@ -65,7 +65,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, - OffFC offsetFC) + ICellNeigh neighborFineToCoarse) { //////////////////////////////////////////////////////////////////////////////// //! - Get the node index coordinates from threadIdx, blockIdx, blockDim and gridDim. @@ -424,9 +424,9 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( //////////////////////////////////////////////////////////////////////////////// //! - Set the relative position of the offset cell {-1, 0, 1} //! - real xoff = offsetFC.xOffFC[nodeIndex]; - real yoff = offsetFC.yOffFC[nodeIndex]; - real zoff = offsetFC.zOffFC[nodeIndex]; + real xoff = neighborFineToCoarse.x[nodeIndex]; + real yoff = neighborFineToCoarse.y[nodeIndex]; + real zoff = neighborFineToCoarse.z[nodeIndex]; real xoff_sq = xoff * xoff; real yoff_sq = yoff * yoff; @@ -708,6 +708,6 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( //////////////////////////////////////////////////////////////////////////////////// } -template __global__ void scaleFC_compressible<true>( real *distributionsCoarse, real *distributionsFine, unsigned int *neighborXcoarse, unsigned int *neighborYcoarse, unsigned int *neighborZcoarse, unsigned int *neighborXfine, unsigned int *neighborYfine, unsigned int *neighborZfine, unsigned long long numberOfLBnodesCoarse, unsigned long long numberOfLBnodesFine, bool isEvenTimestep, unsigned int *indicesCoarse000, unsigned int *indicesFineMMM, unsigned int numberOfInterfaceNodes, real omegaCoarse, real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, OffFC offsetFC); +template __global__ void scaleFC_compressible<true>( real *distributionsCoarse, real *distributionsFine, unsigned int *neighborXcoarse, unsigned int *neighborYcoarse, unsigned int *neighborZcoarse, unsigned int *neighborXfine, unsigned int *neighborYfine, unsigned int *neighborZfine, unsigned long long numberOfLBnodesCoarse, unsigned long long numberOfLBnodesFine, bool isEvenTimestep, unsigned int *indicesCoarse000, unsigned int *indicesFineMMM, unsigned int numberOfInterfaceNodes, real omegaCoarse, real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, ICellNeigh neighborFineToCoarse); -template __global__ void scaleFC_compressible<false>( real *distributionsCoarse, real *distributionsFine, unsigned int *neighborXcoarse, unsigned int *neighborYcoarse, unsigned int *neighborZcoarse, unsigned int *neighborXfine, unsigned int *neighborYfine, unsigned int *neighborZfine, unsigned long long numberOfLBnodesCoarse, unsigned long long numberOfLBnodesFine, bool isEvenTimestep, unsigned int *indicesCoarse000, unsigned int *indicesFineMMM, unsigned int numberOfInterfaceNodes, real omegaCoarse, real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, OffFC offsetFC); \ No newline at end of file +template __global__ void scaleFC_compressible<false>( real *distributionsCoarse, real *distributionsFine, unsigned int *neighborXcoarse, unsigned int *neighborYcoarse, unsigned int *neighborZcoarse, unsigned int *neighborXfine, unsigned int *neighborYfine, unsigned int *neighborZfine, unsigned long long numberOfLBnodesCoarse, unsigned long long numberOfLBnodesFine, bool isEvenTimestep, unsigned int *indicesCoarse000, unsigned int *indicesFineMMM, unsigned int numberOfInterfaceNodes, real omegaCoarse, real omegaFine, real* turbulentViscosityCoarse, real* turbulentViscosityFine, ICellNeigh neighborFineToCoarse); \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu b/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu index 9abac27969e74dc90ecdcc707f4fcb2234010d07..c0372741061735b58579a85fbeff7351d1408b07 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu @@ -3563,7 +3563,7 @@ void ScaleCFEff27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -3589,7 +3589,7 @@ void ScaleCFEff27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCFEff27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3616,7 +3616,7 @@ void ScaleCFLast27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -3642,7 +3642,7 @@ void ScaleCFLast27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCFLast27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3669,7 +3669,7 @@ void ScaleCFpress27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -3695,7 +3695,7 @@ void ScaleCFpress27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCFpress27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3722,7 +3722,7 @@ void ScaleCF_Fix_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -3748,7 +3748,7 @@ void ScaleCF_Fix_27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_Fix_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3775,7 +3775,7 @@ void ScaleCF_Fix_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -3801,7 +3801,7 @@ void ScaleCF_Fix_comp_27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_Fix_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3828,7 +3828,7 @@ void ScaleCF_0817_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF, + ICellNeigh neighborCoarseToFine, CUstream_st *stream) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -3855,7 +3855,7 @@ void ScaleCF_0817_comp_27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_0817_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3883,7 +3883,7 @@ void ScaleCF_comp_D3Q27F3_2018( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -3910,7 +3910,7 @@ void ScaleCF_comp_D3Q27F3_2018( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_comp_D3Q27F3_2018 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3938,7 +3938,7 @@ void ScaleCF_comp_D3Q27F3( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF, + ICellNeigh neighborCoarseToFine, CUstream_st *stream) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -3966,7 +3966,7 @@ void ScaleCF_comp_D3Q27F3( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_comp_D3Q27F3 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3993,7 +3993,7 @@ void ScaleCF_staggered_time_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -4019,13 +4019,13 @@ void ScaleCF_staggered_time_comp_27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_staggered_time_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -void ScaleCF_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellCF * icellCF, OffCF& offsetCF, CUstream_st *stream) +void ScaleCF_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * coarseToFine, ICellNeigh& neighborCoarseToFine, CUstream_st *stream) { - dim3 grid = vf::cuda::getCudaGrid(parameterDeviceC->numberofthreads, icellCF->kCF); + dim3 grid = vf::cuda::getCudaGrid(parameterDeviceC->numberofthreads, coarseToFine->numberOfCells); dim3 threads(parameterDeviceC->numberofthreads, 1, 1 ); scaleCF_RhoSq_comp_27<<<grid, threads, 0, stream>>>( @@ -4040,23 +4040,23 @@ void ScaleCF_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulat parameterDeviceC->numberOfNodes, parameterDeviceF->numberOfNodes, parameterDeviceC->isEvenTimestep, - icellCF->ICellCFC, - icellCF->ICellCFF, - icellCF->kCF, + coarseToFine->coarseCellIndices, + coarseToFine->fineCellIndices, + coarseToFine->numberOfCells, parameterDeviceC->omega, parameterDeviceF->omega, - parameterDeviceC->vis, + parameterDeviceC->viscosity, parameterDeviceC->nx, parameterDeviceC->ny, parameterDeviceF->nx, parameterDeviceF->ny, - offsetCF); + neighborCoarseToFine); getLastCudaError("scaleCF_RhoSq_27 execution failed"); } -template<bool hasTurbulentViscosity> void ScaleCF_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellCF * icellCF, OffCF& offsetCF, CUstream_st *stream) +template<bool hasTurbulentViscosity> void ScaleCF_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * coarseToFine, ICellNeigh& neighborCoarseToFine, CUstream_st *stream) { - dim3 grid = vf::cuda::getCudaGrid(parameterDeviceC->numberofthreads, icellCF->kCF); + dim3 grid = vf::cuda::getCudaGrid(parameterDeviceC->numberofthreads, coarseToFine->numberOfCells); dim3 threads(parameterDeviceC->numberofthreads, 1, 1 ); scaleCF_compressible<hasTurbulentViscosity><<<grid, threads, 0, stream>>>( @@ -4071,19 +4071,19 @@ template<bool hasTurbulentViscosity> void ScaleCF_compressible(LBMSimulationPara parameterDeviceC->numberOfNodes, parameterDeviceF->numberOfNodes, parameterDeviceC->isEvenTimestep, - icellCF->ICellCFC, - icellCF->ICellCFF, - icellCF->kCF, + coarseToFine->coarseCellIndices, + coarseToFine->fineCellIndices, + coarseToFine->numberOfCells, parameterDeviceC->omega, parameterDeviceF->omega, parameterDeviceC->turbViscosity, parameterDeviceF->turbViscosity, - offsetCF); + neighborCoarseToFine); getLastCudaError("scaleCF_compressible execution failed"); } -template void ScaleCF_compressible<true>(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellCF * icellCF, OffCF& offsetCF, CUstream_st *stream); -template void ScaleCF_compressible<false>(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellCF * icellCF, OffCF& offsetCF, CUstream_st *stream); +template void ScaleCF_compressible<true>(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * coarseToFine, ICellNeigh& neighborCoarseToFine, CUstream_st *stream); +template void ScaleCF_compressible<false>(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * coarseToFine, ICellNeigh& neighborCoarseToFine, CUstream_st *stream); ////////////////////////////////////////////////////////////////////////// void ScaleCF_RhoSq_3rdMom_comp_27( @@ -4109,7 +4109,7 @@ void ScaleCF_RhoSq_3rdMom_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF, + ICellNeigh neighborCoarseToFine, CUstream_st *stream) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -4136,7 +4136,7 @@ void ScaleCF_RhoSq_3rdMom_comp_27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_RhoSq_3rdMom_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4163,7 +4163,7 @@ void ScaleCF_AA2016_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF, + ICellNeigh neighborCoarseToFine, CUstream_st *stream) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -4190,7 +4190,7 @@ void ScaleCF_AA2016_comp_27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_AA2016_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4217,7 +4217,7 @@ void ScaleCF_NSPress_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -4243,7 +4243,7 @@ void ScaleCF_NSPress_27( nyC, nxF, nyF, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCF_NSPress_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4267,7 +4267,7 @@ void ScaleCFThSMG7( real nu, real diffusivity_fine, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -4290,7 +4290,7 @@ void ScaleCFThSMG7( kCF, nu, diffusivity_fine, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCFThSMG7 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4359,7 +4359,7 @@ void ScaleCFThS27( real nu, real diffusivity_fine, unsigned int numberOfThreads, - OffCF offCF) + ICellNeigh neighborCoarseToFine) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kCF); @@ -4382,7 +4382,7 @@ void ScaleCFThS27( kCF, nu, diffusivity_fine, - offCF); + neighborCoarseToFine); getLastCudaError("scaleCFThS27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4460,7 +4460,7 @@ void ScaleFCEff27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4486,7 +4486,7 @@ void ScaleFCEff27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFCEff27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4513,7 +4513,7 @@ void ScaleFCLast27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4539,7 +4539,7 @@ void ScaleFCLast27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("Kernel execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4566,7 +4566,7 @@ void ScaleFCpress27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4592,7 +4592,7 @@ void ScaleFCpress27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFCpress27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4619,7 +4619,7 @@ void ScaleFC_Fix_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4645,7 +4645,7 @@ void ScaleFC_Fix_27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_Fix_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4672,7 +4672,7 @@ void ScaleFC_Fix_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4698,7 +4698,7 @@ void ScaleFC_Fix_comp_27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_Fix_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4725,7 +4725,7 @@ void ScaleFC_0817_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC, + ICellNeigh neighborFineToCoarse, CUstream_st *stream) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4752,7 +4752,7 @@ void ScaleFC_0817_comp_27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_0817_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4780,7 +4780,7 @@ void ScaleFC_comp_D3Q27F3_2018( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4807,7 +4807,7 @@ void ScaleFC_comp_D3Q27F3_2018( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_comp_D3Q27F3_2018 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4835,7 +4835,7 @@ void ScaleFC_comp_D3Q27F3( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC, + ICellNeigh neighborFineToCoarse, CUstream_st *stream) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4863,7 +4863,7 @@ void ScaleFC_comp_D3Q27F3( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_comp_D3Q27F3 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -4890,7 +4890,7 @@ void ScaleFC_staggered_time_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -4916,13 +4916,13 @@ void ScaleFC_staggered_time_comp_27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_staggered_time_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -void ScaleFC_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellFC * icellFC, OffFC &offsetFC, CUstream_st *stream) +void ScaleFC_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * fineToCoarse, ICellNeigh &neighborFineToCoarse, CUstream_st *stream) { - dim3 grid = vf::cuda::getCudaGrid(parameterDeviceC->numberofthreads, icellFC->kFC); + dim3 grid = vf::cuda::getCudaGrid(parameterDeviceC->numberofthreads, fineToCoarse->numberOfCells); dim3 threads(parameterDeviceC->numberofthreads, 1, 1 ); scaleFC_RhoSq_comp_27<<<grid, threads, 0, stream>>>( @@ -4937,23 +4937,23 @@ void ScaleFC_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulat parameterDeviceC->numberOfNodes, parameterDeviceF->numberOfNodes, parameterDeviceC->isEvenTimestep, - icellFC->ICellFCC, - icellFC->ICellFCF, - icellFC->kFC, + fineToCoarse->coarseCellIndices, + fineToCoarse->fineCellIndices, + fineToCoarse->numberOfCells, parameterDeviceC->omega, parameterDeviceF->omega, - parameterDeviceC->vis, + parameterDeviceC->viscosity, parameterDeviceC->nx, parameterDeviceC->ny, parameterDeviceF->nx, parameterDeviceF->ny, - offsetFC); + neighborFineToCoarse); getLastCudaError("scaleFC_RhoSq_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -template<bool hasTurbulentViscosity> void ScaleFC_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellFC * icellFC, OffFC &offsetFC, CUstream_st *stream) +template<bool hasTurbulentViscosity> void ScaleFC_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * fineToCoarse, ICellNeigh &neighborFineToCoarse, CUstream_st *stream) { - dim3 grid = vf::cuda::getCudaGrid(parameterDeviceC->numberofthreads, icellFC->kFC); + dim3 grid = vf::cuda::getCudaGrid(parameterDeviceC->numberofthreads, fineToCoarse->numberOfCells); dim3 threads(parameterDeviceC->numberofthreads, 1, 1 ); scaleFC_compressible<hasTurbulentViscosity><<<grid, threads, 0, stream>>>( @@ -4968,19 +4968,19 @@ template<bool hasTurbulentViscosity> void ScaleFC_compressible(LBMSimulationPara parameterDeviceC->numberOfNodes, parameterDeviceF->numberOfNodes, parameterDeviceC->isEvenTimestep, - icellFC->ICellFCC, - icellFC->ICellFCF, - icellFC->kFC, + fineToCoarse->coarseCellIndices, + fineToCoarse->fineCellIndices, + fineToCoarse->numberOfCells, parameterDeviceC->omega, parameterDeviceF->omega, parameterDeviceC->turbViscosity, parameterDeviceF->turbViscosity, - offsetFC); + neighborFineToCoarse); getLastCudaError("scaleFC_compressible execution failed"); } -template void ScaleFC_compressible<true>(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellFC * icellFC, OffFC &offsetFC, CUstream_st *stream); -template void ScaleFC_compressible<false>(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICellFC * icellFC, OffFC &offsetFC, CUstream_st *stream); +template void ScaleFC_compressible<true>(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * fineToCoarse, ICellNeigh &neighborFineToCoarse, CUstream_st *stream); +template void ScaleFC_compressible<false>(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * fineToCoarse, ICellNeigh &neighborFineToCoarse, CUstream_st *stream); ////////////////////////////////////////////////////////////////////////// void ScaleFC_RhoSq_3rdMom_comp_27( @@ -5006,7 +5006,7 @@ void ScaleFC_RhoSq_3rdMom_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC, + ICellNeigh neighborFineToCoarse, CUstream_st *stream) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -5033,7 +5033,7 @@ void ScaleFC_RhoSq_3rdMom_comp_27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_RhoSq_3rdMom_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -5060,7 +5060,7 @@ void ScaleFC_AA2016_comp_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC, + ICellNeigh neighborFineToCoarse, CUstream_st *stream) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -5087,7 +5087,7 @@ void ScaleFC_AA2016_comp_27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_AA2016_comp_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -5114,7 +5114,7 @@ void ScaleFC_NSPress_27( unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -5140,7 +5140,7 @@ void ScaleFC_NSPress_27( nyC, nxF, nyF, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFC_NSPress_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -5164,7 +5164,7 @@ void ScaleFCThSMG7( real nu, real diffusivity_coarse, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -5187,7 +5187,7 @@ void ScaleFCThSMG7( kFC, nu, diffusivity_coarse, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFCThSMG7 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -5256,7 +5256,7 @@ void ScaleFCThS27( real nu, real diffusivity_coarse, unsigned int numberOfThreads, - OffFC offFC) + ICellNeigh neighborFineToCoarse) { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, kFC); @@ -5279,7 +5279,7 @@ void ScaleFCThS27( kFC, nu, diffusivity_coarse, - offFC); + neighborFineToCoarse); getLastCudaError("scaleFCThS27 execution failed"); } ////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp b/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp index 8a42c5201cd32a6ce51c09e06ccaf9bbb65eda1c..229922b1ec1654e7ca664f9d19a7b7c6e264fd83 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp +++ b/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp @@ -47,8 +47,8 @@ GridScalingKernelManager::GridScalingKernelManager(SPtr<Parameter> parameter, Gr if(!gridScalingFactory){ throw std::runtime_error("There is more than one level, but no scalingFactory was provided."); } - checkScalingFunction(gridScalingFactory->getGridScalingFC(parameter->getUseTurbulentViscosity()), this->para->getParD(0)->intFC, "scalingFineToCoarse"); - checkScalingFunction(gridScalingFactory->getGridScalingCF(parameter->getUseTurbulentViscosity()), this->para->getParD(0)->intCF, "scalingCoarseToFine"); + checkScalingFunction(gridScalingFactory->getGridScalingFC(parameter->getUseTurbulentViscosity()), this->para->getParD(0)->fineToCoarse, "scalingFineToCoarse"); + checkScalingFunction(gridScalingFactory->getGridScalingCF(parameter->getUseTurbulentViscosity()), this->para->getParD(0)->coarseToFine, "scalingCoarseToFine"); this->scalingFineToCoarse = gridScalingFactory->getGridScalingFC(parameter->getUseTurbulentViscosity()); this->scalingCoarseToFine = gridScalingFactory->getGridScalingCF(parameter->getUseTurbulentViscosity()); } @@ -59,11 +59,11 @@ GridScalingKernelManager::GridScalingKernelManager(SPtr<Parameter> parameter, Gr VF_LOG_TRACE("Function for scalingCoarseToFine is nullptr"); } -void GridScalingKernelManager::runFineToCoarseKernelLB(const int level, InterpolationCellFC *icellFC, OffFC &offFC, CudaStreamIndex streamIndex) const +void GridScalingKernelManager::runFineToCoarseKernelLB(const int level, InterpolationCells *fineToCoarse, ICellNeigh &neighborFineToCoarse, CudaStreamIndex streamIndex) const { cudaStream_t stream = para->getStreamManager()->getStream(streamIndex); - this->scalingFineToCoarse(para->getParD(level).get(), para->getParD(level+1).get(), icellFC, offFC, stream); + this->scalingFineToCoarse(para->getParD(level).get(), para->getParD(level+1).get(), fineToCoarse, neighborFineToCoarse, stream); // ScaleFC_comp_D3Q27F3( // para->getParD(level)->distributions.f[0], @@ -294,13 +294,13 @@ void GridScalingKernelManager::runFineToCoarseKernelAD(const int level) const para->getParD(level)->numberOfNodes, para->getParD(level+1)->numberOfNodes, para->getParD(level)->isEvenTimestep, - para->getParD(level)->intFC.ICellFCC, - para->getParD(level)->intFC.ICellFCF, - para->getParD(level)->K_FC, - para->getParD(level)->vis, + para->getParD(level)->fineToCoarse.coarseCellIndices, + para->getParD(level)->fineToCoarse.fineCellIndices, + para->getParD(level)->fineToCoarse.numberOfCells, + para->getParD(level)->viscosity, para->getParD(level)->diffusivity, para->getParD(level)->numberofthreads, - para->getParD(level)->offFC); + para->getParD(level)->neighborFineToCoarse); } else if (para->getDiffMod() == 27) { @@ -318,20 +318,20 @@ void GridScalingKernelManager::runFineToCoarseKernelAD(const int level) const para->getParD(level)->numberOfNodes, para->getParD(level+1)->numberOfNodes, para->getParD(level)->isEvenTimestep, - para->getParD(level)->intFC.ICellFCC, - para->getParD(level)->intFC.ICellFCF, - para->getParD(level)->K_FC, - para->getParD(level)->vis, + para->getParD(level)->fineToCoarse.coarseCellIndices, + para->getParD(level)->fineToCoarse.fineCellIndices, + para->getParD(level)->fineToCoarse.numberOfCells, + para->getParD(level)->viscosity, para->getParD(level)->diffusivity, para->getParD(level)->numberofthreads, - para->getParD(level)->offFC); + para->getParD(level)->neighborFineToCoarse); } } -void GridScalingKernelManager::runCoarseToFineKernelLB(const int level, InterpolationCellCF* icellCF, OffCF &offCF, CudaStreamIndex streamIndex) const +void GridScalingKernelManager::runCoarseToFineKernelLB(const int level, InterpolationCells* coarseToFine, ICellNeigh &neighborFineToCoarse, CudaStreamIndex streamIndex) const { cudaStream_t stream = para->getStreamManager()->getStream(streamIndex); - this->scalingCoarseToFine(para->getParD(level).get(), para->getParD(level+1).get(), icellCF, offCF, stream); + this->scalingCoarseToFine(para->getParD(level).get(), para->getParD(level+1).get(), coarseToFine, neighborFineToCoarse, stream); // ScaleCF_comp_D3Q27F3( // para->getParD(level)->distributions.f[0], @@ -563,13 +563,13 @@ void GridScalingKernelManager::runCoarseToFineKernelAD(const int level) const para->getParD(level)->numberOfNodes, para->getParD(level+1)->numberOfNodes, para->getParD(level)->isEvenTimestep, - para->getParD(level)->intCF.ICellCFC, - para->getParD(level)->intCF.ICellCFF, - para->getParD(level)->K_CF, - para->getParD(level)->vis, + para->getParD(level)->coarseToFine.coarseCellIndices, + para->getParD(level)->coarseToFine.fineCellIndices, + para->getParD(level)->coarseToFine.numberOfCells, + para->getParD(level)->viscosity, para->getParD(level+1)->diffusivity, para->getParD(level)->numberofthreads, - para->getParD(level)->offCF); + para->getParD(level)->neighborCoarseToFine); } else if (para->getDiffMod() == 27) { @@ -587,12 +587,12 @@ void GridScalingKernelManager::runCoarseToFineKernelAD(const int level) const para->getParD(level)->numberOfNodes, para->getParD(level+1)->numberOfNodes, para->getParD(level)->isEvenTimestep, - para->getParD(level)->intCF.ICellCFC, - para->getParD(level)->intCF.ICellCFF, - para->getParD(level)->K_CF, - para->getParD(level)->vis, + para->getParD(level)->coarseToFine.coarseCellIndices, + para->getParD(level)->coarseToFine.fineCellIndices, + para->getParD(level)->coarseToFine.numberOfCells, + para->getParD(level)->viscosity, para->getParD(level+1)->diffusivity, para->getParD(level)->numberofthreads, - para->getParD(level)->offCF); + para->getParD(level)->neighborCoarseToFine); } } diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h b/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h index 3c78ee7f9db254556e8ec6dbbafaf51cd995f10b..ef1e175ed149e6a89016c76249ce31aa1f1828f9 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h +++ b/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h @@ -48,10 +48,8 @@ enum class CudaStreamIndex; struct LBMSimulationParameter; struct CUstream_st; -using gridScalingFC = - std::function<void(LBMSimulationParameter *, LBMSimulationParameter *, ICellFC *, OffFC &, CUstream_st *stream)>; -using gridScalingCF = - std::function<void(LBMSimulationParameter *, LBMSimulationParameter *, ICellCF *, OffCF &, CUstream_st *stream)>; +using gridScaling = + std::function<void(LBMSimulationParameter *, LBMSimulationParameter *, ICells *, ICellNeigh &, CUstream_st *stream)>; //! \class GridScalingKernelManager //! \brief manage the cuda kernel calls @@ -64,13 +62,13 @@ public: GridScalingKernelManager(SPtr<Parameter> parameter, GridScalingFactory *gridScalingFactory); //! \brief calls the device function of the fine to coarse grid interpolation kernelH - void runFineToCoarseKernelLB(const int level, InterpolationCellFC *icellFC, OffFC &offFC, CudaStreamIndex streamIndex) const; + void runFineToCoarseKernelLB(const int level, InterpolationCells *fineToCoarse, ICellNeigh &neighborFineToCoarse, CudaStreamIndex streamIndex) const; //! \brief calls the device function of the fine to coarse grid interpolation kernel (advection diffusion) void runFineToCoarseKernelAD(const int level) const; //! \brief calls the device function of the coarse to fine grid interpolation kernel - void runCoarseToFineKernelLB(const int level, InterpolationCellCF *icellCF, OffCF &offCF, CudaStreamIndex streamIndex) const; + void runCoarseToFineKernelLB(const int level, InterpolationCells *coarseToFine, ICellNeigh &neighborCoarseToFine, CudaStreamIndex streamIndex) const; //! \brief calls the device function of the coarse to fine grid interpolation kernel (advection diffusion) void runCoarseToFineKernelAD(const int level) const; @@ -78,35 +76,21 @@ public: private: //! \brief check if grid scaling was set //! \throws std::runtime_error if interpolation nodes were assigned, but no scaling function was set in the grid - //! scaling factory \param scalingFunctionFC: a kernel function for the grid scaling \param scalingStruct: a struct + //! scaling factory \param scalingFunction: a kernel function for the grid scaling \param scalingStruct: a struct //! containing the grid nodes which are part of the interpolation \param scalingName: the name of the checked //! scaling function - void checkScalingFunction(const gridScalingFC &scalingFunctionFC, const InterpolationCellFC &scalingStruct, + void checkScalingFunction(const gridScaling &scalingFunction, const InterpolationCells &scalingStruct, const std::string &scalingName) { - if (!scalingFunctionFC && scalingStruct.kFC > 0) + if (!scalingFunction && scalingStruct.numberOfCells > 0) throw std::runtime_error("The scaling function " + scalingName + " was not set!"); - if (scalingFunctionFC && scalingStruct.kFC == 0) - VF_LOG_WARNING("The scaling function {} was set, although there is no refinement", scalingName); - } - - //! \brief check if grid scaling was set - //! \throws std::runtime_error if interpolation nodes were assigned, but no scaling function was set in the grid - //! scaling factory \param scalingFunctionCF: a kernel function for the grid scaling \param scalingStruct: a struct - //! containing the grid nodes which are part of the interpolation \param scalingName: the name of the checked - //! scaling function - void checkScalingFunction(const gridScalingCF &scalingFunctionCF, const InterpolationCellCF &scalingStruct, - const std::string &scalingName) - { - if (!scalingFunctionCF && scalingStruct.kCF > 0) - throw std::runtime_error("The scaling function " + scalingName + " was not set!"); - if (scalingFunctionCF && scalingStruct.kCF == 0) + if (scalingFunction && scalingStruct.numberOfCells == 0) VF_LOG_WARNING("The scaling function {} was set, although there is no refinement", scalingName); } SPtr<Parameter> para; - gridScalingFC scalingFineToCoarse = nullptr; - gridScalingCF scalingCoarseToFine = nullptr; + gridScaling scalingFineToCoarse = nullptr; + gridScaling scalingCoarseToFine = nullptr; }; #endif diff --git a/src/gpu/VirtualFluids_GPU/LBM/LB.h b/src/gpu/VirtualFluids_GPU/LBM/LB.h index cfdbbbae040a13f94e97d40d702b93d5a1e19c86..d01c2c80cdb252be72f442505133a1382c816b30 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/LB.h +++ b/src/gpu/VirtualFluids_GPU/LBM/LB.h @@ -164,30 +164,19 @@ struct InitCondition }; //Interface Cells -typedef struct ICellCF{ - uint* ICellCFF; - uint* ICellCFC; - uint kCF; -} InterpolationCellCF; - -typedef struct ICellFC{ - uint* ICellFCF; - uint* ICellFCC; - uint kFC; -} InterpolationCellFC; - -//Offset of the interface cells at the wall -typedef struct OffCF{ - real* xOffCF; - real* yOffCF; - real* zOffCF; -} OffsetCF; - -typedef struct OffFC{ - real* xOffFC; - real* yOffFC; - real* zOffFC; -} OffsetFC; +// example of old names (pre 2023) ICellCFC: interpolation from Coarse (C) to Fine (F), indices of the Coarse cells (C) +typedef struct ICells{ + uint* fineCellIndices; + uint* coarseCellIndices; + uint numberOfCells; +} InterpolationCells; + +//! \brief stores location of neighboring cell (necessary for refinement into the wall) +typedef struct ICellNeigh{ + real* x; + real* y; + real* z; +} InterpolationCellNeighbor; // Distribution functions g 6 typedef struct Distri6 { diff --git a/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp index 4d5895b323efa1b94a5780a59c882fd5ce1be7eb..1989f93159c4b00b340f2b8dd184f6e6c215f679 100644 --- a/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp @@ -46,8 +46,7 @@ void writeInterfaceLinesDebugCF(Parameter *para) { for (int level = 0; level < para->getMaxLevel(); level++) { const std::string fileName = para->getFName() + "_" + StringUtil::toString<int>(level) + "_OffDebugCF.vtk"; - writeGridInterfaceLines(para, level, para->getParH(level)->intCF.ICellCFC, para->getParH(level)->intCF.ICellCFF, - para->getParH(level)->K_CF, fileName); + writeGridInterfaceLines(para, level, para->getParH(level)->coarseToFine.coarseCellIndices, para->getParH(level)->coarseToFine.fineCellIndices, para->getParH(level)->coarseToFine.numberOfCells, fileName); } } @@ -55,8 +54,7 @@ void writeInterfaceLinesDebugFC(Parameter *para) { for (int level = 0; level < para->getMaxLevel(); level++) { const std::string fileName = para->getFName() + "_" + StringUtil::toString<int>(level) + "_OffDebugFC.vtk"; - writeGridInterfaceLines(para, level, para->getParH(level)->intFC.ICellFCC, para->getParH(level)->intFC.ICellFCF, - para->getParH(level)->K_FC, fileName); + writeGridInterfaceLines(para, level, para->getParH(level)->fineToCoarse.coarseCellIndices, para->getParH(level)->fineToCoarse.fineCellIndices, para->getParH(level)->fineToCoarse.numberOfCells, fileName); } } @@ -90,7 +88,7 @@ void writeInterfaceLinesDebugCFCneighbor(Parameter *para) { for (int level = 0; level < para->getMaxLevel(); level++) { std::string filename = para->getFName() + "_" + StringUtil::toString<int>(level) + "_CFCneighbor.vtk"; - writeGridInterfaceLinesNeighbors(para, level, para->getParH(level)->intCF.ICellCFC, para->getParH(level)->K_CF, + writeGridInterfaceLinesNeighbors(para, level, para->getParH(level)->coarseToFine.coarseCellIndices, para->getParH(level)->coarseToFine.numberOfCells, filename); } } @@ -100,8 +98,7 @@ void writeInterfaceLinesDebugCFFneighbor(Parameter *para) { for (int level = 0; level < para->getMaxLevel(); level++) { std::string filename = para->getFName() + "_" + StringUtil::toString<int>(level) + "_CFFneighbor.vtk"; - writeGridInterfaceLinesNeighbors(para, level + 1, para->getParH(level)->intCF.ICellCFF, - para->getParH(level)->K_CF, filename); + writeGridInterfaceLinesNeighbors(para, level + 1, para->getParH(level)->coarseToFine.fineCellIndices, para->getParH(level)->coarseToFine.numberOfCells, filename); } } @@ -110,7 +107,7 @@ void writeInterfaceLinesDebugFCCneighbor(Parameter *para) { for (int level = 0; level < para->getMaxLevel(); level++) { std::string filename = para->getFName() + "_" + StringUtil::toString<int>(level) + "_FCCneighbor.vtk"; - writeGridInterfaceLinesNeighbors(para, level, para->getParH(level)->intFC.ICellFCC, para->getParH(level)->K_FC, + writeGridInterfaceLinesNeighbors(para, level, para->getParH(level)->fineToCoarse.coarseCellIndices, para->getParH(level)->fineToCoarse.numberOfCells, filename); } } @@ -120,8 +117,7 @@ void writeInterfaceLinesDebugFCFneighbor(Parameter *para) { for (int level = 0; level < para->getMaxLevel(); level++) { std::string filename = para->getFName() + "_" + StringUtil::toString<int>(level) + "_FCFneighbor.vtk"; - writeGridInterfaceLinesNeighbors(para, level + 1, para->getParH(level)->intFC.ICellFCF, - para->getParH(level)->K_FC, filename); + writeGridInterfaceLinesNeighbors(para, level + 1, para->getParH(level)->fineToCoarse.fineCellIndices, para->getParH(level)->fineToCoarse.numberOfCells, filename); } } @@ -134,17 +130,17 @@ void writeInterfaceLinesDebugOff(Parameter *para) for (int level = 0; level < para->getMaxLevel(); level++) // evtl. Maxlevel + 1 { - nodeNumberVec += (int)para->getParH(level)->K_CF; + nodeNumberVec += (int)para->getParH(level)->coarseToFine.numberOfCells; } nodesVec.resize(nodeNumberVec * 8); int nodeCount = 0; for (int level = 0; level < para->getMaxLevel(); level++) { - for (unsigned int u = 0; u < para->getParH(level)->K_CF; u++) { - double xoff = para->getParH(level)->offCF.xOffCF[u]; - double yoff = para->getParH(level)->offCF.yOffCF[u]; - double zoff = para->getParH(level)->offCF.zOffCF[u]; + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { + double xoff = para->getParH(level)->neighborCoarseToFine.x[u]; + double yoff = para->getParH(level)->neighborCoarseToFine.y[u]; + double zoff = para->getParH(level)->neighborCoarseToFine.z[u]; - int posFine = para->getParH(level)->intCF.ICellCFF[u]; + int posFine = para->getParH(level)->coarseToFine.fineCellIndices[u]; double x1Fine = para->getParH(level + 1)->coordinateX[posFine]; double x2Fine = para->getParH(level + 1)->coordinateY[posFine]; @@ -175,13 +171,13 @@ void writeInterfacePointsDebugCFC(Parameter *para) for (int level = 0; level < para->getMaxLevel(); level++) // evtl. Maxlevel + 1 { - nodeNumberVec += (int)para->getParH(level)->K_CF; + nodeNumberVec += (int)para->getParH(level)->coarseToFine.numberOfCells; } nodesVec2.resize(nodeNumberVec * 8); int nodeCount2 = 0; for (int level = 0; level < para->getMaxLevel(); level++) { - for (unsigned int u = 0; u < para->getParH(level)->K_CF; u++) { - int pos = para->getParH(level)->intCF.ICellCFC[u]; + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { + int pos = para->getParH(level)->coarseToFine.coarseCellIndices[u]; double x1 = para->getParH(level)->coordinateX[pos]; double x2 = para->getParH(level)->coordinateY[pos]; @@ -467,13 +463,13 @@ void writeInterfaceCellsDebugCFC(Parameter *para) int nodeNumberVec = 0; for (int level = 0; level < para->getMaxLevel(); level++) // evtl. Maxlevel + 1 { - nodeNumberVec += (int)para->getParH(level)->K_CF; + nodeNumberVec += (int)para->getParH(level)->coarseToFine.numberOfCells; } nodesVec.resize(nodeNumberVec * 8); int nodeCount = 0; for (int level = 0; level < para->getMaxLevel(); level++) { - for (unsigned int u = 0; u < para->getParH(level)->K_CF; u++) { - int pos = para->getParH(level)->intCF.ICellCFC[u]; + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { + int pos = para->getParH(level)->coarseToFine.coarseCellIndices[u]; double x1 = para->getParH(level)->coordinateX[pos]; double x2 = para->getParH(level)->coordinateY[pos]; @@ -508,13 +504,13 @@ void writeInterfaceCellsDebugCFF(Parameter *para) int nodeNumberVec = 0; for (int level = 0; level < para->getMaxLevel(); level++) // evtl. Maxlevel + 1 { - nodeNumberVec += (int)para->getParH(level)->K_CF; + nodeNumberVec += (int)para->getParH(level)->coarseToFine.numberOfCells; } nodesVec.resize(nodeNumberVec * 8); int nodeCount = 0; for (int level = 0; level < para->getMaxLevel(); level++) { - for (unsigned int u = 0; u < para->getParH(level)->K_CF; u++) { - int pos = para->getParH(level)->intCF.ICellCFF[u]; + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { + int pos = para->getParH(level)->coarseToFine.fineCellIndices[u]; double x1 = para->getParH(level + 1)->coordinateX[pos]; double x2 = para->getParH(level + 1)->coordinateY[pos]; @@ -620,7 +616,7 @@ void writeInterfaceFCC_Send(Parameter *para) std::vector<std::vector<double>> nodedata; for (int level = 0; level < para->getMaxLevel(); level++) { - nodeNumberVec += (int)para->getParH(level)->intFC.kFC; + nodeNumberVec += (int)para->getParH(level)->fineToCoarse.numberOfCells; } nodesVec.resize(nodeNumberVec); @@ -628,8 +624,8 @@ void writeInterfaceFCC_Send(Parameter *para) int nodeCount = 0; for (int level = 0; level < para->getMaxLevel(); level++) { - for (unsigned int u = 0; u < para->getParH(level)->intFC.kFC; u++) { - int pos = para->getParH(level)->intFC.ICellFCC[u]; + for (unsigned int u = 0; u < para->getParH(level)->fineToCoarse.numberOfCells; u++) { + int pos = para->getParH(level)->fineToCoarse.coarseCellIndices[u]; nodedata[0][nodeCount] = pos; // coordinate section @@ -639,7 +635,7 @@ void writeInterfaceFCC_Send(Parameter *para) nodesVec[nodeCount] = (makeUbTuple((float)(x1), (float)(x2), (float)(x3))); // nodedata section - nodedata[1][nodeCount] = u < para->getParH(level)->intFCBorder.kFC; + nodedata[1][nodeCount] = u < para->getParH(level)->fineToCoarseBorder.numberOfCells; int sendDir = 0.0; int sendDirectionInCommAfterFtoC = 0.0; int sendIndex = 0.0; @@ -674,7 +670,7 @@ void writeInterfaceCFC_Recv(Parameter *para) std::vector<std::vector<double>> nodedata; for (int level = 0; level < para->getMaxLevel(); level++) { - nodeNumberVec += (int)para->getParH(level)->intCF.kCF; + nodeNumberVec += (int)para->getParH(level)->coarseToFine.numberOfCells; } nodesVec.resize(nodeNumberVec); @@ -682,8 +678,8 @@ void writeInterfaceCFC_Recv(Parameter *para) int nodeCount = 0; for (int level = 0; level < para->getMaxLevel(); level++) { - for (unsigned int u = 0; u < para->getParH(level)->intCF.kCF; u++) { - int pos = para->getParH(level)->intCF.ICellCFC[u]; + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { + int pos = para->getParH(level)->coarseToFine.coarseCellIndices[u]; nodedata[0][nodeCount] = pos; // coordinate section @@ -693,7 +689,7 @@ void writeInterfaceCFC_Recv(Parameter *para) nodesVec[nodeCount] = (makeUbTuple((float)(x1), (float)(x2), (float)(x3))); // nodedata section - nodedata[1][nodeCount] = u < para->getParH(level)->intCFBorder.kCF; + nodedata[1][nodeCount] = u < para->getParH(level)->coarseToFineBorder.numberOfCells; int recvDir = 0.0; int recvDirectionInCommAfterFtoC = 0.0; int recvIndex = 0.0; @@ -799,12 +795,12 @@ void writeSendNodesStream(Parameter *para) } } - // check if node is in iCellFCC + // check if node is in a coarse cell for the interpolation from fine to coarse nodedata[4].resize(nodedata[0].size()); for (int i = 0; i < (int)nodedata[0].size(); i++) { pos = nodedata[0][i]; - for (unsigned int u = 0; u < para->getParH(level)->intFC.kFC; u++) { - if (para->getParH(level)->intFC.ICellFCC[u] == (uint)pos) { + for (unsigned int u = 0; u < para->getParH(level)->fineToCoarse.numberOfCells; u++) { + if (para->getParH(level)->fineToCoarse.coarseCellIndices[u] == (uint)pos) { nodedata[4][i] = 1.0; break; } @@ -895,7 +891,7 @@ void writeRecvNodesStream(Parameter *para) } } - // Recv are nodes ghost nodes and therefore they can't be iCellCFCs + // Recv are nodes ghost nodes and therefore they can't be coarse cells for the interpolation from coarse to fine std::string filenameVec = para->getFName() + "_writeRecvNodesStreams_PID_" + std::to_string(vf::gpu::Communicator::getInstance().getPID()) + "_" + diff --git a/src/gpu/VirtualFluids_GPU/Output/OffsetWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/OffsetWriter.hpp index 7aa660fa33d8ad31a19053e3511241de3ee07c07..fb04951db68ae509dddc7d2fe52250489b54bde2 100644 --- a/src/gpu/VirtualFluids_GPU/Output/OffsetWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/OffsetWriter.hpp @@ -21,13 +21,13 @@ public: { for (int level = 0; level < para->getMaxLevel(); level++) { - out.writeInteger(para->getParH(level)->K_CF); + out.writeInteger(para->getParH(level)->coarseToFine.numberOfCells); out.writeLine(); - for(unsigned int u=0; u<para->getParH(level)->K_CF; u++) + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { - out.writeDouble(para->getParH(level)->offCF.xOffCF[u]); - out.writeDouble(para->getParH(level)->offCF.yOffCF[u]); - out.writeDouble(para->getParH(level)->offCF.zOffCF[u]); + out.writeDouble(para->getParH(level)->neighborCoarseToFine.x[u]); + out.writeDouble(para->getParH(level)->neighborCoarseToFine.y[u]); + out.writeDouble(para->getParH(level)->neighborCoarseToFine.z[u]); } out.writeLine(); } //end levelloop @@ -36,13 +36,13 @@ public: { for (int level = 0; level < para->getMaxLevel(); level++) { - out.writeInteger(para->getParH(level)->K_FC); + out.writeInteger(para->getParH(level)->fineToCoarse.numberOfCells); out.writeLine(); - for(unsigned int u=0; u<para->getParH(level)->K_FC; u++) + for (unsigned int u = 0; u < para->getParH(level)->fineToCoarse.numberOfCells; u++) { - out.writeDouble(para->getParH(level)->offFC.xOffFC[u]); - out.writeDouble(para->getParH(level)->offFC.yOffFC[u]); - out.writeDouble(para->getParH(level)->offFC.zOffFC[u]); + out.writeDouble(para->getParH(level)->neighborFineToCoarse.x[u]); + out.writeDouble(para->getParH(level)->neighborFineToCoarse.y[u]); + out.writeDouble(para->getParH(level)->neighborFineToCoarse.z[u]); } out.writeLine(); } //end levelloop diff --git a/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp index a9207ed231e8d9667e57636a5a5fdd6b5aeab94f..d7eab31d639d23d2356263aa8b152d69b3c042b8 100644 --- a/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp @@ -38,11 +38,11 @@ public: { for (int level = 0; level < para->getMaxLevel(); level++) { - out.writeInteger(para->getParH(level)->K_CF); + out.writeInteger(para->getParH(level)->coarseToFine.numberOfCells); out.writeLine(); - for(unsigned int u=0; u<para->getParH(level)->K_CF; u++) + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { - out.writeInteger(para->getParH(level)->intCF.ICellCFC[u]); + out.writeInteger(para->getParH(level)->coarseToFine.coarseCellIndices[u]); } out.writeLine(); } //end levelloop @@ -51,11 +51,11 @@ public: { for (int level = 0; level < para->getMaxLevel(); level++) { - out.writeInteger(para->getParH(level)->K_CF); + out.writeInteger(para->getParH(level)->coarseToFine.numberOfCells); out.writeLine(); - for(unsigned int u=0; u<para->getParH(level)->K_CF; u++) + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { - out.writeInteger(para->getParH(level)->intCF.ICellCFF[u]); + out.writeInteger(para->getParH(level)->coarseToFine.fineCellIndices[u]); } out.writeLine(); } //end levelloop @@ -64,11 +64,11 @@ public: { for (int level = 0; level < para->getMaxLevel(); level++) { - out.writeInteger(para->getParH(level)->K_FC); + out.writeInteger(para->getParH(level)->fineToCoarse.numberOfCells); out.writeLine(); - for(unsigned int u=0; u<para->getParH(level)->K_FC; u++) + for (unsigned int u = 0; u < para->getParH(level)->fineToCoarse.numberOfCells; u++) { - out.writeInteger(para->getParH(level)->intFC.ICellFCC[u]); + out.writeInteger(para->getParH(level)->fineToCoarse.coarseCellIndices[u]); } out.writeLine(); } //end levelloop @@ -77,11 +77,11 @@ public: { for (int level = 0; level < para->getMaxLevel(); level++) { - out.writeInteger(para->getParH(level)->K_FC); + out.writeInteger(para->getParH(level)->fineToCoarse.numberOfCells); out.writeLine(); - for(unsigned int u=0; u<para->getParH(level)->K_FC; u++) + for (unsigned int u = 0; u < para->getParH(level)->fineToCoarse.numberOfCells; u++) { - out.writeInteger(para->getParH(level)->intFC.ICellFCF[u]); + out.writeInteger(para->getParH(level)->fineToCoarse.fineCellIndices[u]); } out.writeLine(); } //end levelloop diff --git a/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp index f140b15a6b7595a959139da2a35ed58f01b2a307..bf35411b93fd1f126cfdde1f3739f1baa33a4d83 100644 --- a/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp @@ -32,11 +32,11 @@ public: { if ((Type == "_InterfaceCFC") || (Type == "_InterfaceCFF")) { - nodeNumberVec += para->getParH(level)->K_CF; + nodeNumberVec += para->getParH(level)->coarseToFine.numberOfCells; } else if (Type == "_InterfaceFCF") { - nodeNumberVec += para->getParH(level)->K_FC; + nodeNumberVec += para->getParH(level)->fineToCoarse.numberOfCells; } } nodesVec.resize(nodeNumberVec*8); @@ -55,9 +55,9 @@ public: //std::vector<unsigned int>& posVec = posIndexVec[level]; if (Type == "_InterfaceCFC") { - for(unsigned int u=0;u<para->getParH(level)->K_CF;u++) + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { - int pos = para->getParH(level)->intCF.ICellCFC[u]; + int pos = para->getParH(level)->coarseToFine.coarseCellIndices[u]; int ix1 = pos % nx1lev; int wertDurchNx1 = pos / nx1lev; int ix2 = wertDurchNx1 % nx2lev; @@ -82,9 +82,9 @@ public: } else if (Type == "_InterfaceCFF") { - for(unsigned int u=0;u<para->getParH(level)->K_CF;u++) + for (unsigned int u = 0; u < para->getParH(level)->coarseToFine.numberOfCells; u++) { - int pos = para->getParH(level)->intCF.ICellCFF[u]; + int pos = para->getParH(level)->coarseToFine.fineCellIndices[u]; int ix1 = pos % nx1lev; int wertDurchNx1 = pos / nx1lev; int ix2 = wertDurchNx1 % nx2lev; @@ -109,9 +109,9 @@ public: } else if (Type == "_InterfaceFCF") { - for(unsigned int u=0;u<para->getParH(level)->K_FC;u++) + for (unsigned int u = 0; u < para->getParH(level)->fineToCoarse.numberOfCells; u++) { - int pos = para->getParH(level)->intFC.ICellFCF[u]; + int pos = para->getParH(level)->fineToCoarse.fineCellIndices[u]; int ix1 = pos % nx1lev; int wertDurchNx1 = pos / nx1lev; int ix2 = wertDurchNx1 % nx2lev; @@ -146,7 +146,7 @@ public: int nodeNumberVec = 0; for (int level = 0; level < para->getMaxLevel(); level++) { - nodeNumberVec += para->getParH(level)->K_FC; + nodeNumberVec += para->getParH(level)->fineToCoarse.numberOfCells; } nodesVec.resize(nodeNumberVec*8); int nodeCount = 0; @@ -163,9 +163,9 @@ public: double achtelNodeDelta = 0.125*nodeDeltaLevel; //int count = 0; //std::vector<unsigned int>& posVec = posIndexVec[level]; - for(unsigned int u=0;u<para->getParH(level)->K_FC;u++) + for (unsigned int u = 0; u < para->getParH(level)->fineToCoarse.numberOfCells; u++) { - int pos = para->getParH(level)->intFC.ICellFCC[u];//posVec[u]; + int pos = para->getParH(level)->fineToCoarse.coarseCellIndices[u];//posVec[u]; int ix1 = pos % nx1lev; int wertDurchNx1 = pos / nx1lev; int ix2 = wertDurchNx1 % nx2lev; diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp index e593d16d6ed1f69ca65a22606a157e7ea9e6b111..9a7f92a96e51cb1fb9c2138721ba5e3143b84ebe 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp @@ -493,9 +493,9 @@ void Parameter::initLBMSimulationParameter() parH[i]->gridNX = getGridX().at(i); parH[i]->gridNY = getGridY().at(i); parH[i]->gridNZ = getGridZ().at(i); - parH[i]->vis = ic.vis * pow(2.f, i); - parH[i]->diffusivity = ic.Diffusivity * pow(2.f, i); - parH[i]->omega = 1.0f / (3.0f * parH[i]->vis + 0.5f); // omega :-) not s9 = -1.0f/(3.0f*parH[i]->vis+0.5f);// + parH[i]->viscosity = ic.vis * pow((real)2.0, i); + parH[i]->diffusivity = ic.Diffusivity * pow((real)2.0, i); + parH[i]->omega = (real)1.0 / (real(3.0) * parH[i]->viscosity + real(0.5)); // omega :-) not s9 = -1.0f/(3.0f*parH[i]->vis+0.5f);// parH[i]->nx = parH[i]->gridNX + 2 * STARTOFFX; parH[i]->ny = parH[i]->gridNY + 2 * STARTOFFY; parH[i]->nz = parH[i]->gridNZ + 2 * STARTOFFZ; @@ -510,10 +510,10 @@ void Parameter::initLBMSimulationParameter() parH[i]->isEvenTimestep = true; parH[i]->startz = parH[i]->gridNZ * ic.myProcessId; parH[i]->endz = parH[i]->gridNZ * ic.myProcessId + parH[i]->gridNZ; - parH[i]->Lx = (real)((1.f * parH[i]->gridNX - 1.f) / (pow(2.f, i))); - parH[i]->Ly = (real)((1.f * parH[i]->gridNY - 1.f) / (pow(2.f, i))); - parH[i]->Lz = (real)((1.f * parH[i]->gridNZ - 1.f) / (pow(2.f, i))); - parH[i]->dx = (real)(1.f / (pow(2.f, i))); + parH[i]->Lx = ((real)1.0 * parH[i]->gridNX - (real)1.0) / (pow((real)2.0, i)); + parH[i]->Ly = ((real)1.0 * parH[i]->gridNY - (real)1.0) / (pow((real)2.0, i)); + parH[i]->Lz = ((real)1.0 * parH[i]->gridNZ - (real)1.0) / (pow((real)2.0, i)); + parH[i]->dx = (real)1.0 / pow((real)2.0, i); parH[i]->XdistKn = getDistX().at(i); parH[i]->YdistKn = getDistY().at(i); parH[i]->ZdistKn = getDistZ().at(i); @@ -521,12 +521,12 @@ void Parameter::initLBMSimulationParameter() parH[i]->distX = (real)getDistX().at(i); parH[i]->distY = (real)getDistY().at(i); parH[i]->distZ = (real)getDistZ().at(i); - parH[i]->mTtoWx = (real)1.0f; - parH[i]->mTtoWy = (real)1.0f; - parH[i]->mTtoWz = (real)1.0f; - parH[i]->cTtoWx = (real)0.0f; - parH[i]->cTtoWy = (real)0.0f; - parH[i]->cTtoWz = (real)0.0f; + parH[i]->mTtoWx = (real)1.0; + parH[i]->mTtoWy = (real)1.0; + parH[i]->mTtoWz = (real)1.0; + parH[i]->cTtoWx = (real)0.0; + parH[i]->cTtoWy = (real)0.0; + parH[i]->cTtoWz = (real)0.0; ////MGs Trafo/////////////////////////////////////////////////////////////// // parH[i]->cStartx = (real)parH[i]->XdistKn; // parH[i]->cStarty = (real)parH[i]->XdistKn; @@ -534,9 +534,9 @@ void Parameter::initLBMSimulationParameter() //////////////////////////////////////////////////////////////////////////// } else { // Geller - parH[i]->distX = ((real)getDistX().at(i) + 0.25f) * parH[i - 1]->dx; - parH[i]->distY = ((real)getDistY().at(i) + 0.25f) * parH[i - 1]->dx; - parH[i]->distZ = ((real)getDistZ().at(i) + 0.25f) * parH[i - 1]->dx; + parH[i]->distX = ((real)getDistX().at(i) + (real)0.25) * parH[i - 1]->dx; + parH[i]->distY = ((real)getDistY().at(i) + (real)0.25) * parH[i - 1]->dx; + parH[i]->distZ = ((real)getDistZ().at(i) + (real)0.25) * parH[i - 1]->dx; // parH[i]->distX = ((real)getDistX().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distX; // parH[i]->distY = ((real)getDistY().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distY; // parH[i]->distZ = ((real)getDistZ().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distZ; @@ -561,7 +561,7 @@ void Parameter::initLBMSimulationParameter() parD[i]->gridNX = parH[i]->gridNX; parD[i]->gridNY = parH[i]->gridNY; parD[i]->gridNZ = parH[i]->gridNZ; - parD[i]->vis = parH[i]->vis; + parD[i]->viscosity = parH[i]->viscosity; parD[i]->diffusivity = parH[i]->diffusivity; parD[i]->omega = parH[i]->omega; parD[i]->nx = parH[i]->nx; @@ -598,7 +598,7 @@ void Parameter::checkParameterValidityCumulantK17() const if (this->mainKernel != "CumulantK17") return; - const real viscosity = this->parH[maxlevel]->vis; + const real viscosity = this->parH[maxlevel]->viscosity; const real viscosityLimit = 1.0 / 42.0; if (viscosity > viscosityLimit) { VF_LOG_WARNING("The viscosity (in LB units) at level {} is {:1.3g}. It is recommended to keep it smaller than {:1.3g} " diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h index 24e0475ba516de82f9fb8bba40a9aab31415c6bd..cfd13d62be45135d40f69e1f9c6b6d69303b6c9c 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h @@ -85,6 +85,8 @@ struct LBMSimulationParameter { real *velocityX, *velocityY, *velocityZ, *rho, *pressure; //! \brief stores the value for omega real omega; + //! \brief stores the value for viscosity + real viscosity; ////////////////////////////////////////////////////////////////////////// //! \brief stores the number of nodes (based on indirect addressing scheme) unsigned long long numberOfNodes; @@ -128,6 +130,8 @@ struct LBMSimulationParameter { //! \brief can be used for pressure correction at outflow boundary condition real outflowPressureCorrectionFactor; ////////////////////////////////////////////////////////////////////////// + //! \brief store the values of body forces for all 3 dimensions + real *forceX_SP, *forceY_SP, *forceZ_SP; ////////////////////////////////////////////////////////////////////////// @@ -141,8 +145,28 @@ struct LBMSimulationParameter { real *concentration; //! \brief store all distribution functions for the D3Q27 advection diffusion field Distributions27 distributionsAD; + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // Grid Refinement + ////////////////////////////////////////////////////////////////////////// + //! \brief stores the base-node-indices of coarse and fine refinement cells + InterpolationCells coarseToFine; + InterpolationCells fineToCoarse; + ////////////////////////////////////////////////////////////////////////// + //! \brief distinguish between bulk and border interpolation cells (necessary for communication hiding) + InterpolationCells fineToCoarseBorder; + InterpolationCells fineToCoarseBulk; + InterpolationCells coarseToFineBorder; + InterpolationCells coarseToFineBulk; + ////////////////////////////////////////////////////////////////////////// + //! \brief stores location of neighboring cell (necessary for refinement into the wall) + InterpolationCellNeighbor neighborCoarseToFine; + InterpolationCellNeighbor neighborCoarseToFineBulk; + InterpolationCellNeighbor neighborFineToCoarse; + InterpolationCellNeighbor neighborFineToCoarseBulk; + ////////////////////////////////////////////////////////////////////////// @@ -151,9 +175,31 @@ struct LBMSimulationParameter { + ////////////////////////////////////////////////////////////////////////// + // potential additional logic + ////////////////////////////////////////////////////////////////////////// + + // distributions F3//////// + Distributions6 g6; + + unsigned int size_Array_SP; //?? Deprecated + + // BC NoSlip + TempforBoundaryConditions Temp; + // BC Velocity + TempVelforBoundaryConditions TempVel; + // BC Pressure + TempPressforBoundaryConditions TempPress; + + + + + + + ////////////////////////////////////////////////////////////////////////// - // DEPRECATED + // DEPRECATED - planed to be taken out for next open source release ////////////////////////////////////////////////////////////////////////// // distributions/////////// @@ -210,41 +256,58 @@ struct LBMSimulationParameter { real cStartx, cStarty, cStartz; real cFx, cFy, cFz; + // interface//////////////// + bool need_interface[6]; + unsigned int XdistKn, YdistKn, ZdistKn; - ////////////////////////////////////////////////////////////////////////// + // vel parab/////////////// + real *vParab; + + // macroscopic values////// + // real *vx, *vy, *vz, *rho; // DEPRECATED: macroscopic values for full matrix + + // derivations for iso test + real *dxxUx, *dyyUy, *dzzUz; + // grid//////////////////// + unsigned int nx, ny, nz; + unsigned int gridNX, gridNY, gridNZ; + // size of matrix////////// + unsigned int size_Mat; + unsigned int sizePlaneXY, sizePlaneYZ, sizePlaneXZ; + // size of Plane btw. 2 GPUs////// + unsigned int sizePlaneSB, sizePlaneRB, startB, endB; + unsigned int sizePlaneST, sizePlaneRT, startT, endT; + bool isSetSendB, isSetRecvB, isSetSendT, isSetRecvT; + int *SendT, *SendB, *RecvT, *RecvB; + + // size of Plane for PressMess + unsigned int sizePlanePress, startP; + unsigned int sizePlanePressIN, startPIN; + unsigned int sizePlanePressOUT, startPOUT; + bool isSetPress; + + // deltaPhi + real deltaPhi; + + // particles + PathLineParticles plp; - ////////////////////////////////////////////////////////////////////////// - // additional logic ////////////////////////////////////////////////////////////////////////// - // distributions F3//////// - Distributions6 g6; - unsigned int size_Array_SP; //?? Deprecated - // BC NoSlip - TempforBoundaryConditions Temp; - // BC Velocity - TempVelforBoundaryConditions TempVel; - // BC Pressure - TempPressforBoundaryConditions TempPress; - // memory size of sparse matrix ///////////////// + ////////////////////////////////////////////////////////////////////////// - // body forces//////////// - real *forceX_SP, *forceY_SP, *forceZ_SP; - - // vel parab/////////////// - real *vParab; // turbulent viscosity /// real *turbViscosity; @@ -255,13 +318,6 @@ struct LBMSimulationParameter { real *vxx, *vyy, *vzz, *vxy, *vxz, *vyz; // fluctuations std::vector<real> turbulenceIntensity; - // macroscopic values////// - // real *vx, *vy, *vz, *rho; // DEPRECATED: macroscopic values for full matrix - //! \brief stores the value for viscosity (on level 0) - real vis; - - // derivations for iso test - real *dxxUx, *dyyUy, *dzzUz; // median-macro-values///// real *vx_SP_Med, *vy_SP_Med, *vz_SP_Med, *rho_SP_Med, *press_SP_Med; @@ -269,55 +325,12 @@ struct LBMSimulationParameter { // Advection-Diffusion real *Conc_Med, *Conc_Med_Out; - // grid//////////////////// - unsigned int nx, ny, nz; - unsigned int gridNX, gridNY, gridNZ; - - // size of matrix////////// - unsigned int size_Mat; - unsigned int sizePlaneXY, sizePlaneYZ, sizePlaneXZ; - - // size of Plane btw. 2 GPUs////// - unsigned int sizePlaneSB, sizePlaneRB, startB, endB; - unsigned int sizePlaneST, sizePlaneRT, startT, endT; - bool isSetSendB, isSetRecvB, isSetSendT, isSetRecvT; - int *SendT, *SendB, *RecvT, *RecvB; - - // size of Plane for PressMess - unsigned int sizePlanePress, startP; - unsigned int sizePlanePressIN, startPIN; - unsigned int sizePlanePressOUT, startPOUT; - bool isSetPress; - // print/////////////////// unsigned int startz, endz; real Lx, Ly, Lz, dx; real distX, distY, distZ; - // interface//////////////// - bool need_interface[6]; - unsigned int XdistKn, YdistKn, ZdistKn; - InterpolationCellCF intCF; - InterpolationCellFC intFC; - unsigned int K_CF; - unsigned int K_FC; - unsigned int mem_size_kCF; - unsigned int mem_size_kFC; - - InterpolationCellFC intFCBorder; - InterpolationCellFC intFCBulk; - InterpolationCellCF intCFBorder; - InterpolationCellCF intCFBulk; - - // offset////////////////// - OffsetCF offCF; - OffsetCF offCFBulk; - OffsetFC offFC; - OffsetFC offFCBulk; - unsigned int mem_size_kCF_off; - unsigned int mem_size_kFC_off; - // testRoundoffError Distributions27 kDistTestRE; @@ -376,13 +389,6 @@ struct LBMSimulationParameter { int *naschVelocity; uint numberOfStreetNodes; - // deltaPhi - real deltaPhi; - - //////////////////////////////////////////////////////////////////////////// - // particles - PathLineParticles plp; - //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// // 1D domain decomposition