From 51e6a805e2b2c292db01bb72ac516749211eb0f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Sch=C3=B6nherr?= <schoen@irmb.tu-bs.de> Date: Thu, 29 Nov 2018 14:30:05 +0100 Subject: [PATCH] added new kernels with chimera transformation and added new lbm and scaling kernels for F3 --- .../Calculation/UpdateGrid27.cpp | 144 +- .../GridReaderFiles/GridReader.cpp | 7 +- .../GridReaderGenerator/GridGenerator.cpp | 3 +- src/VirtualFluids_GPU/GPU/Cumulant27.cu | 1127 +-- src/VirtualFluids_GPU/GPU/Cumulant27chim.cu | 2383 +++++ src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu | 2112 ++++ src/VirtualFluids_GPU/GPU/GPU_Interface.h | 106 + src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh | 107 + src/VirtualFluids_GPU/GPU/LBMKernel.cu | 311 +- src/VirtualFluids_GPU/GPU/ScaleCF27.cu | 4276 +------- src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu | 8624 +++++++++++++++++ src/VirtualFluids_GPU/GPU/ScaleFC27.cu | 1248 +-- src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu | 2497 +++++ src/VirtualFluids_GPU/Init/InitLattice.cpp | 52 +- src/VirtualFluids_GPU/LBM/Simulation.cpp | 104 +- targets/apps/LBM/lbmTest/main.cpp | 54 +- 16 files changed, 16408 insertions(+), 6747 deletions(-) create mode 100644 src/VirtualFluids_GPU/GPU/Cumulant27chim.cu create mode 100644 src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu create mode 100644 src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu create mode 100644 src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu diff --git a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp index 94d738c66..da0c3703b 100644 --- a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp +++ b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp @@ -120,20 +120,34 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev // para->getParD(level)->evenOrOdd); //getLastCudaError("KernelBGKPlusSP27 execution failed"); //printf("Level: %d \n", level); - KernelKumNewCompSP27(para->getParD(level)->numberofthreads, - para->getParD(level)->omega, - para->getParD(level)->geoSP, - para->getParD(level)->neighborX_SP, - para->getParD(level)->neighborY_SP, - para->getParD(level)->neighborZ_SP, - para->getParD(level)->d0SP.f[0], - para->getParD(level)->size_Mat_SP, - para->getParD(level)->size_Array_SP, - level, - para->getForcesDev(), - para->getParD(level)->evenOrOdd); - getLastCudaError("KernelKumNewCompSP27 execution failed"); + //KernelKumNewCompSP27(para->getParD(level)->numberofthreads, + // para->getParD(level)->omega, + // para->getParD(level)->geoSP, + // para->getParD(level)->neighborX_SP, + // para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, + // para->getParD(level)->d0SP.f[0], + // para->getParD(level)->size_Mat_SP, + // para->getParD(level)->size_Array_SP, + // level, + // para->getForcesDev(), + // para->getParD(level)->evenOrOdd); + //getLastCudaError("KernelKumNewCompSP27 execution failed"); //F3 + KernelCumulantD3Q27F3_2018( para->getParD(level)->numberofthreads, + para->getParD(level)->omega, + para->getParD(level)->geoSP, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->d0SP.f[0], + para->getParD(level)->g6.g[0], + para->getParD(level)->size_Mat_SP, + level, + para->getForcesDev(), + para->getParD(level)->evenOrOdd); + getLastCudaError("KernelCumulantD3Q27F3_2018 execution failed"); + //KernelCumulantD3Q27F3(para->getParD(level)->numberofthreads, // para->getParD(level)->omega, // para->getParD(level)->geoSP, @@ -1102,19 +1116,35 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev // para->getParD(level)->evenOrOdd); //getLastCudaError("KernelBGKPlusSP27 execution failed"); //printf("Level: %d \n", level); - KernelKumNewCompSP27(para->getParD(level)->numberofthreads, - para->getParD(level)->omega, - para->getParD(level)->geoSP, - para->getParD(level)->neighborX_SP, - para->getParD(level)->neighborY_SP, - para->getParD(level)->neighborZ_SP, - para->getParD(level)->d0SP.f[0], - para->getParD(level)->size_Mat_SP, - para->getParD(level)->size_Array_SP, - level, - para->getForcesDev(), - para->getParD(level)->evenOrOdd); - getLastCudaError("KernelKumNewCompSP27 execution failed"); + //KernelKumNewCompSP27(para->getParD(level)->numberofthreads, + // para->getParD(level)->omega, + // para->getParD(level)->geoSP, + // para->getParD(level)->neighborX_SP, + // para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, + // para->getParD(level)->d0SP.f[0], + // para->getParD(level)->size_Mat_SP, + // para->getParD(level)->size_Array_SP, + // level, + // para->getForcesDev(), + // para->getParD(level)->evenOrOdd); + //getLastCudaError("KernelKumNewCompSP27 execution failed"); + + //F3 + KernelCumulantD3Q27F3_2018( para->getParD(level)->numberofthreads, + para->getParD(level)->omega, + para->getParD(level)->geoSP, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->d0SP.f[0], + para->getParD(level)->g6.g[0], + para->getParD(level)->size_Mat_SP, + level, + para->getForcesDev(), + para->getParD(level)->evenOrOdd); + getLastCudaError("KernelCumulantD3Q27F3_2018 execution failed"); + //KernelCumulantD3Q27F3(para->getParD(level)->numberofthreads, // para->getParD(level)->omega, // para->getParD(level)->geoSP, @@ -1705,6 +1735,17 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev //////////////////////////////////////////////////////////////////////////////// //fine to coarse interpolation + ScaleFC_comp_D3Q27F3_2018( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], para->getParD(level)->g6.g[0], + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + para->getParD(level)->offFC); + getLastCudaError("ScaleFC_comp_D3Q27F3_2018 execution failed"); + //////////////////////////////////////////////////////////////////////////////// //ScaleFC_comp_D3Q27F3(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], para->getParD(level)->g6.g[0], // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, @@ -1737,16 +1778,16 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev // para->getParD(level)->offFC); //getLastCudaError("ScaleFC_RhoSq_3rdMom_comp_27 execution failed"); //////////////////////////////////////////////////////////////////////////////// - ScaleFC_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - para->getParD(level)->offFC); - getLastCudaError("ScaleFC27_RhoSq_comp execution failed"); + // ScaleFC_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + //para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + //para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + //para->getParD(level)->offFC); + // getLastCudaError("ScaleFC27_RhoSq_comp execution failed"); //////////////////////////////////////////////////////////////////////////////// //data exchange if (para->getNumprocs() > 1) @@ -1774,6 +1815,17 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev } ////////////////////////////////////////////////////////////////////////////////// ////coarse to fine interpolation + ScaleCF_comp_D3Q27F3_2018( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], para->getParD(level+1)->g6.g[0], + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + para->getParD(level)->offCF); + getLastCudaError("ScaleCF_comp_D3Q27F3_2018 execution failed"); + //////////////////////////////////////////////////////////////////////// //ScaleCF_comp_D3Q27F3(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], para->getParD(level+1)->g6.g[0], // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, @@ -1796,16 +1848,16 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev // para->getParD(level)->offCF); // getLastCudaError("ScaleCF_0817_comp_27 execution failed"); //////////////////////////////////////////////////////////////////////// - ScaleCF_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - para->getParD(level)->offCF); - getLastCudaError("ScaleCF27_RhoSq_comp execution failed"); + // ScaleCF_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + //para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + //para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + //para->getParD(level)->offCF); + // getLastCudaError("ScaleCF27_RhoSq_comp execution failed"); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ScaleCF_RhoSq_3rdMom_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp index 46d08c639..cb3f19a23 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp @@ -106,12 +106,9 @@ void GridReader::allocArrays_CoordNeighborGeo() cudaMemoryManager->cudaAllocCoord(level); cudaMemoryManager->cudaAllocSP(level); - cudaMemoryManager->cudaAllocNeighborWSB(level); + para->cudaAllocF3SP(level); + cudaMemoryManager->cudaAllocNeighborWSB(level); - /////////////////////////// - //F3 - para->cudaAllocF3SP(level); - /////////////////////////// if (para->getCalcMedian()) para->cudaAllocMedianSP(level); if (para->getCalcParticle() || para->getUseWale()) diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index d9ec7c2f3..b9bae16d9 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -62,7 +62,8 @@ void GridGenerator::allocArrays_CoordNeighborGeo() cudaMemoryManager->cudaAllocCoord(level); cudaMemoryManager->cudaAllocSP(level); - cudaMemoryManager->cudaAllocNeighborWSB(level); + para->cudaAllocF3SP(level); + cudaMemoryManager->cudaAllocNeighborWSB(level); builder->getNodeValues( para->getParH(level)->coordX_SP, diff --git a/src/VirtualFluids_GPU/GPU/Cumulant27.cu b/src/VirtualFluids_GPU/GPU/Cumulant27.cu index fd9164eb7..065ca90cc 100644 --- a/src/VirtualFluids_GPU/GPU/Cumulant27.cu +++ b/src/VirtualFluids_GPU/GPU/Cumulant27.cu @@ -1,3 +1,10 @@ +// _ ___ __ __________ _ __ ______________ __ +// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / +// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / +// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / +// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ +// +////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/D3Q27.h" #include "math.h" @@ -1108,1126 +1115,6 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(real omega, - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3( real omega, - unsigned int* bcMatD, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* DDStart, - real* G6, - int size_Mat, - int level, - real* forces, - bool EvenOrOdd) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k < size_Mat) - { - //////////////////////////////////////////////////////////////////////////////// - unsigned int BC; - BC = bcMatD[k]; - - if ((BC != GEO_SOLID) && (BC != GEO_VOID)) - { - Distributions27 D; - if (EvenOrOdd == true) - { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; - } - else - { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; - } - - Distributions6 G; - if (EvenOrOdd == true) - { - G.g[dirE] = &G6[dirE *size_Mat]; - G.g[dirW] = &G6[dirW *size_Mat]; - G.g[dirN] = &G6[dirN *size_Mat]; - G.g[dirS] = &G6[dirS *size_Mat]; - G.g[dirT] = &G6[dirT *size_Mat]; - G.g[dirB] = &G6[dirB *size_Mat]; - } - else - { - G.g[dirW] = &G6[dirE *size_Mat]; - G.g[dirE] = &G6[dirW *size_Mat]; - G.g[dirS] = &G6[dirN *size_Mat]; - G.g[dirN] = &G6[dirS *size_Mat]; - G.g[dirB] = &G6[dirT *size_Mat]; - G.g[dirT] = &G6[dirB *size_Mat]; - } - - //////////////////////////////////////////////////////////////////////////////// - //index - //unsigned int kzero= k; - //unsigned int ke = k; - unsigned int kw = neighborX[k]; - //unsigned int kn = k; - unsigned int ks = neighborY[k]; - //unsigned int kt = k; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - //unsigned int kne = k; - //unsigned int kse = ks; - //unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - //unsigned int kte = k; - //unsigned int kbe = kb; - //unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - //unsigned int ktn = k; - //unsigned int kbn = kb; - //unsigned int kts = ks; - //unsigned int ktse = ks; - //unsigned int kbnw = kbw; - //unsigned int ktnw = kw; - //unsigned int kbse = kbs; - //unsigned int ktsw = ksw; - //unsigned int kbne = kb; - //unsigned int ktne = k; - unsigned int kbsw = neighborZ[ksw]; - - //unsigned int kzero= k; - //unsigned int ke = k; - //unsigned int kw = neighborX[k]; - //unsigned int kn = k; - //unsigned int ks = neighborY[k]; - //unsigned int kt = k; - //unsigned int kb = neighborZ[k]; - //unsigned int ksw = neighborY[kw]; - //unsigned int kne = k; - //unsigned int kse = ks; - //unsigned int knw = kw; - //unsigned int kbw = neighborZ[kw]; - //unsigned int kte = k; - //unsigned int kbe = kb; - //unsigned int ktw = kw; - //unsigned int kbs = neighborZ[ks]; - //unsigned int ktn = k; - //unsigned int kbn = kb; - //unsigned int kts = ks; - //unsigned int ktse = ks; - //unsigned int kbnw = kbw; - //unsigned int ktnw = kw; - //unsigned int kbse = kbs; - //unsigned int ktsw = ksw; - //unsigned int kbne = kb; - //unsigned int ktne = k; - //unsigned int kbsw = neighborZ[ksw]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = (G.g[dirE])[k]; - real mgabb = (G.g[dirW])[kw]; - real mgbcb = (G.g[dirN])[k]; - real mgbab = (G.g[dirS])[ks]; - real mgbbc = (G.g[dirT])[k]; - real mgbba = (G.g[dirB])[kb]; - real dxxux = c1o2 * (-mgcbb + mgabb); - real dyyuy = c1o2 * (-mgbcb + mgbab); - real dzzuz = c1o2 * (-mgbbc + mgbba); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw - //////////////////////////////////////////////////////////////////////////////////// - real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + - (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + - ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; - - real rho = one + drho; - //////////////////////////////////////////////////////////////////////////////////// - //slow - //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + - // (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + - // ((mfabb+mfcbb) + (mfbab+mfbcb) + (mfbba+mfbbc)));//fehlt mfbbb - real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) + - (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) + - (mfcbb - mfabb)) / rho; - real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) + - (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) + - (mfbcb - mfbab)) / rho; - real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) + - (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) + - (mfbbc - mfbba)) / rho; - //////////////////////////////////////////////////////////////////////////////////// - //the force be with you - real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; // - real fy = forces[1] / (pow(two, level)); //zero; - real fz = forces[2] / (pow(two, level)); //zero; - vvx += fx; - vvy += fy; - vvz += fz; - //////////////////////////////////////////////////////////////////////////////////// - //real omega = omega_in; - //////////////////////////////////////////////////////////////////////////////////// - //fast - real oMdrho = one; // comp special - //real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + - // mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + - // mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr - //real vvx =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + - // mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab + - // mfcbb-mfabb; - //real vvy =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + - // mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab + - // mfbcb-mfbab; - //real vvz =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + - // mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba + - // mfbbc-mfbba; - //////////////////////////////////////////////////////////////////////////////////// - // oMdrho assembler style -------> faaaaaastaaaa - // or much sloooowaaaa ... it depändssssss on sadaku - real m0, m1, m2; - //real oMdrho; - //{ - // oMdrho=mfccc+mfaaa; - // m0=mfaca+mfcac; - // m1=mfacc+mfcaa; - // m2=mfaac+mfcca; - // oMdrho+=m0; - // m1+=m2; - // oMdrho+=m1; - // m0=mfbac+mfbca; - // m1=mfbaa+mfbcc; - // m0+=m1; - // m1=mfabc+mfcba; - // m2=mfaba+mfcbc; - // m1+=m2; - // m0+=m1; - // m1=mfacb+mfcab; - // m2=mfaab+mfccb; - // m1+=m2; - // m0+=m1; - // oMdrho+=m0; - // m0=mfabb+mfcbb; - // m1=mfbab+mfbcb; - // m2=mfbba+mfbbc; - // m0+=m1+m2; - // m0+=mfbbb; //hat gefehlt - // oMdrho = one - (oMdrho + m0); - //} - //real vvx; - real vx2; - //{ - // vvx = mfccc-mfaaa; - // m0 = mfcac-mfaca; - // m1 = mfcaa-mfacc; - // m2 = mfcca-mfaac; - // vvx+= m0; - // m1 += m2; - // vvx+= m1; - // vx2 = mfcba-mfabc; - // m0 = mfcbc-mfaba; - // m1 = mfcab-mfacb; - // m2 = mfccb-mfaab; - // vx2+= m0; - // m1 += m2; - // vx2+= m1; - // vvx+= vx2; - // vx2 = mfcbb-mfabb; - // vvx+= vx2; - //} - //real vvy; - real vy2; - //{ - // vvy = mfccc-mfaaa; - // m0 = mfaca-mfcac; - // m1 = mfacc-mfcaa; - // m2 = mfcca-mfaac; - // vvy+= m0; - // m1 += m2; - // vvy+= m1; - // vy2 = mfbca-mfbac; - // m0 = mfbcc-mfbaa; - // m1 = mfacb-mfcab; - // m2 = mfccb-mfaab; - // vy2+= m0; - // m1 += m2; - // vy2+= m1; - // vvy+= vy2; - // vy2 = mfbcb-mfbab; - // vvy+= vy2; - //} - //real vvz; - real vz2; - //{ - // vvz = mfccc-mfaaa; - // m0 = mfcac-mfaca; - // m1 = mfacc-mfcaa; - // m2 = mfaac-mfcca; - // vvz+= m0; - // m1 += m2; - // vvz+= m1; - // vz2 = mfbac-mfbca; - // m0 = mfbcc-mfbaa; - // m1 = mfabc-mfcba; - // m2 = mfcbc-mfaba; - // vz2+= m0; - // m1 += m2; - // vz2+= m1; - // vvz+= vz2; - // vz2 = mfbbc-mfbba; - // vvz+= vz2; - //} - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - //////////////////////////////////////////////////////////////////////////////////// - real wadjust; - real qudricLimitP = 0.01f;// * 0.0001f; - real qudricLimitM = 0.01f;// * 0.0001f; - real qudricLimitD = 0.01f;// * 0.001f; - //////////////////////////////////////////////////////////////////////////////////// - //Hin - //////////////////////////////////////////////////////////////////////////////////// - // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m2 = mfaaa + mfaac; - m1 = mfaac - mfaaa; - m0 = m2 + mfaab; - mfaaa = m0; - m0 += c1o36 * oMdrho; - mfaab = m1 - m0 * vvz; - mfaac = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfaba + mfabc; - m1 = mfabc - mfaba; - m0 = m2 + mfabb; - mfaba = m0; - m0 += c1o9 * oMdrho; - mfabb = m1 - m0 * vvz; - mfabc = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfaca + mfacc; - m1 = mfacc - mfaca; - m0 = m2 + mfacb; - mfaca = m0; - m0 += c1o36 * oMdrho; - mfacb = m1 - m0 * vvz; - mfacc = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfbaa + mfbac; - m1 = mfbac - mfbaa; - m0 = m2 + mfbab; - mfbaa = m0; - m0 += c1o9 * oMdrho; - mfbab = m1 - m0 * vvz; - mfbac = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfbba + mfbbc; - m1 = mfbbc - mfbba; - m0 = m2 + mfbbb; - mfbba = m0; - m0 += c4o9 * oMdrho; - mfbbb = m1 - m0 * vvz; - mfbbc = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfbca + mfbcc; - m1 = mfbcc - mfbca; - m0 = m2 + mfbcb; - mfbca = m0; - m0 += c1o9 * oMdrho; - mfbcb = m1 - m0 * vvz; - mfbcc = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfcaa + mfcac; - m1 = mfcac - mfcaa; - m0 = m2 + mfcab; - mfcaa = m0; - m0 += c1o36 * oMdrho; - mfcab = m1 - m0 * vvz; - mfcac = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfcba + mfcbc; - m1 = mfcbc - mfcba; - m0 = m2 + mfcbb; - mfcba = m0; - m0 += c1o9 * oMdrho; - mfcbb = m1 - m0 * vvz; - mfcbc = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfcca + mfccc; - m1 = mfccc - mfcca; - m0 = m2 + mfccb; - mfcca = m0; - m0 += c1o36 * oMdrho; - mfccb = m1 - m0 * vvz; - mfccc = m2 - two* m1 * vvz + vz2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - // mit 1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m2 = mfaaa + mfaca; - m1 = mfaca - mfaaa; - m0 = m2 + mfaba; - mfaaa = m0; - m0 += c1o6 * oMdrho; - mfaba = m1 - m0 * vvy; - mfaca = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfaab + mfacb; - m1 = mfacb - mfaab; - m0 = m2 + mfabb; - mfaab = m0; - mfabb = m1 - m0 * vvy; - mfacb = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfaac + mfacc; - m1 = mfacc - mfaac; - m0 = m2 + mfabc; - mfaac = m0; - m0 += c1o18 * oMdrho; - mfabc = m1 - m0 * vvy; - mfacc = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfbaa + mfbca; - m1 = mfbca - mfbaa; - m0 = m2 + mfbba; - mfbaa = m0; - m0 += c2o3 * oMdrho; - mfbba = m1 - m0 * vvy; - mfbca = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfbab + mfbcb; - m1 = mfbcb - mfbab; - m0 = m2 + mfbbb; - mfbab = m0; - mfbbb = m1 - m0 * vvy; - mfbcb = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfbac + mfbcc; - m1 = mfbcc - mfbac; - m0 = m2 + mfbbc; - mfbac = m0; - m0 += c2o9 * oMdrho; - mfbbc = m1 - m0 * vvy; - mfbcc = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfcaa + mfcca; - m1 = mfcca - mfcaa; - m0 = m2 + mfcba; - mfcaa = m0; - m0 += c1o6 * oMdrho; - mfcba = m1 - m0 * vvy; - mfcca = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfcab + mfccb; - m1 = mfccb - mfcab; - m0 = m2 + mfcbb; - mfcab = m0; - mfcbb = m1 - m0 * vvy; - mfccb = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfcac + mfccc; - m1 = mfccc - mfcac; - m0 = m2 + mfcbc; - mfcac = m0; - m0 += c1o18 * oMdrho; - mfcbc = m1 - m0 * vvy; - mfccc = m2 - two* m1 * vvy + vy2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - // mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m2 = mfaaa + mfcaa; - m1 = mfcaa - mfaaa; - m0 = m2 + mfbaa; - mfaaa = m0; - m0 += one* oMdrho; - mfbaa = m1 - m0 * vvx; - mfcaa = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfaba + mfcba; - m1 = mfcba - mfaba; - m0 = m2 + mfbba; - mfaba = m0; - mfbba = m1 - m0 * vvx; - mfcba = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfaca + mfcca; - m1 = mfcca - mfaca; - m0 = m2 + mfbca; - mfaca = m0; - m0 += c1o3 * oMdrho; - mfbca = m1 - m0 * vvx; - mfcca = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfaab + mfcab; - m1 = mfcab - mfaab; - m0 = m2 + mfbab; - mfaab = m0; - mfbab = m1 - m0 * vvx; - mfcab = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfabb + mfcbb; - m1 = mfcbb - mfabb; - m0 = m2 + mfbbb; - mfabb = m0; - mfbbb = m1 - m0 * vvx; - mfcbb = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfacb + mfccb; - m1 = mfccb - mfacb; - m0 = m2 + mfbcb; - mfacb = m0; - mfbcb = m1 - m0 * vvx; - mfccb = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfaac + mfcac; - m1 = mfcac - mfaac; - m0 = m2 + mfbac; - mfaac = m0; - m0 += c1o3 * oMdrho; - mfbac = m1 - m0 * vvx; - mfcac = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfabc + mfcbc; - m1 = mfcbc - mfabc; - m0 = m2 + mfbbc; - mfabc = m0; - mfbbc = m1 - m0 * vvx; - mfcbc = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - m2 = mfacc + mfccc; - m1 = mfccc - mfacc; - m0 = m2 + mfbcc; - mfacc = m0; - m0 += c1o9 * oMdrho; - mfbcc = m1 - m0 * vvx; - mfccc = m2 - two* m1 * vvx + vx2 * m0; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - // Cumulants - //////////////////////////////////////////////////////////////////////////////////// - real OxxPyyPzz = one; //set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2) - - //////////////////////////////////////////////////////////// - //3. - ////////////////////////////// - real OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one; - real OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one; - real Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one; - //////////////////////////////////////////////////////////// - //4. - ////////////////////////////// - real O4 = one; - ////////////////////////////// - //real O4 = omega;//TRT - //////////////////////////////////////////////////////////// - //5. - ////////////////////////////// - real O5 = one; - //////////////////////////////////////////////////////////// - //6. - ////////////////////////////// - real O6 = one; - //////////////////////////////////////////////////////////// - - - //central moments to cumulants - //4. - real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; - real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; - real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; - - real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); - real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); - real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); - - //5. - real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; - real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; - real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; - - //6. - - real CUMccc = mfccc + ((-four * mfbbb * mfbbb - - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) - - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) - - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho - + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) - + two * (mfcaa * mfaca * mfaac) - + sixteen * mfbba * mfbab * mfabb) / (rho * rho) - - c1o3 * (mfacc + mfcac + mfcca) / rho - - c1o9 * (mfcaa + mfaca + mfaac) / rho - + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) - + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 - + c1o27*((drho * drho - drho) / (rho*rho))); - - //2. - // linear combinations - real mxxPyyPzz = mfcaa + mfaca + mfaac; - real mxxMyy = mfcaa - mfaca; - real mxxMzz = mfcaa - mfaac; - - //////////////////////////////////////////////////////////////////////////// - real Dxy = -three*omega*mfbba; - real Dxz = -three*omega*mfbab; - real Dyz = -three*omega*mfabb; - - //3. - // linear combinations - - real mxxyPyzz = mfcba + mfabc; - real mxxyMyzz = mfcba - mfabc; - - real mxxzPyyz = mfcab + mfacb; - real mxxzMyyz = mfcab - mfacb; - - real mxyyPxzz = mfbca + mfbac; - real mxyyMxzz = mfbca - mfbac; - - /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //incl. correction (hat noch nicht so gut funktioniert...Optimierungsbedarf??) - - real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz); - real dyuy = dxux + omega * c3o2 * mxxMyy; - real dzuz = dxux + omega * c3o2 * mxxMzz; - - mgabb = dxux; - mgbab = dyuy; - mgbba = dzuz; - - mgcbb = dxux; - mgbcb = dyuy; - mgbbc = dzuz; - - //relax - //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz; - //mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy); - //mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz); - mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz) - + (six - three * (omega + OxxPyyPzz) + omega * OxxPyyPzz) / (three * omega) * ((dxux * dxux + dyuy * dyuy + dzuz * dzuz) / rho + vvx * dxxux + vvy * dyyuy + vvz * dzzuz); - mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy) - + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * ((dxux * dxux - dyuy * dyuy) / rho + vvx * dxxux - vvy * dyyuy); - mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz) - + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * ((dxux * dxux - dzuz * dzuz) / rho + vvx * dxxux - vvz * dzzuz); - - /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////no correction - //mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz; - //mxxMyy += -(-omega) * (-mxxMyy); - //mxxMzz += -(-omega) * (-mxxMzz); - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - mfabb += omega * (-mfabb); - mfbab += omega * (-mfbab); - mfbba += omega * (-mfbba); - ////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz); - mfaca = c1o3 * (-two* mxxMyy + mxxMzz + mxxPyyPzz); - mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz); - - - //relax - ////////////////////////////////////////////////////////////////////////// - //das ist der limiter - wadjust = Oxyz + (one - Oxyz)*abs(mfbbb) / (abs(mfbbb) + qudricLimitD); - mfbbb += wadjust * (-mfbbb); - wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP); - mxxyPyzz += wadjust * (-mxxyPyzz); - wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM); - mxxyMyzz += wadjust * (-mxxyMyzz); - wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP); - mxxzPyyz += wadjust * (-mxxzPyyz); - wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM); - mxxzMyyz += wadjust * (-mxxzMyyz); - wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP); - mxyyPxzz += wadjust * (-mxyyPxzz); - wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxyyMxzz) / (abs(mxyyMxzz) + qudricLimitM); - mxyyMxzz += wadjust * (-mxyyMxzz); - ////////////////////////////////////////////////////////////////////////// - //ohne limiter - //mfbbb += OxyyMxzz * (-mfbbb); - //mxxyPyzz += OxyyPxzz * (-mxxyPyzz); - //mxxyMyzz += OxyyMxzz * (-mxxyMyzz); - //mxxzPyyz += OxyyPxzz * (-mxxzPyyz); - //mxxzMyyz += OxyyMxzz * (-mxxzMyyz); - //mxyyPxzz += OxyyPxzz * (-mxyyPxzz); - //mxyyMxzz += OxyyMxzz * (-mxyyMxzz); - ////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = (mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = (mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = (mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4. - ////////////////////////////////////////////////////////////////////////// - //mit limiter - // wadjust = O4+(one-O4)*abs(CUMacc)/(abs(CUMacc)+qudricLimit); - //CUMacc += wadjust * (-CUMacc); - // wadjust = O4+(one-O4)*abs(CUMcac)/(abs(CUMcac)+qudricLimit); - //CUMcac += wadjust * (-CUMcac); - // wadjust = O4+(one-O4)*abs(CUMcca)/(abs(CUMcca)+qudricLimit); - //CUMcca += wadjust * (-CUMcca); - - // wadjust = O4+(one-O4)*abs(CUMbbc)/(abs(CUMbbc)+qudricLimit); - //CUMbbc += wadjust * (-CUMbbc); - // wadjust = O4+(one-O4)*abs(CUMbcb)/(abs(CUMbcb)+qudricLimit); - //CUMbcb += wadjust * (-CUMbcb); - // wadjust = O4+(one-O4)*abs(CUMcbb)/(abs(CUMcbb)+qudricLimit); - //CUMcbb += wadjust * (-CUMcbb); - ////////////////////////////////////////////////////////////////////////// - //ohne limiter - //CUMacc += O4 * (-CUMacc); - //CUMcac += O4 * (-CUMcac); - //CUMcca += O4 * (-CUMcca); - //CUMbbc += O4 * (-CUMbbc); - //CUMbcb += O4 * (-CUMbcb); - //CUMcbb += O4 * (-CUMcbb); - CUMacc = -O4*(one / omega - c1o2)*(dyuy + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMacc); - CUMcac = -O4*(one / omega - c1o2)*(dxux + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcac); - CUMcca = -O4*(one / omega - c1o2)*(dyuy + dxux)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcca); - CUMbbc = -O4*(one / omega - c1o2)*Dxy*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbbc); - CUMbcb = -O4*(one / omega - c1o2)*Dxz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbcb); - CUMcbb = -O4*(one / omega - c1o2)*Dyz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMcbb); - ////////////////////////////////////////////////////////////////////////// - - - //5. - CUMbcc += O5 * (-CUMbcc); - CUMcbc += O5 * (-CUMcbc); - CUMccb += O5 * (-CUMccb); - - //6. - CUMccc += O6 * (-CUMccc); - - - - //back cumulants to central moments - //4. - mfcbb = CUMcbb + ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; - mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; - mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; - - mfcca = CUMcca + (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); - mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); - mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); - - //5. - mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; - mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; - mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; - - //6. - - mfccc = CUMccc - ((-four * mfbbb * mfbbb - - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) - - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) - - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho - + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) - + two * (mfcaa * mfaca * mfaac) - + sixteen * mfbba * mfbab * mfabb) / (rho * rho) - - c1o3 * (mfacc + mfcac + mfcca) / rho - - c1o9 * (mfcaa + mfaca + mfaac) / rho - + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) - + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 - + c1o27*((drho * drho - drho) / (rho*rho))); - //////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - //the force be with you - mfbaa = -mfbaa; - mfaba = -mfaba; - mfaab = -mfaab; - //////////////////////////////////////////////////////////////////////////////////// - - - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one* oMdrho) * (vz2 - vvz) * c1o2; - m1 = -mfaac - two* mfaab * vvz + mfaaa * (one - vz2) - one* oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one* oMdrho) * (vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * (vz2 - vvz) * c1o2; - m1 = -mfabc - two* mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * (vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 - vvz) * c1o2; - m1 = -mfacc - two* mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * (vz2 - vvz) * c1o2; - m1 = -mfbac - two* mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * (vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * (vz2 - vvz) * c1o2; - m1 = -mfbbc - two* mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * (vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * (vz2 - vvz) * c1o2; - m1 = -mfbcc - two* mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * (vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 - vvz) * c1o2; - m1 = -mfcac - two* mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * (vz2 - vvz) * c1o2; - m1 = -mfcbc - two* mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * (vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 - vvz) * c1o2; - m1 = -mfccc - two* mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 - vvy) * c1o2; - m1 = -mfaca - two* mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 - vvy) * c1o2; - m1 = -mfacb - two* mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 - vvy) * c1o2; - m1 = -mfacc - two* mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * (vy2 - vvy) * c1o2; - m1 = -mfbca - two* mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * (vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * (vy2 - vvy) * c1o2; - m1 = -mfbcb - two* mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * (vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * (vy2 - vvy) * c1o2; - m1 = -mfbcc - two* mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * (vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 - vvy) * c1o2; - m1 = -mfcca - two* mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 - vvy) * c1o2; - m1 = -mfccb - two* mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 - vvy) * c1o2; - m1 = -mfccc - two* mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfcaa - two* mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfcba - two* mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfcca - two* mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfcab - two* mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfcbb - two* mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfccb - two* mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfcac - two* mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfcbc - two* mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; - m1 = -mfccc - two* mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] - //////////////////////////////////////////////////////////////////////////////////// - - (G.g[dirE])[k] = mgabb; - (G.g[dirW])[kw] = mgcbb; - (G.g[dirN])[k] = mgbab; - (G.g[dirS])[ks] = mgbcb; - (G.g[dirT])[k] = mgbba; - (G.g[dirB])[kb] = mgbbc; - } - } -} -//////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - diff --git a/src/VirtualFluids_GPU/GPU/Cumulant27chim.cu b/src/VirtualFluids_GPU/GPU/Cumulant27chim.cu new file mode 100644 index 000000000..8f35e1580 --- /dev/null +++ b/src/VirtualFluids_GPU/GPU/Cumulant27chim.cu @@ -0,0 +1,2383 @@ +// _ ___ __ __________ _ __ ______________ __ +// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / +// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / +// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / +// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ +// +////////////////////////////////////////////////////////////////////////// +/* Device code */ +#include "LBM/D3Q27.h" +#include "math.h" +#include "GPU/constant.h" + + +//////////////////////////////////////////////////////////////////////////////// +////helper + +inline __device__ void forwardChimeraWithK(real &mfa, real &mfb, real &mfc, real vv, real v2, real K) { + + real m2 = mfa + mfc; + real m1 = mfc - mfa; + real m0 = m2 + mfb; + mfa = m0; + m0 += K; + mfb = m1 - m0 * vv; + mfc = m2 - two* m1 * vv + v2 * m0; +} + +inline __device__ void forwardChimera(real &mfa, real &mfb, real &mfc, real vv, real v2) { + real m1 = (mfa + mfc) + mfb; + real m2 = mfc - mfa; + mfc = (mfc + mfa) + (v2*m1 - two*vv*m2); + mfb = m2 - vv*m1; + mfa = m1; +} + + +inline __device__ void backwardChimera(real &mfa, real &mfb, real &mfc, real vv, real v2) { + real ma = (mfc + mfa*(v2 - vv))*c1o2 + mfb*(vv - c1o2); + real mb = ((mfa - mfc) - mfa*v2) - two*mfb*vv; + mfc = (mfc + mfa*(v2 + vv))*c1o2 + mfb*(vv + c1o2); + mfb = mb; + mfa = ma; +} + + +inline __device__ void backwardChimeraWithK(real &mfa, real &mfb, real &mfc, real vv, real v2, real K) { + real m0 = (mfc - mfb)* c1o2 + mfb * (vv)+(mfa + K) * (v2 - vv) * c1o2; + real m1 = (mfa - mfc) - two* mfb * vv + (mfa + K) * (-v2); + mfc = (mfc + mfb)* c1o2 + mfb * (vv)+(mfa + K) * (v2 + vv) * c1o2; + mfa = m0; + mfb = m1; + +} + + + + + + +//////////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27( + real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = bcMatD[k]; + + if (BC >= GEO_FLUID/*(BC != GEO_SOLID) && (BC != GEO_VOID)*/) + { + Distributions27 D; + if (EvenOrOdd == true) + { + D.f[dirE] = &DDStart[dirE *size_Mat]; + D.f[dirW] = &DDStart[dirW *size_Mat]; + D.f[dirN] = &DDStart[dirN *size_Mat]; + D.f[dirS] = &DDStart[dirS *size_Mat]; + D.f[dirT] = &DDStart[dirT *size_Mat]; + D.f[dirB] = &DDStart[dirB *size_Mat]; + D.f[dirNE] = &DDStart[dirNE *size_Mat]; + D.f[dirSW] = &DDStart[dirSW *size_Mat]; + D.f[dirSE] = &DDStart[dirSE *size_Mat]; + D.f[dirNW] = &DDStart[dirNW *size_Mat]; + D.f[dirTE] = &DDStart[dirTE *size_Mat]; + D.f[dirBW] = &DDStart[dirBW *size_Mat]; + D.f[dirBE] = &DDStart[dirBE *size_Mat]; + D.f[dirTW] = &DDStart[dirTW *size_Mat]; + D.f[dirTN] = &DDStart[dirTN *size_Mat]; + D.f[dirBS] = &DDStart[dirBS *size_Mat]; + D.f[dirBN] = &DDStart[dirBN *size_Mat]; + D.f[dirTS] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; + D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; + D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; + D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; + D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; + D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; + D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; + D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + } + else + { + D.f[dirW] = &DDStart[dirE *size_Mat]; + D.f[dirE] = &DDStart[dirW *size_Mat]; + D.f[dirS] = &DDStart[dirN *size_Mat]; + D.f[dirN] = &DDStart[dirS *size_Mat]; + D.f[dirB] = &DDStart[dirT *size_Mat]; + D.f[dirT] = &DDStart[dirB *size_Mat]; + D.f[dirSW] = &DDStart[dirNE *size_Mat]; + D.f[dirNE] = &DDStart[dirSW *size_Mat]; + D.f[dirNW] = &DDStart[dirSE *size_Mat]; + D.f[dirSE] = &DDStart[dirNW *size_Mat]; + D.f[dirBW] = &DDStart[dirTE *size_Mat]; + D.f[dirTE] = &DDStart[dirBW *size_Mat]; + D.f[dirTW] = &DDStart[dirBE *size_Mat]; + D.f[dirBE] = &DDStart[dirTW *size_Mat]; + D.f[dirBS] = &DDStart[dirTN *size_Mat]; + D.f[dirTN] = &DDStart[dirBS *size_Mat]; + D.f[dirTS] = &DDStart[dirBN *size_Mat]; + D.f[dirBN] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; + D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; + D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; + D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; + D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; + D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; + D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; + D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + } + + //////////////////////////////////////////////////////////////////////////////// + //index + //unsigned int kzero= k; + //unsigned int ke = k; + unsigned int kw = neighborX[k]; + //unsigned int kn = k; + unsigned int ks = neighborY[k]; + //unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + //unsigned int kne = k; + //unsigned int kse = ks; + //unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + //unsigned int kte = k; + //unsigned int kbe = kb; + //unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + //unsigned int ktn = k; + //unsigned int kbn = kb; + //unsigned int kts = ks; + //unsigned int ktse = ks; + //unsigned int kbnw = kbw; + //unsigned int ktnw = kw; + //unsigned int kbse = kbs; + //unsigned int ktsw = ksw; + //unsigned int kbne = kb; + //unsigned int ktne = k; + unsigned int kbsw = neighborZ[ksw]; + + + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke + real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; + real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn + real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; + real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt + real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; + real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne + real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; + real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse + real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw + real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte + real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; + real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe + real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw + real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn + real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; + real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn + real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts + real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero + real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne + real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw + real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse + real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw + real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne + real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; + real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse + real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + //////////////////////////////////////////////////////////////////////////////////// + real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; + + real rho = one + drho; + //////////////////////////////////////////////////////////////////////////////////// + real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) + + (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) + + (mfcbb - mfabb)) / rho; + real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) + + (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) + + (mfbcb - mfbab)) / rho; + real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) + + (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) + + (mfbbc - mfbba)) / rho; + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; // + real fy = forces[1] / (pow(two, level)); //zero; + real fz = forces[2] / (pow(two, level)); //zero; + vvx += fx*c1o2; + vvy += fy*c1o2; + vvz += fz*c1o2; + //////////////////////////////////////////////////////////////////////////////////// + //real omega = omega_in; + //////////////////////////////////////////////////////////////////////////////////// + //fast + real oMdrho = one; // comp special + real m0, m1, m2; + real vx2; + real vy2; + real vz2; + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + //////////////////////////////////////////////////////////////////////////////////// + real wadjust; + real qudricLimitP = c1o100;// * 0.0001f; + real qudricLimitM = c1o100;// * 0.0001f; + real qudricLimitD = c1o100;// * 0.001f; + //real s9 = minusomega; + //test + //s9 = 0.; + + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real EQcbb = zero; + real EQabb = zero; + real EQbcb = zero; + real EQbab = zero; + real EQbbc = zero; + real EQbba = zero; + real EQccb = zero; + real EQaab = zero; + real EQcab = zero; + real EQacb = zero; + real EQcbc = zero; + real EQaba = zero; + real EQcba = zero; + real EQabc = zero; + real EQbcc = zero; + real EQbaa = zero; + real EQbca = zero; + real EQbac = zero; + real EQbbb = zero; + real EQccc = drho * c1o27; + real EQaac = drho * c1o3; + real EQcac = drho * c1o9; + real EQacc = drho * c1o9; + real EQcca = drho * c1o9; + real EQaaa = drho; + real EQcaa = drho * c1o3; + real EQaca = drho * c1o3; + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(EQaaa, EQaab, EQaac, vvz, vz2, one); + backwardChimeraWithK(EQaca, EQacb, EQacc, vvz, vz2, c1o3); + /////////////////////////////////////////////////////////// + EQcaa = EQaca; EQcab = EQacb; EQcac = EQacc; + /////////////////////////////////////////////////////////// + backwardChimeraWithK(EQcca, EQccb, EQccc, vvz, vz2, c1o9); + + backwardChimeraWithK(EQaaa, EQaba, EQaca, vvy, vy2, c1o6); + backwardChimeraWithK(EQaab, EQabb, EQacb, vvy, vy2, c2o3); + backwardChimeraWithK(EQaac, EQabc, EQacc, vvy, vy2, c1o6); + backwardChimeraWithK(EQcaa, EQcba, EQcca, vvy, vy2, c1o18); + backwardChimeraWithK(EQcab, EQcbb, EQccb, vvy, vy2, c2o9); + backwardChimeraWithK(EQcac, EQcbc, EQccc, vvy, vy2, c1o18); + + backwardChimeraWithK(EQaaa, EQbaa, EQcaa, vvx, vx2, c1o36); + backwardChimeraWithK(EQaab, EQbab, EQcab, vvx, vx2, c1o9); + backwardChimeraWithK(EQaac, EQbac, EQcac, vvx, vx2, c1o36); + backwardChimeraWithK(EQaba, EQbba, EQcba, vvx, vx2, c1o9); + backwardChimeraWithK(EQabb, EQbbb, EQcbb, vvx, vx2, c4o9); + backwardChimeraWithK(EQabc, EQbbc, EQcbc, vvx, vx2, c1o9); + backwardChimeraWithK(EQaca, EQbca, EQcca, vvx, vx2, c1o36); + backwardChimeraWithK(EQacb, EQbcb, EQccb, vvx, vx2, c1o9); + backwardChimeraWithK(EQacc, EQbcc, EQccc, vvx, vx2, c1o36); + + //////////////////////////////////////////////////////////////////////////////////// + //Pre-condition + mfcbb -= EQcbb; + mfabb -= EQabb; + mfbcb -= EQbcb; + mfbab -= EQbab; + mfbbc -= EQbbc; + mfbba -= EQbba; + mfccb -= EQccb; + mfaab -= EQaab; + mfcab -= EQcab; + mfacb -= EQacb; + mfcbc -= EQcbc; + mfaba -= EQaba; + mfcba -= EQcba; + mfabc -= EQabc; + mfbcc -= EQbcc; + mfbaa -= EQbaa; + mfbca -= EQbca; + mfbac -= EQbac; + mfbbb -= EQbbb; + mfccc -= EQccc; + mfaac -= EQaac; + mfcac -= EQcac; + mfacc -= EQacc; + mfcca -= EQcca; + mfaaa -= EQaaa; + mfcaa -= EQcaa; + mfaca -= EQaca; + + //////////////////////////////////////////////////////////////////////////////////// + //Hin + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfaaa, mfaab, mfaac, vvz, vz2); + forwardChimera(mfaba, mfabb, mfabc, vvz, vz2); + forwardChimera(mfaca, mfacb, mfacc, vvz, vz2); + forwardChimera(mfbaa, mfbab, mfbac, vvz, vz2); + forwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2); + forwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2); + forwardChimera(mfcaa, mfcab, mfcac, vvz, vz2); + forwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2); + forwardChimera(mfcca, mfccb, mfccc, vvz, vz2); + + forwardChimera(mfaaa, mfaba, mfaca, vvy, vy2); + forwardChimera(mfaab, mfabb, mfacb, vvy, vy2); + forwardChimera(mfaac, mfabc, mfacc, vvy, vy2); + forwardChimera(mfbaa, mfbba, mfbca, vvy, vy2); + forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2); + forwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2); + forwardChimera(mfcaa, mfcba, mfcca, vvy, vy2); + forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2); + forwardChimera(mfcac, mfcbc, mfccc, vvy, vy2); + + forwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2); + forwardChimera(mfaab, mfbab, mfcab, vvx, vx2); + forwardChimera(mfaac, mfbac, mfcac, vvx, vx2); + forwardChimera(mfaba, mfbba, mfcba, vvx, vx2); + forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2); + forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2); + forwardChimera(mfaca, mfbca, mfcca, vvx, vx2); + forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2); + forwardChimera(mfacc, mfbcc, mfccc, vvx, vx2); + + ////////////////////////////////////////////////////////////////////////////////////// + ////Hin + ////////////////////////////////////////////////////////////////////////////////////// + //// mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// Z - Dir + //forwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, c4o9); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //// mit 1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// Y - Dir + //forwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfaab, mfabb, mfacb, vvy, vy2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o18); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, c2o3); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, c2o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o6); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //// mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// X - Dir + //forwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, one); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfaba, mfbba, mfcba, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o3); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfaab, mfbab, mfcab, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o3); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////// + // Cumulants + //////////////////////////////////////////////////////////////////////////////////// + real OxxPyyPzz = one; //omega; // one; //set the bulk viscosity one is high / two is very low and zero is (too) high + + //////////////////////////////////////////////////////////// + //3. + ////////////////////////////// + real OxyyPxzz = one; + real OxyyMxzz = one; + real Oxyz = one; + //////////////////////////////////////////////////////////// + //4. + ////////////////////////////// + real O4 = one; + //////////////////////////////////////////////////////////// + //5. + ////////////////////////////// + real O5 = one; + //////////////////////////////////////////////////////////// + //6. + ////////////////////////////// + real O6 = one; + //////////////////////////////////////////////////////////// + + + //central moments to cumulants + //4. + real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + + real CUMccc = mfccc + ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + + + + + //2. + // linear combinations + real mxxPyyPzz = mfcaa + mfaca + mfaac; + real mxxMyy = mfcaa - mfaca; + real mxxMzz = mfcaa - mfaac; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //incl. correction (hat noch nicht so gut funktioniert...Optimierungsbedarf??) + { + real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz); + real dyuy = dxux + omega * c3o2 * mxxMyy; + real dzuz = dxux + omega * c3o2 * mxxMzz; + + //relax + mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz; + mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy); + mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz); + + } + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////no correction + //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);//-magicBulk*OxxPyyPzz; + //mxxMyy += -(-omega) * (-mxxMyy); + //mxxMzz += -(-omega) * (-mxxMzz); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + mfabb += omega * (-mfabb); + mfbab += omega * (-mfbab); + mfbba += omega * (-mfbba); + + ////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz); + mfaca = c1o3 * (-two* mxxMyy + mxxMzz + mxxPyyPzz); + mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz); + + //3. + // linear combinations + + real mxxyPyzz = mfcba + mfabc; + real mxxyMyzz = mfcba - mfabc; + + real mxxzPyyz = mfcab + mfacb; + real mxxzMyyz = mfcab - mfacb; + + real mxyyPxzz = mfbca + mfbac; + real mxyyMxzz = mfbca - mfbac; + + //relax + ////////////////////////////////////////////////////////////////////////// + mfbbb += OxyyMxzz * (-mfbbb); + mxxyPyzz += OxyyPxzz * (-mxxyPyzz); + mxxyMyzz += OxyyMxzz * (-mxxyMyzz); + mxxzPyyz += OxyyPxzz * (-mxxzPyyz); + mxxzMyyz += OxyyMxzz * (-mxxzMyyz); + mxyyPxzz += OxyyPxzz * (-mxyyPxzz); + mxyyMxzz += OxyyMxzz * (-mxyyMxzz); + ////////////////////////////////////////////////////////////////////////// + + mfcba = (mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = (mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = (mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4. + ////////////////////////////////////////////////////////////////////////// + CUMacc += O4 * (-CUMacc); + CUMcac += O4 * (-CUMcac); + CUMcca += O4 * (-CUMcca); + + CUMbbc += O4 * (-CUMbbc); + CUMbcb += O4 * (-CUMbcb); + CUMcbb += O4 * (-CUMcbb); + ////////////////////////////////////////////////////////////////////////// + + + //5. + CUMbcc += O5 * (-CUMbcc); + CUMcbc += O5 * (-CUMcbc); + CUMccb += O5 * (-CUMccb); + + //6. + CUMccc += O6 * (-CUMccc); + + + + //back cumulants to central moments + //4. + mfcbb = CUMcbb + ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + mfcca = CUMcca + (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + mfccc = CUMccc - ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + mfbaa = -mfbaa; + mfaba = -mfaba; + mfaab = -mfaab; + //////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + backwardChimera(mfaaa, mfaab, mfaac, vvz, vz2); + backwardChimera(mfaba, mfabb, mfabc, vvz, vz2); + backwardChimera(mfaca, mfacb, mfacc, vvz, vz2); + backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2); + backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2); + backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2); + backwardChimera(mfcaa, mfcab, mfcac, vvz, vz2); + backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2); + backwardChimera(mfcca, mfccb, mfccc, vvz, vz2); + + backwardChimera(mfaaa, mfaba, mfaca, vvy, vy2); + backwardChimera(mfaab, mfabb, mfacb, vvy, vy2); + backwardChimera(mfaac, mfabc, mfacc, vvy, vy2); + backwardChimera(mfbaa, mfbba, mfbca, vvy, vy2); + backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2); + backwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2); + backwardChimera(mfcaa, mfcba, mfcca, vvy, vy2); + backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2); + backwardChimera(mfcac, mfcbc, mfccc, vvy, vy2); + + backwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2); + backwardChimera(mfaab, mfbab, mfcab, vvx, vx2); + backwardChimera(mfaac, mfbac, mfcac, vvx, vx2); + backwardChimera(mfaba, mfbba, mfcba, vvx, vx2); + backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2); + backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2); + backwardChimera(mfaca, mfbca, mfcca, vvx, vx2); + backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2); + backwardChimera(mfacc, mfbcc, mfccc, vvx, vx2); + + //////////////////////////////////////////////////////////////////////////////////// + //mfcbb += EQcbb; + //mfabb += EQabb; + //mfbcb += EQbcb; + //mfbab += EQbab; + //mfbbc += EQbbc; + //mfbba += EQbba; + //mfccb += EQccb; + //mfaab += EQaab; + //mfcab += EQcab; + //mfacb += EQacb; + //mfcbc += EQcbc; + //mfaba += EQaba; + //mfcba += EQcba; + //mfabc += EQabc; + //mfbcc += EQbcc; + //mfbaa += EQbaa; + //mfbca += EQbca; + //mfbac += EQbac; + //mfbbb += EQbbb; + //mfccc += EQccc; + //mfaac += EQaac; + //mfcac += EQcac; + //mfacc += EQacc; + //mfcca += EQcca; + //mfaaa += EQaaa; + //mfcaa += EQcaa; + //mfaca += EQaca; + //////////////////////////////////////////////////////////////////////////////////// + ////Error diffusion + real fTEMP = mfbbb + EQbbb; + real delta0 = mfbbb - (fTEMP - EQbbb); + delta0 *= c1o4; + mfbbb = fTEMP; + + + fTEMP = mfcbb + EQcbb; + real deltacbb = mfcbb - (fTEMP - EQcbb); + mfcbb = fTEMP; + //mfcbb+=EQcbb; + + fTEMP = mfabb + EQabb; + real deltaabb = mfabb - (fTEMP - EQabb); + mfabb = fTEMP; + //mfabb+=EQabb; + + fTEMP = mfbcb + EQbcb; + real deltabcb = mfbcb - (fTEMP - EQbcb); + mfbcb = fTEMP; + //mfbcb+=EQbcb; + + fTEMP = mfbab + EQbab; + real deltabab = mfbab - (fTEMP - EQbab); + mfbab = fTEMP; + //mfbab+=EQbab; + + fTEMP = mfbbc + EQbbc; + real deltabbc = mfbbc - (fTEMP - EQbbc); + mfbbc = fTEMP; + //mfbbc+=EQbbc; + + fTEMP = mfbba + EQbba; + real deltabba = mfbba - (fTEMP - EQbba); + mfbba = fTEMP; + //mfbba+=EQbba; + + EQccb += (delta0 + c1o2*(deltacbb + deltabcb)); + fTEMP = mfccb + EQccb; + real deltaccb = mfccb - (fTEMP - EQccb); + mfccb = fTEMP; + //mfccb+=EQccb+(delta0+c1o2*(deltacbb+deltabcb)); + + EQaab += (delta0 + c1o2*(deltaabb + deltabab)); + fTEMP = mfaab + EQaab; + real deltaaab = mfaab - (fTEMP - EQaab); + mfaab = fTEMP; + //mfaab+=EQaab+(delta0+c1o2*(deltaabb+deltabab)); + + EQcab += (delta0 + c1o2*(deltacbb + deltabab)); + fTEMP = mfcab + EQcab; + real deltacab = mfcab - (fTEMP - EQcab); + mfcab = fTEMP; + //mfcab+=EQcab+(delta0+c1o2*(deltacbb+deltabab)); + + EQacb += (delta0 + c1o2*(deltaabb + deltabcb)); + fTEMP = mfacb + EQacb; + real deltaacb = mfacb - (fTEMP - EQacb); + mfacb = fTEMP; + //mfacb+=EQacb+(delta0+c1o2*(deltaabb+deltabcb)); + + EQcbc += (delta0 + c1o2*(deltacbb + deltabbc)); + fTEMP = mfcbc + EQcbc; + real deltacbc = mfcbc - (fTEMP - EQcbc); + mfcbc = fTEMP; + //mfcbc+=EQcbc+(delta0+c1o2*(deltacbb+deltabbc)); + + EQaba += (delta0 + c1o2*(deltaabb + deltabba)); + fTEMP = mfaba + EQaba; + real deltaaba = mfaba - (fTEMP - EQaba); + mfaba = fTEMP; + //mfaba+=EQaba+(delta0+c1o2*(deltaabb+deltabba)); + + EQcba += (delta0 + c1o2*(deltacbb + deltabba)); + fTEMP = mfcba + EQcba; + real deltacba = mfcba - (fTEMP - EQcba); + mfcba = fTEMP; + //mfcba+=EQcba+(delta0+c1o2*(deltacbb+deltabba)); + + EQabc += (delta0 + c1o2*(deltaabb + deltabbc)); + fTEMP = mfabc + EQabc; + real deltaabc = mfabc - (fTEMP - EQabc); + mfabc = fTEMP; + //mfabc+=EQabc+(delta0+c1o2*(deltaabb+deltabbc)); + + EQbcc += (delta0 + c1o2*(deltabcb + deltabbc)); + fTEMP = mfbcc + EQbcc; + real deltabcc = mfbcc - (fTEMP - EQbcc); + mfbcc = fTEMP; + //mfbcc+=EQbcc+(delta0+c1o2*(deltabcb+deltabbc)); + + EQbaa += (delta0 + c1o2*(deltabab + deltabba)); + fTEMP = mfbaa + EQbaa; + real deltabaa = mfbaa - (fTEMP - EQbaa); + mfbaa = fTEMP; + //mfbaa+=EQbaa+(delta0+c1o2*(deltabab+deltabba)); + + EQbca += (delta0 + c1o2*(deltabcb + deltabba)); + fTEMP = mfbca + EQbca; + real deltabca = mfbca - (fTEMP - EQbca); + mfbca = fTEMP; + //mfbca+=EQbca+(delta0+c1o2*(deltabcb+deltabba)); + + EQbac += (delta0 + c1o2*(deltabab + deltabbc)); + fTEMP = mfbac + EQbac; + real deltabac = mfbac - (fTEMP - EQbac); + mfbac = fTEMP; + //mfbac+=EQbac+(delta0+c1o2*(deltabab+deltabbc)); + + mfccc += EQccc - (delta0 + c1o4*(deltacbb + deltabcb + deltabbc) - c1o2*(deltabcc + deltacbc + deltaccb)); + mfaac += EQaac - (delta0 + c1o4*(deltaabb + deltabab + deltabbc) - c1o2*(deltabac + deltaabc + deltaaab)); + mfcac += EQcac - (delta0 + c1o4*(deltacbb + deltabab + deltabbc) - c1o2*(deltabac + deltacbc + deltacab)); + mfacc += EQacc - (delta0 + c1o4*(deltaabb + deltabcb + deltabbc) - c1o2*(deltabcc + deltaabc + deltaacb)); + mfcca += EQcca - (delta0 + c1o4*(deltacbb + deltabcb + deltabba) - c1o2*(deltabca + deltacba + deltaccb)); + mfaaa += EQaaa - (delta0 + c1o4*(deltaabb + deltabab + deltabba) - c1o2*(deltabaa + deltaaba + deltaaab)); + mfcaa += EQcaa - (delta0 + c1o4*(deltacbb + deltabab + deltabba) - c1o2*(deltabaa + deltacba + deltacab)); + mfaca += EQaca - (delta0 + c1o4*(deltaabb + deltabcb + deltabba) - c1o2*(deltabca + deltaaba + deltaacb)); + + + + ////////////////////////////////////////////////////////////////////////////////////// + ////back + ////////////////////////////////////////////////////////////////////////////////////// + ////mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// Z - Dir + //backwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, one); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfaba, mfabb, mfabc, vvz, vz2); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o3); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2); + ///////////b////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2); + ///////////b////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o3); + ///////////c////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2); + ///////////c////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + ////mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// Y - Dir + //backwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaab, mfabb, mfacb, vvy, vy2, c2o3); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o6); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbaa, mfbba, mfbca, vvz, vz2); + ///////////b////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbab, mfbbb, mfbcb, vvz, vz2); + ///////////b////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbac, mfbbc, mfbcc, vvz, vz2); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o18); + ///////////c////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcab, mfcbb, mfccb, vvy, vy2, c2o9); + ///////////c////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + ////mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// X - Dir + //backwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaba, mfbba, mfcba, vvx, vx2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaab, mfbab, mfcab, vvx, vx2, c1o9); + /////////////b//////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfabb, mfbbb, mfcbb, vvx, vx2, c4o9); + /////////////b//////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfacb, mfbcb, mfccb, vvx, vx2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o36); + /////////////c//////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfabc, mfbbc, mfcbc, vvx, vx2, c1o9); + /////////////c//////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////////// + //real drhoPost = + // ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + + // (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + + // ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; + //mfbbb += drho - drhoPost; + //////////////////////////////////////////////////////////////////////////////////// + (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] + (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] + (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] + (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] + (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] + (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] + (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] + (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] + (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] + (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] + (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] + (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] + (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] + (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] + (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] + (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] + (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] + (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] + (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] + (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] + (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] + (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] + (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] + (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] + (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] + (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] + (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + //////////////////////////////////////////////////////////////////////////////////// + } + } +} +//////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27( + real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = bcMatD[k]; + + if (BC >= GEO_FLUID/*(BC != GEO_SOLID) && (BC != GEO_VOID)*/) + { + Distributions27 D; + if (EvenOrOdd == true) + { + D.f[dirE] = &DDStart[dirE *size_Mat]; + D.f[dirW] = &DDStart[dirW *size_Mat]; + D.f[dirN] = &DDStart[dirN *size_Mat]; + D.f[dirS] = &DDStart[dirS *size_Mat]; + D.f[dirT] = &DDStart[dirT *size_Mat]; + D.f[dirB] = &DDStart[dirB *size_Mat]; + D.f[dirNE] = &DDStart[dirNE *size_Mat]; + D.f[dirSW] = &DDStart[dirSW *size_Mat]; + D.f[dirSE] = &DDStart[dirSE *size_Mat]; + D.f[dirNW] = &DDStart[dirNW *size_Mat]; + D.f[dirTE] = &DDStart[dirTE *size_Mat]; + D.f[dirBW] = &DDStart[dirBW *size_Mat]; + D.f[dirBE] = &DDStart[dirBE *size_Mat]; + D.f[dirTW] = &DDStart[dirTW *size_Mat]; + D.f[dirTN] = &DDStart[dirTN *size_Mat]; + D.f[dirBS] = &DDStart[dirBS *size_Mat]; + D.f[dirBN] = &DDStart[dirBN *size_Mat]; + D.f[dirTS] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; + D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; + D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; + D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; + D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; + D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; + D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; + D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + } + else + { + D.f[dirW] = &DDStart[dirE *size_Mat]; + D.f[dirE] = &DDStart[dirW *size_Mat]; + D.f[dirS] = &DDStart[dirN *size_Mat]; + D.f[dirN] = &DDStart[dirS *size_Mat]; + D.f[dirB] = &DDStart[dirT *size_Mat]; + D.f[dirT] = &DDStart[dirB *size_Mat]; + D.f[dirSW] = &DDStart[dirNE *size_Mat]; + D.f[dirNE] = &DDStart[dirSW *size_Mat]; + D.f[dirNW] = &DDStart[dirSE *size_Mat]; + D.f[dirSE] = &DDStart[dirNW *size_Mat]; + D.f[dirBW] = &DDStart[dirTE *size_Mat]; + D.f[dirTE] = &DDStart[dirBW *size_Mat]; + D.f[dirTW] = &DDStart[dirBE *size_Mat]; + D.f[dirBE] = &DDStart[dirTW *size_Mat]; + D.f[dirBS] = &DDStart[dirTN *size_Mat]; + D.f[dirTN] = &DDStart[dirBS *size_Mat]; + D.f[dirTS] = &DDStart[dirBN *size_Mat]; + D.f[dirBN] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; + D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; + D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; + D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; + D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; + D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; + D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; + D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + } + + //////////////////////////////////////////////////////////////////////////////// + //index + //unsigned int kzero= k; + //unsigned int ke = k; + unsigned int kw = neighborX[k]; + //unsigned int kn = k; + unsigned int ks = neighborY[k]; + //unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + //unsigned int kne = k; + //unsigned int kse = ks; + //unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + //unsigned int kte = k; + //unsigned int kbe = kb; + //unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + //unsigned int ktn = k; + //unsigned int kbn = kb; + //unsigned int kts = ks; + //unsigned int ktse = ks; + //unsigned int kbnw = kbw; + //unsigned int ktnw = kw; + //unsigned int kbse = kbs; + //unsigned int ktsw = ksw; + //unsigned int kbne = kb; + //unsigned int ktne = k; + unsigned int kbsw = neighborZ[ksw]; + + + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke + real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; + real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn + real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; + real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt + real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; + real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne + real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; + real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse + real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw + real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte + real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; + real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe + real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw + real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn + real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; + real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn + real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts + real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero + real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne + real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw + real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse + real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw + real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne + real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; + real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse + real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + //////////////////////////////////////////////////////////////////////////////////// + real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; + + real rho = one + drho; + //////////////////////////////////////////////////////////////////////////////////// + real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) + + (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) + + (mfcbb - mfabb)) / rho; + real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) + + (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) + + (mfbcb - mfbab)) / rho; + real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) + + (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) + + (mfbbc - mfbba)) / rho; + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; // + real fy = forces[1] / (pow(two, level)); //zero; + real fz = forces[2] / (pow(two, level)); //zero; + vvx += fx*c1o2; + vvy += fy*c1o2; + vvz += fz*c1o2; + //////////////////////////////////////////////////////////////////////////////////// + //real omega = omega_in; + //////////////////////////////////////////////////////////////////////////////////// + //fast + real oMdrho = one; // comp special + real m0, m1, m2; + real vx2; + real vy2; + real vz2; + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + //////////////////////////////////////////////////////////////////////////////////// + real wadjust; + real qudricLimitP = c1o100;// * 0.0001f; + real qudricLimitM = c1o100;// * 0.0001f; + real qudricLimitD = c1o100;// * 0.001f; + //real s9 = minusomega; + //test + //s9 = 0.; + + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real EQcbb = zero; + real EQabb = zero; + real EQbcb = zero; + real EQbab = zero; + real EQbbc = zero; + real EQbba = zero; + real EQccb = zero; + real EQaab = zero; + real EQcab = zero; + real EQacb = zero; + real EQcbc = zero; + real EQaba = zero; + real EQcba = zero; + real EQabc = zero; + real EQbcc = zero; + real EQbaa = zero; + real EQbca = zero; + real EQbac = zero; + real EQbbb = zero; + real EQccc = drho * c1o27; + real EQaac = drho * c1o3; + real EQcac = drho * c1o9; + real EQacc = drho * c1o9; + real EQcca = drho * c1o9; + real EQaaa = drho; + real EQcaa = drho * c1o3; + real EQaca = drho * c1o3; + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(EQaaa, EQaab, EQaac, vvz, vz2, one); + backwardChimeraWithK(EQaca, EQacb, EQacc, vvz, vz2, c1o3); + /////////////////////////////////////////////////////////// + EQcaa = EQaca; EQcab = EQacb; EQcac = EQacc; + /////////////////////////////////////////////////////////// + backwardChimeraWithK(EQcca, EQccb, EQccc, vvz, vz2, c1o9); + + backwardChimeraWithK(EQaaa, EQaba, EQaca, vvy, vy2, c1o6); + backwardChimeraWithK(EQaab, EQabb, EQacb, vvy, vy2, c2o3); + backwardChimeraWithK(EQaac, EQabc, EQacc, vvy, vy2, c1o6); + backwardChimeraWithK(EQcaa, EQcba, EQcca, vvy, vy2, c1o18); + backwardChimeraWithK(EQcab, EQcbb, EQccb, vvy, vy2, c2o9); + backwardChimeraWithK(EQcac, EQcbc, EQccc, vvy, vy2, c1o18); + + backwardChimeraWithK(EQaaa, EQbaa, EQcaa, vvx, vx2, c1o36); + backwardChimeraWithK(EQaab, EQbab, EQcab, vvx, vx2, c1o9); + backwardChimeraWithK(EQaac, EQbac, EQcac, vvx, vx2, c1o36); + backwardChimeraWithK(EQaba, EQbba, EQcba, vvx, vx2, c1o9); + backwardChimeraWithK(EQabb, EQbbb, EQcbb, vvx, vx2, c4o9); + backwardChimeraWithK(EQabc, EQbbc, EQcbc, vvx, vx2, c1o9); + backwardChimeraWithK(EQaca, EQbca, EQcca, vvx, vx2, c1o36); + backwardChimeraWithK(EQacb, EQbcb, EQccb, vvx, vx2, c1o9); + backwardChimeraWithK(EQacc, EQbcc, EQccc, vvx, vx2, c1o36); + + //////////////////////////////////////////////////////////////////////////////////// + //Pre-condition + mfcbb -= EQcbb; + mfabb -= EQabb; + mfbcb -= EQbcb; + mfbab -= EQbab; + mfbbc -= EQbbc; + mfbba -= EQbba; + mfccb -= EQccb; + mfaab -= EQaab; + mfcab -= EQcab; + mfacb -= EQacb; + mfcbc -= EQcbc; + mfaba -= EQaba; + mfcba -= EQcba; + mfabc -= EQabc; + mfbcc -= EQbcc; + mfbaa -= EQbaa; + mfbca -= EQbca; + mfbac -= EQbac; + mfbbb -= EQbbb; + mfccc -= EQccc; + mfaac -= EQaac; + mfcac -= EQcac; + mfacc -= EQacc; + mfcca -= EQcca; + mfaaa -= EQaaa; + mfcaa -= EQcaa; + mfaca -= EQaca; + + //////////////////////////////////////////////////////////////////////////////////// + //Hin + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfaaa, mfaab, mfaac, vvz, vz2); + forwardChimera(mfaba, mfabb, mfabc, vvz, vz2); + forwardChimera(mfaca, mfacb, mfacc, vvz, vz2); + forwardChimera(mfbaa, mfbab, mfbac, vvz, vz2); + forwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2); + forwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2); + forwardChimera(mfcaa, mfcab, mfcac, vvz, vz2); + forwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2); + forwardChimera(mfcca, mfccb, mfccc, vvz, vz2); + + forwardChimera(mfaaa, mfaba, mfaca, vvy, vy2); + forwardChimera(mfaab, mfabb, mfacb, vvy, vy2); + forwardChimera(mfaac, mfabc, mfacc, vvy, vy2); + forwardChimera(mfbaa, mfbba, mfbca, vvy, vy2); + forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2); + forwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2); + forwardChimera(mfcaa, mfcba, mfcca, vvy, vy2); + forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2); + forwardChimera(mfcac, mfcbc, mfccc, vvy, vy2); + + forwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2); + forwardChimera(mfaab, mfbab, mfcab, vvx, vx2); + forwardChimera(mfaac, mfbac, mfcac, vvx, vx2); + forwardChimera(mfaba, mfbba, mfcba, vvx, vx2); + forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2); + forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2); + forwardChimera(mfaca, mfbca, mfcca, vvx, vx2); + forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2); + forwardChimera(mfacc, mfbcc, mfccc, vvx, vx2); + + ////////////////////////////////////////////////////////////////////////////////////// + ////Hin + ////////////////////////////////////////////////////////////////////////////////////// + //// mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// Z - Dir + //forwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, c4o9); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //// mit 1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// Y - Dir + //forwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfaab, mfabb, mfacb, vvy, vy2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o18); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, c2o3); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, c2o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o6); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //// mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// X - Dir + //forwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, one); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfaba, mfbba, mfcba, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o3); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfaab, mfbab, mfcab, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o3); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2); + ////////////////////////////////////////////////////////////////////////////////////// + //forwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////// + // Cumulants + //////////////////////////////////////////////////////////////////////////////////// + real OxxPyyPzz = one; //omega; // one; //set the bulk viscosity one is high / two is very low and zero is (too) high + + //////////////////////////////////////////////////////////// + //3. + ////////////////////////////// + real OxyyPxzz = one; + real OxyyMxzz = one; + real Oxyz = one; + //////////////////////////////////////////////////////////// + //4. + ////////////////////////////// + real O4 = one; + //////////////////////////////////////////////////////////// + //5. + ////////////////////////////// + real O5 = one; + //////////////////////////////////////////////////////////// + //6. + ////////////////////////////// + real O6 = one; + //////////////////////////////////////////////////////////// + + + //central moments to cumulants + //4. + real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + + real CUMccc = mfccc + ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + + + + + //2. + // linear combinations + real mxxPyyPzz = mfcaa + mfaca + mfaac; + real mxxMyy = mfcaa - mfaca; + real mxxMzz = mfcaa - mfaac; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //incl. correction (hat noch nicht so gut funktioniert...Optimierungsbedarf??) + { + real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz); + real dyuy = dxux + omega * c3o2 * mxxMyy; + real dzuz = dxux + omega * c3o2 * mxxMzz; + + //relax + mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz; + mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy); + mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz); + + } + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////no correction + //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);//-magicBulk*OxxPyyPzz; + //mxxMyy += -(-omega) * (-mxxMyy); + //mxxMzz += -(-omega) * (-mxxMzz); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + mfabb += omega * (-mfabb); + mfbab += omega * (-mfbab); + mfbba += omega * (-mfbba); + + ////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz); + mfaca = c1o3 * (-two* mxxMyy + mxxMzz + mxxPyyPzz); + mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz); + + //3. + // linear combinations + + real mxxyPyzz = mfcba + mfabc; + real mxxyMyzz = mfcba - mfabc; + + real mxxzPyyz = mfcab + mfacb; + real mxxzMyyz = mfcab - mfacb; + + real mxyyPxzz = mfbca + mfbac; + real mxyyMxzz = mfbca - mfbac; + + //relax + ////////////////////////////////////////////////////////////////////////// + mfbbb += OxyyMxzz * (-mfbbb); + mxxyPyzz += OxyyPxzz * (-mxxyPyzz); + mxxyMyzz += OxyyMxzz * (-mxxyMyzz); + mxxzPyyz += OxyyPxzz * (-mxxzPyyz); + mxxzMyyz += OxyyMxzz * (-mxxzMyyz); + mxyyPxzz += OxyyPxzz * (-mxyyPxzz); + mxyyMxzz += OxyyMxzz * (-mxyyMxzz); + ////////////////////////////////////////////////////////////////////////// + + mfcba = (mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = (mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = (mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4. + ////////////////////////////////////////////////////////////////////////// + CUMacc += O4 * (-CUMacc); + CUMcac += O4 * (-CUMcac); + CUMcca += O4 * (-CUMcca); + + CUMbbc += O4 * (-CUMbbc); + CUMbcb += O4 * (-CUMbcb); + CUMcbb += O4 * (-CUMcbb); + ////////////////////////////////////////////////////////////////////////// + + + //5. + CUMbcc += O5 * (-CUMbcc); + CUMcbc += O5 * (-CUMcbc); + CUMccb += O5 * (-CUMccb); + + //6. + CUMccc += O6 * (-CUMccc); + + + + //back cumulants to central moments + //4. + mfcbb = CUMcbb + ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + mfcca = CUMcca + (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + mfccc = CUMccc - ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + mfbaa = -mfbaa; + mfaba = -mfaba; + mfaab = -mfaab; + //////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + backwardChimera(mfaaa, mfaab, mfaac, vvz, vz2); + backwardChimera(mfaba, mfabb, mfabc, vvz, vz2); + backwardChimera(mfaca, mfacb, mfacc, vvz, vz2); + backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2); + backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2); + backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2); + backwardChimera(mfcaa, mfcab, mfcac, vvz, vz2); + backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2); + backwardChimera(mfcca, mfccb, mfccc, vvz, vz2); + + backwardChimera(mfaaa, mfaba, mfaca, vvy, vy2); + backwardChimera(mfaab, mfabb, mfacb, vvy, vy2); + backwardChimera(mfaac, mfabc, mfacc, vvy, vy2); + backwardChimera(mfbaa, mfbba, mfbca, vvy, vy2); + backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2); + backwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2); + backwardChimera(mfcaa, mfcba, mfcca, vvy, vy2); + backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2); + backwardChimera(mfcac, mfcbc, mfccc, vvy, vy2); + + backwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2); + backwardChimera(mfaab, mfbab, mfcab, vvx, vx2); + backwardChimera(mfaac, mfbac, mfcac, vvx, vx2); + backwardChimera(mfaba, mfbba, mfcba, vvx, vx2); + backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2); + backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2); + backwardChimera(mfaca, mfbca, mfcca, vvx, vx2); + backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2); + backwardChimera(mfacc, mfbcc, mfccc, vvx, vx2); + + //////////////////////////////////////////////////////////////////////////////////// + mfcbb+=EQcbb; + mfabb+=EQabb; + mfbcb+=EQbcb; + mfbab+=EQbab; + mfbbc+=EQbbc; + mfbba+=EQbba; + mfccb+=EQccb; + mfaab+=EQaab; + mfcab+=EQcab; + mfacb+=EQacb; + mfcbc+=EQcbc; + mfaba+=EQaba; + mfcba+=EQcba; + mfabc+=EQabc; + mfbcc+=EQbcc; + mfbaa+=EQbaa; + mfbca+=EQbca; + mfbac+=EQbac; + mfbbb+=EQbbb; + mfccc+=EQccc; + mfaac+=EQaac; + mfcac+=EQcac; + mfacc+=EQacc; + mfcca+=EQcca; + mfaaa+=EQaaa; + mfcaa+=EQcaa; + mfaca+=EQaca; + + + ////////////////////////////////////////////////////////////////////////////////////// + ////back + ////////////////////////////////////////////////////////////////////////////////////// + ////mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// Z - Dir + //backwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, one); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfaba, mfabb, mfabc, vvz, vz2); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o3); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2); + ///////////b////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2); + ///////////b////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o3); + ///////////c////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2); + ///////////c////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + ////mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// Y - Dir + //backwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaab, mfabb, mfacb, vvy, vy2, c2o3); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o6); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbaa, mfbba, mfbca, vvz, vz2); + ///////////b////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbab, mfbbb, mfbcb, vvz, vz2); + ///////////b////////////////////////////////////////////////////////////////////////// + //backwardChimera(mfbac, mfbbc, mfbcc, vvz, vz2); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o18); + ///////////c////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcab, mfcbb, mfccb, vvy, vy2, c2o9); + ///////////c////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + ////mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + ////////////////////////////////////////////////////////////////////////////////////// + //// X - Dir + //backwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaba, mfbba, mfcba, vvx, vx2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaab, mfbab, mfcab, vvx, vx2, c1o9); + /////////////b//////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfabb, mfbbb, mfcbb, vvx, vx2, c4o9); + /////////////b//////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfacb, mfbcb, mfccb, vvx, vx2, c1o9); + ////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o36); + /////////////c//////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfabc, mfbbc, mfcbc, vvx, vx2, c1o9); + /////////////c//////////////////////////////////////////////////////////////////////// + //backwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o36); + ////////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////////////////// + real drhoPost = + ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; + mfbbb += drho - drhoPost; + //////////////////////////////////////////////////////////////////////////////////// + (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] + (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] + (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] + (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] + (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] + (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] + (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] + (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] + (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] + (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] + (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] + (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] + (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] + (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] + (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] + (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] + (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] + (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] + (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] + (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] + (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] + (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] + (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] + (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] + (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] + (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] + (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + //////////////////////////////////////////////////////////////////////////////////// + } + } +} +//////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void Cumulant_One_chim_Comp_SP_27( + real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = bcMatD[k]; + + if (BC >= GEO_FLUID/*(BC != GEO_SOLID) && (BC != GEO_VOID)*/) + { + Distributions27 D; + if (EvenOrOdd == true) + { + D.f[dirE] = &DDStart[dirE *size_Mat]; + D.f[dirW] = &DDStart[dirW *size_Mat]; + D.f[dirN] = &DDStart[dirN *size_Mat]; + D.f[dirS] = &DDStart[dirS *size_Mat]; + D.f[dirT] = &DDStart[dirT *size_Mat]; + D.f[dirB] = &DDStart[dirB *size_Mat]; + D.f[dirNE] = &DDStart[dirNE *size_Mat]; + D.f[dirSW] = &DDStart[dirSW *size_Mat]; + D.f[dirSE] = &DDStart[dirSE *size_Mat]; + D.f[dirNW] = &DDStart[dirNW *size_Mat]; + D.f[dirTE] = &DDStart[dirTE *size_Mat]; + D.f[dirBW] = &DDStart[dirBW *size_Mat]; + D.f[dirBE] = &DDStart[dirBE *size_Mat]; + D.f[dirTW] = &DDStart[dirTW *size_Mat]; + D.f[dirTN] = &DDStart[dirTN *size_Mat]; + D.f[dirBS] = &DDStart[dirBS *size_Mat]; + D.f[dirBN] = &DDStart[dirBN *size_Mat]; + D.f[dirTS] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; + D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; + D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; + D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; + D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; + D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; + D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; + D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + } + else + { + D.f[dirW] = &DDStart[dirE *size_Mat]; + D.f[dirE] = &DDStart[dirW *size_Mat]; + D.f[dirS] = &DDStart[dirN *size_Mat]; + D.f[dirN] = &DDStart[dirS *size_Mat]; + D.f[dirB] = &DDStart[dirT *size_Mat]; + D.f[dirT] = &DDStart[dirB *size_Mat]; + D.f[dirSW] = &DDStart[dirNE *size_Mat]; + D.f[dirNE] = &DDStart[dirSW *size_Mat]; + D.f[dirNW] = &DDStart[dirSE *size_Mat]; + D.f[dirSE] = &DDStart[dirNW *size_Mat]; + D.f[dirBW] = &DDStart[dirTE *size_Mat]; + D.f[dirTE] = &DDStart[dirBW *size_Mat]; + D.f[dirTW] = &DDStart[dirBE *size_Mat]; + D.f[dirBE] = &DDStart[dirTW *size_Mat]; + D.f[dirBS] = &DDStart[dirTN *size_Mat]; + D.f[dirTN] = &DDStart[dirBS *size_Mat]; + D.f[dirTS] = &DDStart[dirBN *size_Mat]; + D.f[dirBN] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; + D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; + D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; + D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; + D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; + D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; + D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; + D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + } + + //////////////////////////////////////////////////////////////////////////////// + //index + //unsigned int kzero= k; + //unsigned int ke = k; + unsigned int kw = neighborX[k]; + //unsigned int kn = k; + unsigned int ks = neighborY[k]; + //unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + //unsigned int kne = k; + //unsigned int kse = ks; + //unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + //unsigned int kte = k; + //unsigned int kbe = kb; + //unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + //unsigned int ktn = k; + //unsigned int kbn = kb; + //unsigned int kts = ks; + //unsigned int ktse = ks; + //unsigned int kbnw = kbw; + //unsigned int ktnw = kw; + //unsigned int kbse = kbs; + //unsigned int ktsw = ksw; + //unsigned int kbne = kb; + //unsigned int ktne = k; + unsigned int kbsw = neighborZ[ksw]; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke + real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; + real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn + real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; + real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt + real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; + real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne + real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; + real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse + real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw + real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte + real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; + real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe + real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw + real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn + real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; + real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn + real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts + real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero + real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne + real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw + real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse + real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw + real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne + real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; + real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse + real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + //////////////////////////////////////////////////////////////////////////////////// + real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; + + real rho = one + drho; + //////////////////////////////////////////////////////////////////////////////////// + real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) + + (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) + + (mfcbb - mfabb)) / rho; + real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) + + (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) + + (mfbcb - mfbab)) / rho; + real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) + + (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) + + (mfbbc - mfbba)) / rho; + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; // + real fy = forces[1] / (pow(two, level)); //zero; + real fz = forces[2] / (pow(two, level)); //zero; + vvx += fx*c1o2; + vvy += fy*c1o2; + vvz += fz*c1o2; + //////////////////////////////////////////////////////////////////////////////////// + //real omega = omega_in; + //////////////////////////////////////////////////////////////////////////////////// + //fast + real oMdrho = one; // comp special + real m0, m1, m2; + real vx2; + real vy2; + real vz2; + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + //////////////////////////////////////////////////////////////////////////////////// + real wadjust; + real qudricLimitP = c1o100;// * 0.0001f; + real qudricLimitM = c1o100;// * 0.0001f; + real qudricLimitD = c1o100;// * 0.001f; + //real s9 = minusomega; + //test + //s9 = 0.; + //////////////////////////////////////////////////////////////////////////////////// + //Hin + //////////////////////////////////////////////////////////////////////////////////// + // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + forwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c1o36); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, c1o9); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o36); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, c1o9); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, c4o9); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, c1o9); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o36); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, c1o9); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o36); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + // mit 1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + forwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfaab, mfabb, mfacb, vvy, vy2); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o18); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, c2o3); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, c2o9); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o6); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + // mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + forwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, one); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfaba, mfbba, mfcba, vvx, vx2); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o3); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfaab, mfbab, mfcab, vvx, vx2); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o3); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2); + //////////////////////////////////////////////////////////////////////////////////// + forwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o9); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////// + // Cumulants + //////////////////////////////////////////////////////////////////////////////////// + real OxxPyyPzz = one; //omega; // one; //set the bulk viscosity one is high / two is very low and zero is (too) high + + //////////////////////////////////////////////////////////// + //3. + ////////////////////////////// + real OxyyPxzz = one; + real OxyyMxzz = one; + real Oxyz = one; + //////////////////////////////////////////////////////////// + //4. + ////////////////////////////// + real O4 = one; + //////////////////////////////////////////////////////////// + //5. + ////////////////////////////// + real O5 = one; + //////////////////////////////////////////////////////////// + //6. + ////////////////////////////// + real O6 = one; + //////////////////////////////////////////////////////////// + + + //central moments to cumulants + //4. + real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + + real CUMccc = mfccc + ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + + + + + //2. + // linear combinations + real mxxPyyPzz = mfcaa + mfaca + mfaac; + real mxxMyy = mfcaa - mfaca; + real mxxMzz = mfcaa - mfaac; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //incl. correction (hat noch nicht so gut funktioniert...Optimierungsbedarf??) + { + real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz); + real dyuy = dxux + omega * c3o2 * mxxMyy; + real dzuz = dxux + omega * c3o2 * mxxMzz; + + //relax + mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz; + mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy); + mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz); + + } + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////no correction + //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);//-magicBulk*OxxPyyPzz; + //mxxMyy += -(-omega) * (-mxxMyy); + //mxxMzz += -(-omega) * (-mxxMzz); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + mfabb += omega * (-mfabb); + mfbab += omega * (-mfbab); + mfbba += omega * (-mfbba); + + ////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz); + mfaca = c1o3 * (-two* mxxMyy + mxxMzz + mxxPyyPzz); + mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz); + + //3. + // linear combinations + + real mxxyPyzz = mfcba + mfabc; + real mxxyMyzz = mfcba - mfabc; + + real mxxzPyyz = mfcab + mfacb; + real mxxzMyyz = mfcab - mfacb; + + real mxyyPxzz = mfbca + mfbac; + real mxyyMxzz = mfbca - mfbac; + + //relax + ////////////////////////////////////////////////////////////////////////// + mfbbb += OxyyMxzz * (-mfbbb); + mxxyPyzz += OxyyPxzz * (-mxxyPyzz); + mxxyMyzz += OxyyMxzz * (-mxxyMyzz); + mxxzPyyz += OxyyPxzz * (-mxxzPyyz); + mxxzMyyz += OxyyMxzz * (-mxxzMyyz); + mxyyPxzz += OxyyPxzz * (-mxyyPxzz); + mxyyMxzz += OxyyMxzz * (-mxyyMxzz); + ////////////////////////////////////////////////////////////////////////// + + mfcba = (mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = (mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = (mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4. + ////////////////////////////////////////////////////////////////////////// + CUMacc += O4 * (-CUMacc); + CUMcac += O4 * (-CUMcac); + CUMcca += O4 * (-CUMcca); + + CUMbbc += O4 * (-CUMbbc); + CUMbcb += O4 * (-CUMbcb); + CUMcbb += O4 * (-CUMcbb); + ////////////////////////////////////////////////////////////////////////// + + + //5. + CUMbcc += O5 * (-CUMbcc); + CUMcbc += O5 * (-CUMcbc); + CUMccb += O5 * (-CUMccb); + + //6. + CUMccc += O6 * (-CUMccc); + + + + //back cumulants to central moments + //4. + mfcbb = CUMcbb + ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + mfcca = CUMcca + (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + mfccc = CUMccc - ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + mfbaa = -mfbaa; + mfaba = -mfaba; + mfaab = -mfaab; + //////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + backwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, one); + //////////////////////////////////////////////////////////////////////////////////// + backwardChimera(mfaba, mfabb, mfabc, vvz, vz2); + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o3); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2); + /////////b////////////////////////////////////////////////////////////////////////// + backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2); + /////////b////////////////////////////////////////////////////////////////////////// + backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o3); + /////////c////////////////////////////////////////////////////////////////////////// + backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2); + /////////c////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o9); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + backwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6); + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfaab, mfabb, mfacb, vvy, vy2, c2o3); + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o6); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + backwardChimera(mfbaa, mfbba, mfbca, vvz, vz2); + /////////b////////////////////////////////////////////////////////////////////////// + backwardChimera(mfbab, mfbbb, mfbcb, vvz, vz2); + /////////b////////////////////////////////////////////////////////////////////////// + backwardChimera(mfbac, mfbbc, mfbcc, vvz, vz2); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o18); + /////////c////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfcab, mfcbb, mfccb, vvy, vy2, c2o9); + /////////c////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + backwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o36); + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfaba, mfbba, mfcba, vvx, vx2, c1o9); + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o36); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfaab, mfbab, mfcab, vvx, vx2, c1o9); + ///////////b//////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfabb, mfbbb, mfcbb, vvx, vx2, c4o9); + ///////////b//////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfacb, mfbcb, mfccb, vvx, vx2, c1o9); + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o36); + ///////////c//////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfabc, mfbbc, mfcbc, vvx, vx2, c1o9); + ///////////c//////////////////////////////////////////////////////////////////////// + backwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o36); + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////////////////// + real drhoPost = + ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; + mfbbb += drho - drhoPost; + //////////////////////////////////////////////////////////////////////////////////// + (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] + (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] + (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] + (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] + (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] + (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] + (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] + (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] + (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] + (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] + (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] + (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] + (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] + (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] + (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] + (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] + (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] + (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] + (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] + (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] + (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] + (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] + (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] + (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] + (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] + (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] + (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + //////////////////////////////////////////////////////////////////////////////////// + } + } +} +//////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu b/src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu new file mode 100644 index 000000000..bc2b4f0d4 --- /dev/null +++ b/src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu @@ -0,0 +1,2112 @@ +// _ ___ __ __________ _ __ ______________ __ +// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / +// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / +// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / +// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ +// +////////////////////////////////////////////////////////////////////////// +/* Device code */ +#include "LBM/D3Q27.h" +#include "math.h" +#include "GPU/constant.h" + +///////////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3_2018( real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + real* G6, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k < size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = bcMatD[k]; + + if ((BC != GEO_SOLID) && (BC != GEO_VOID)) + { + Distributions27 D; + if (EvenOrOdd == true) + { + D.f[dirE] = &DDStart[dirE *size_Mat]; + D.f[dirW] = &DDStart[dirW *size_Mat]; + D.f[dirN] = &DDStart[dirN *size_Mat]; + D.f[dirS] = &DDStart[dirS *size_Mat]; + D.f[dirT] = &DDStart[dirT *size_Mat]; + D.f[dirB] = &DDStart[dirB *size_Mat]; + D.f[dirNE] = &DDStart[dirNE *size_Mat]; + D.f[dirSW] = &DDStart[dirSW *size_Mat]; + D.f[dirSE] = &DDStart[dirSE *size_Mat]; + D.f[dirNW] = &DDStart[dirNW *size_Mat]; + D.f[dirTE] = &DDStart[dirTE *size_Mat]; + D.f[dirBW] = &DDStart[dirBW *size_Mat]; + D.f[dirBE] = &DDStart[dirBE *size_Mat]; + D.f[dirTW] = &DDStart[dirTW *size_Mat]; + D.f[dirTN] = &DDStart[dirTN *size_Mat]; + D.f[dirBS] = &DDStart[dirBS *size_Mat]; + D.f[dirBN] = &DDStart[dirBN *size_Mat]; + D.f[dirTS] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; + D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; + D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; + D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; + D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; + D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; + D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; + D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + } + else + { + D.f[dirW] = &DDStart[dirE *size_Mat]; + D.f[dirE] = &DDStart[dirW *size_Mat]; + D.f[dirS] = &DDStart[dirN *size_Mat]; + D.f[dirN] = &DDStart[dirS *size_Mat]; + D.f[dirB] = &DDStart[dirT *size_Mat]; + D.f[dirT] = &DDStart[dirB *size_Mat]; + D.f[dirSW] = &DDStart[dirNE *size_Mat]; + D.f[dirNE] = &DDStart[dirSW *size_Mat]; + D.f[dirNW] = &DDStart[dirSE *size_Mat]; + D.f[dirSE] = &DDStart[dirNW *size_Mat]; + D.f[dirBW] = &DDStart[dirTE *size_Mat]; + D.f[dirTE] = &DDStart[dirBW *size_Mat]; + D.f[dirTW] = &DDStart[dirBE *size_Mat]; + D.f[dirBE] = &DDStart[dirTW *size_Mat]; + D.f[dirBS] = &DDStart[dirTN *size_Mat]; + D.f[dirTN] = &DDStart[dirBS *size_Mat]; + D.f[dirTS] = &DDStart[dirBN *size_Mat]; + D.f[dirBN] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; + D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; + D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; + D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; + D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; + D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; + D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; + D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + } + + Distributions6 G; + if (EvenOrOdd == true) + { + G.g[dirE] = &G6[dirE *size_Mat]; + G.g[dirW] = &G6[dirW *size_Mat]; + G.g[dirN] = &G6[dirN *size_Mat]; + G.g[dirS] = &G6[dirS *size_Mat]; + G.g[dirT] = &G6[dirT *size_Mat]; + G.g[dirB] = &G6[dirB *size_Mat]; + } + else + { + G.g[dirW] = &G6[dirE *size_Mat]; + G.g[dirE] = &G6[dirW *size_Mat]; + G.g[dirS] = &G6[dirN *size_Mat]; + G.g[dirN] = &G6[dirS *size_Mat]; + G.g[dirB] = &G6[dirT *size_Mat]; + G.g[dirT] = &G6[dirB *size_Mat]; + } + + //////////////////////////////////////////////////////////////////////////////// + //index + //unsigned int kzero= k; + //unsigned int ke = k; + unsigned int kw = neighborX[k]; + //unsigned int kn = k; + unsigned int ks = neighborY[k]; + //unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + //unsigned int kne = k; + //unsigned int kse = ks; + //unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + //unsigned int kte = k; + //unsigned int kbe = kb; + //unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + //unsigned int ktn = k; + //unsigned int kbn = kb; + //unsigned int kts = ks; + //unsigned int ktse = ks; + //unsigned int kbnw = kbw; + //unsigned int ktnw = kw; + //unsigned int kbse = kbs; + //unsigned int ktsw = ksw; + //unsigned int kbne = kb; + //unsigned int ktne = k; + unsigned int kbsw = neighborZ[ksw]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mgcbb = (G.g[dirE])[k]; + real mgabb = (G.g[dirW])[kw]; + real mgbcb = (G.g[dirN])[k]; + real mgbab = (G.g[dirS])[ks]; + real mgbbc = (G.g[dirT])[k]; + real mgbba = (G.g[dirB])[kb]; + real dxuxdxux = c1o2 * (-mgcbb + mgabb); + real dyuydyuy = c1o2 * (-mgbcb + mgbab); + real dzuzdzuz = c1o2 * (-mgbbc + mgbba); + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = (D.f[dirE])[k]; + real mfabb = (D.f[dirW])[kw]; + real mfbcb = (D.f[dirN])[k]; + real mfbab = (D.f[dirS])[ks]; + real mfbbc = (D.f[dirT])[k]; + real mfbba = (D.f[dirB])[kb]; + real mfccb = (D.f[dirNE])[k]; + real mfaab = (D.f[dirSW])[ksw]; + real mfcab = (D.f[dirSE])[ks]; + real mfacb = (D.f[dirNW])[kw]; + real mfcbc = (D.f[dirTE])[k]; + real mfaba = (D.f[dirBW])[kbw]; + real mfcba = (D.f[dirBE])[kb]; + real mfabc = (D.f[dirTW])[kw]; + real mfbcc = (D.f[dirTN])[k]; + real mfbaa = (D.f[dirBS])[kbs]; + real mfbca = (D.f[dirBN])[kb]; + real mfbac = (D.f[dirTS])[ks]; + real mfbbb = (D.f[dirZERO])[k]; + real mfccc = (D.f[dirTNE])[k]; + real mfaac = (D.f[dirTSW])[ksw]; + real mfcac = (D.f[dirTSE])[ks]; + real mfacc = (D.f[dirTNW])[kw]; + real mfcca = (D.f[dirBNE])[kb]; + real mfaaa = (D.f[dirBSW])[kbsw]; + real mfcaa = (D.f[dirBSE])[kbs]; + real mfaca = (D.f[dirBNW])[kbw]; + //////////////////////////////////////////////////////////////////////////////////// + real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; + + real rho = one + drho; + //////////////////////////////////////////////////////////////////////////////////// + real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) + + (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) + + (mfcbb - mfabb)) / rho; + real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) + + (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) + + (mfbcb - mfbab)) / rho; + real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) + + (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) + + (mfbbc - mfbba)) / rho; + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; // + real fy = forces[1] / (pow(two, level)); //zero; + real fz = forces[2] / (pow(two, level)); //zero; + vvx += fx; + vvy += fy; + vvz += fz; + //////////////////////////////////////////////////////////////////////////////////// + real oMdrho = one; // comp special + real m0, m1, m2; + real vx2; + real vy2; + real vz2; + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + //////////////////////////////////////////////////////////////////////////////////// + real wadjust; + real qudricLimitP = 0.01f;// * 0.0001f; + real qudricLimitM = 0.01f;// * 0.0001f; + real qudricLimitD = 0.01f;// * 0.001f; + //////////////////////////////////////////////////////////////////////////////////// + //Hin + //////////////////////////////////////////////////////////////////////////////////// + // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m2 = mfaaa + mfaac; + m1 = mfaac - mfaaa; + m0 = m2 + mfaab; + mfaaa = m0; + m0 += c1o36 * oMdrho; + mfaab = m1 - m0 * vvz; + mfaac = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaba + mfabc; + m1 = mfabc - mfaba; + m0 = m2 + mfabb; + mfaba = m0; + m0 += c1o9 * oMdrho; + mfabb = m1 - m0 * vvz; + mfabc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaca + mfacc; + m1 = mfacc - mfaca; + m0 = m2 + mfacb; + mfaca = m0; + m0 += c1o36 * oMdrho; + mfacb = m1 - m0 * vvz; + mfacc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbaa + mfbac; + m1 = mfbac - mfbaa; + m0 = m2 + mfbab; + mfbaa = m0; + m0 += c1o9 * oMdrho; + mfbab = m1 - m0 * vvz; + mfbac = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbba + mfbbc; + m1 = mfbbc - mfbba; + m0 = m2 + mfbbb; + mfbba = m0; + m0 += c4o9 * oMdrho; + mfbbb = m1 - m0 * vvz; + mfbbc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbca + mfbcc; + m1 = mfbcc - mfbca; + m0 = m2 + mfbcb; + mfbca = m0; + m0 += c1o9 * oMdrho; + mfbcb = m1 - m0 * vvz; + mfbcc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcaa + mfcac; + m1 = mfcac - mfcaa; + m0 = m2 + mfcab; + mfcaa = m0; + m0 += c1o36 * oMdrho; + mfcab = m1 - m0 * vvz; + mfcac = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcba + mfcbc; + m1 = mfcbc - mfcba; + m0 = m2 + mfcbb; + mfcba = m0; + m0 += c1o9 * oMdrho; + mfcbb = m1 - m0 * vvz; + mfcbc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcca + mfccc; + m1 = mfccc - mfcca; + m0 = m2 + mfccb; + mfcca = m0; + m0 += c1o36 * oMdrho; + mfccb = m1 - m0 * vvz; + mfccc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + // mit 1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m2 = mfaaa + mfaca; + m1 = mfaca - mfaaa; + m0 = m2 + mfaba; + mfaaa = m0; + m0 += c1o6 * oMdrho; + mfaba = m1 - m0 * vvy; + mfaca = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaab + mfacb; + m1 = mfacb - mfaab; + m0 = m2 + mfabb; + mfaab = m0; + mfabb = m1 - m0 * vvy; + mfacb = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaac + mfacc; + m1 = mfacc - mfaac; + m0 = m2 + mfabc; + mfaac = m0; + m0 += c1o18 * oMdrho; + mfabc = m1 - m0 * vvy; + mfacc = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbaa + mfbca; + m1 = mfbca - mfbaa; + m0 = m2 + mfbba; + mfbaa = m0; + m0 += c2o3 * oMdrho; + mfbba = m1 - m0 * vvy; + mfbca = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbab + mfbcb; + m1 = mfbcb - mfbab; + m0 = m2 + mfbbb; + mfbab = m0; + mfbbb = m1 - m0 * vvy; + mfbcb = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbac + mfbcc; + m1 = mfbcc - mfbac; + m0 = m2 + mfbbc; + mfbac = m0; + m0 += c2o9 * oMdrho; + mfbbc = m1 - m0 * vvy; + mfbcc = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcaa + mfcca; + m1 = mfcca - mfcaa; + m0 = m2 + mfcba; + mfcaa = m0; + m0 += c1o6 * oMdrho; + mfcba = m1 - m0 * vvy; + mfcca = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcab + mfccb; + m1 = mfccb - mfcab; + m0 = m2 + mfcbb; + mfcab = m0; + mfcbb = m1 - m0 * vvy; + mfccb = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcac + mfccc; + m1 = mfccc - mfcac; + m0 = m2 + mfcbc; + mfcac = m0; + m0 += c1o18 * oMdrho; + mfcbc = m1 - m0 * vvy; + mfccc = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + // mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m2 = mfaaa + mfcaa; + m1 = mfcaa - mfaaa; + m0 = m2 + mfbaa; + mfaaa = m0; + m0 += one* oMdrho; + mfbaa = m1 - m0 * vvx; + mfcaa = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaba + mfcba; + m1 = mfcba - mfaba; + m0 = m2 + mfbba; + mfaba = m0; + mfbba = m1 - m0 * vvx; + mfcba = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaca + mfcca; + m1 = mfcca - mfaca; + m0 = m2 + mfbca; + mfaca = m0; + m0 += c1o3 * oMdrho; + mfbca = m1 - m0 * vvx; + mfcca = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaab + mfcab; + m1 = mfcab - mfaab; + m0 = m2 + mfbab; + mfaab = m0; + mfbab = m1 - m0 * vvx; + mfcab = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfabb + mfcbb; + m1 = mfcbb - mfabb; + m0 = m2 + mfbbb; + mfabb = m0; + mfbbb = m1 - m0 * vvx; + mfcbb = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfacb + mfccb; + m1 = mfccb - mfacb; + m0 = m2 + mfbcb; + mfacb = m0; + mfbcb = m1 - m0 * vvx; + mfccb = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaac + mfcac; + m1 = mfcac - mfaac; + m0 = m2 + mfbac; + mfaac = m0; + m0 += c1o3 * oMdrho; + mfbac = m1 - m0 * vvx; + mfcac = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfabc + mfcbc; + m1 = mfcbc - mfabc; + m0 = m2 + mfbbc; + mfabc = m0; + mfbbc = m1 - m0 * vvx; + mfcbc = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfacc + mfccc; + m1 = mfccc - mfacc; + m0 = m2 + mfbcc; + mfacc = m0; + m0 += c1o9 * oMdrho; + mfbcc = m1 - m0 * vvx; + mfccc = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + // Cumulants + //////////////////////////////////////////////////////////////////////////////////// + real OxxPyyPzz = one; //set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2) + + //////////////////////////////////////////////////////////// + //3. + ////////////////////////////// + real OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one; + real OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one; + real Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one; + //////////////////////////////////////////////////////////// + //4. + ////////////////////////////// + real O4 = one; + ////////////////////////////// + //real O4 = omega;//TRT + //////////////////////////////////////////////////////////// + //5. + ////////////////////////////// + real O5 = one; + //////////////////////////////////////////////////////////// + //6. + ////////////////////////////// + real O6 = one; + //////////////////////////////////////////////////////////// + + + //central moments to cumulants + //4. + real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + + real CUMccc = mfccc + ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + + //2. + // linear combinations + real mxxPyyPzz = mfcaa + mfaca + mfaac; + real mxxMyy = mfcaa - mfaca; + real mxxMzz = mfcaa - mfaac; + + //////////////////////////////////////////////////////////////////////////// + real Dxy = -three*omega*mfbba; + real Dxz = -three*omega*mfbab; + real Dyz = -three*omega*mfabb; + + //3. + // linear combinations + + real mxxyPyzz = mfcba + mfabc; + real mxxyMyzz = mfcba - mfabc; + + real mxxzPyyz = mfcab + mfacb; + real mxxzMyyz = mfcab - mfacb; + + real mxyyPxzz = mfbca + mfbac; + real mxyyMxzz = mfbca - mfbac; + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //incl. correction (hat noch nicht so gut funktioniert...Optimierungsbedarf??) + + real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz); + real dyuy = dxux + omega * c3o2 * mxxMyy; + real dzuz = dxux + omega * c3o2 * mxxMzz; + + mgabb = vvx*dxux; + mgbab = vvy*dyuy; + mgbba = vvz*dzuz; + + mgcbb = vvx*dxux; + mgbcb = vvy*dyuy; + mgbbc = vvz*dzuz; + + //relax + mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz) + + (six - three * (omega + OxxPyyPzz) + omega * OxxPyyPzz) / (three * omega) * + (dxuxdxux+ dyuydyuy+ dzuzdzuz); + mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy) + + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * (dxuxdxux - dyuydyuy ); + mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz) + + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) *(dxuxdxux - dzuzdzuz); + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////no correction + //mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz; + //mxxMyy += -(-omega) * (-mxxMyy); + //mxxMzz += -(-omega) * (-mxxMzz); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + mfabb += omega * (-mfabb); + mfbab += omega * (-mfbab); + mfbba += omega * (-mfbba); + ////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz); + mfaca = c1o3 * (-two* mxxMyy + mxxMzz + mxxPyyPzz); + mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz); + + + //relax + ////////////////////////////////////////////////////////////////////////// + //das ist der limiter + wadjust = Oxyz + (one - Oxyz)*abs(mfbbb) / (abs(mfbbb) + qudricLimitD); + mfbbb += wadjust * (-mfbbb); + wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP); + mxxyPyzz += wadjust * (-mxxyPyzz); + wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM); + mxxyMyzz += wadjust * (-mxxyMyzz); + wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP); + mxxzPyyz += wadjust * (-mxxzPyyz); + wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM); + mxxzMyyz += wadjust * (-mxxzMyyz); + wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP); + mxyyPxzz += wadjust * (-mxyyPxzz); + wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxyyMxzz) / (abs(mxyyMxzz) + qudricLimitM); + mxyyMxzz += wadjust * (-mxyyMxzz); + ////////////////////////////////////////////////////////////////////////// + //ohne limiter + //mfbbb += OxyyMxzz * (-mfbbb); + //mxxyPyzz += OxyyPxzz * (-mxxyPyzz); + //mxxyMyzz += OxyyMxzz * (-mxxyMyzz); + //mxxzPyyz += OxyyPxzz * (-mxxzPyyz); + //mxxzMyyz += OxyyMxzz * (-mxxzMyyz); + //mxyyPxzz += OxyyPxzz * (-mxyyPxzz); + //mxyyMxzz += OxyyMxzz * (-mxyyMxzz); + ////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = (mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = (mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = (mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4. + ////////////////////////////////////////////////////////////////////////// + //mit limiter + // wadjust = O4+(one-O4)*abs(CUMacc)/(abs(CUMacc)+qudricLimit); + //CUMacc += wadjust * (-CUMacc); + // wadjust = O4+(one-O4)*abs(CUMcac)/(abs(CUMcac)+qudricLimit); + //CUMcac += wadjust * (-CUMcac); + // wadjust = O4+(one-O4)*abs(CUMcca)/(abs(CUMcca)+qudricLimit); + //CUMcca += wadjust * (-CUMcca); + + // wadjust = O4+(one-O4)*abs(CUMbbc)/(abs(CUMbbc)+qudricLimit); + //CUMbbc += wadjust * (-CUMbbc); + // wadjust = O4+(one-O4)*abs(CUMbcb)/(abs(CUMbcb)+qudricLimit); + //CUMbcb += wadjust * (-CUMbcb); + // wadjust = O4+(one-O4)*abs(CUMcbb)/(abs(CUMcbb)+qudricLimit); + //CUMcbb += wadjust * (-CUMcbb); + ////////////////////////////////////////////////////////////////////////// + //ohne limiter + //CUMacc += O4 * (-CUMacc); + //CUMcac += O4 * (-CUMcac); + //CUMcca += O4 * (-CUMcca); + //CUMbbc += O4 * (-CUMbbc); + //CUMbcb += O4 * (-CUMbcb); + //CUMcbb += O4 * (-CUMcbb); + CUMacc = -O4*(one / omega - c1o2)*(dyuy + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMacc); + CUMcac = -O4*(one / omega - c1o2)*(dxux + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcac); + CUMcca = -O4*(one / omega - c1o2)*(dyuy + dxux)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcca); + CUMbbc = -O4*(one / omega - c1o2)*Dxy*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbbc); + CUMbcb = -O4*(one / omega - c1o2)*Dxz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbcb); + CUMcbb = -O4*(one / omega - c1o2)*Dyz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMcbb); + ////////////////////////////////////////////////////////////////////////// + + + //5. + CUMbcc += O5 * (-CUMbcc); + CUMcbc += O5 * (-CUMcbc); + CUMccb += O5 * (-CUMccb); + + //6. + CUMccc += O6 * (-CUMccc); + + + + //back cumulants to central moments + //4. + mfcbb = CUMcbb + ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + mfcca = CUMcca + (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + + mfccc = CUMccc - ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + mfbaa = -mfbaa; + mfaba = -mfaba; + mfaab = -mfaab; + //////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one* oMdrho) * (vz2 - vvz) * c1o2; + m1 = -mfaac - two* mfaab * vvz + mfaaa * (one - vz2) - one* oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one* oMdrho) * (vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * (vz2 - vvz) * c1o2; + m1 = -mfabc - two* mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * (vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 - vvz) * c1o2; + m1 = -mfacc - two* mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * (vz2 - vvz) * c1o2; + m1 = -mfbac - two* mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * (vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * (vz2 - vvz) * c1o2; + m1 = -mfbbc - two* mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * (vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * (vz2 - vvz) * c1o2; + m1 = -mfbcc - two* mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * (vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 - vvz) * c1o2; + m1 = -mfcac - two* mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * (vz2 - vvz) * c1o2; + m1 = -mfcbc - two* mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * (vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 - vvz) * c1o2; + m1 = -mfccc - two* mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfaca - two* mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfacb - two* mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfacc - two* mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * (vy2 - vvy) * c1o2; + m1 = -mfbca - two* mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * (vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * (vy2 - vvy) * c1o2; + m1 = -mfbcb - two* mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * (vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * (vy2 - vvy) * c1o2; + m1 = -mfbcc - two* mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * (vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfcca - two* mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfccb - two* mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfccc - two* mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcaa - two* mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcba - two* mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcca - two* mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcab - two* mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcbb - two* mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfccb - two* mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcac - two* mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcbc - two* mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfccc - two* mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (D.f[dirE])[k] = mfabb; + (D.f[dirW])[kw] = mfcbb; + (D.f[dirN])[k] = mfbab; + (D.f[dirS])[ks] = mfbcb; + (D.f[dirT])[k] = mfbba; + (D.f[dirB])[kb] = mfbbc; + (D.f[dirNE])[k] = mfaab; + (D.f[dirSW])[ksw] = mfccb; + (D.f[dirSE])[ks] = mfacb; + (D.f[dirNW])[kw] = mfcab; + (D.f[dirTE])[k] = mfaba; + (D.f[dirBW])[kbw] = mfcbc; + (D.f[dirBE])[kb] = mfabc; + (D.f[dirTW])[kw] = mfcba; + (D.f[dirTN])[k] = mfbaa; + (D.f[dirBS])[kbs] = mfbcc; + (D.f[dirBN])[kb] = mfbac; + (D.f[dirTS])[ks] = mfbca; + (D.f[dirZERO])[k] = mfbbb; + (D.f[dirTNE])[k] = mfaaa; + (D.f[dirTSE])[ks] = mfaca; + (D.f[dirBNE])[kb] = mfaac; + (D.f[dirBSE])[kbs] = mfacc; + (D.f[dirTNW])[kw] = mfcaa; + (D.f[dirTSW])[ksw] = mfcca; + (D.f[dirBNW])[kbw] = mfcac; + (D.f[dirBSW])[kbsw] = mfccc; + //////////////////////////////////////////////////////////////////////////////////// + + (G.g[dirE])[k] = mgabb; + (G.g[dirW])[kw] = mgcbb; + (G.g[dirN])[k] = mgbab; + (G.g[dirS])[ks] = mgbcb; + (G.g[dirT])[k] = mgbba; + (G.g[dirB])[kb] = mgbbc; + } + } +} +//////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/////////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3( real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + real* G6, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k < size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = bcMatD[k]; + + if ((BC != GEO_SOLID) && (BC != GEO_VOID)) + { + Distributions27 D; + if (EvenOrOdd == true) + { + D.f[dirE] = &DDStart[dirE *size_Mat]; + D.f[dirW] = &DDStart[dirW *size_Mat]; + D.f[dirN] = &DDStart[dirN *size_Mat]; + D.f[dirS] = &DDStart[dirS *size_Mat]; + D.f[dirT] = &DDStart[dirT *size_Mat]; + D.f[dirB] = &DDStart[dirB *size_Mat]; + D.f[dirNE] = &DDStart[dirNE *size_Mat]; + D.f[dirSW] = &DDStart[dirSW *size_Mat]; + D.f[dirSE] = &DDStart[dirSE *size_Mat]; + D.f[dirNW] = &DDStart[dirNW *size_Mat]; + D.f[dirTE] = &DDStart[dirTE *size_Mat]; + D.f[dirBW] = &DDStart[dirBW *size_Mat]; + D.f[dirBE] = &DDStart[dirBE *size_Mat]; + D.f[dirTW] = &DDStart[dirTW *size_Mat]; + D.f[dirTN] = &DDStart[dirTN *size_Mat]; + D.f[dirBS] = &DDStart[dirBS *size_Mat]; + D.f[dirBN] = &DDStart[dirBN *size_Mat]; + D.f[dirTS] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; + D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; + D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; + D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; + D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; + D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; + D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; + D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + } + else + { + D.f[dirW] = &DDStart[dirE *size_Mat]; + D.f[dirE] = &DDStart[dirW *size_Mat]; + D.f[dirS] = &DDStart[dirN *size_Mat]; + D.f[dirN] = &DDStart[dirS *size_Mat]; + D.f[dirB] = &DDStart[dirT *size_Mat]; + D.f[dirT] = &DDStart[dirB *size_Mat]; + D.f[dirSW] = &DDStart[dirNE *size_Mat]; + D.f[dirNE] = &DDStart[dirSW *size_Mat]; + D.f[dirNW] = &DDStart[dirSE *size_Mat]; + D.f[dirSE] = &DDStart[dirNW *size_Mat]; + D.f[dirBW] = &DDStart[dirTE *size_Mat]; + D.f[dirTE] = &DDStart[dirBW *size_Mat]; + D.f[dirTW] = &DDStart[dirBE *size_Mat]; + D.f[dirBE] = &DDStart[dirTW *size_Mat]; + D.f[dirBS] = &DDStart[dirTN *size_Mat]; + D.f[dirTN] = &DDStart[dirBS *size_Mat]; + D.f[dirTS] = &DDStart[dirBN *size_Mat]; + D.f[dirBN] = &DDStart[dirTS *size_Mat]; + D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; + D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; + D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; + D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; + D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; + D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; + D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; + D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; + D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + } + + Distributions6 G; + if (EvenOrOdd == true) + { + G.g[dirE] = &G6[dirE *size_Mat]; + G.g[dirW] = &G6[dirW *size_Mat]; + G.g[dirN] = &G6[dirN *size_Mat]; + G.g[dirS] = &G6[dirS *size_Mat]; + G.g[dirT] = &G6[dirT *size_Mat]; + G.g[dirB] = &G6[dirB *size_Mat]; + } + else + { + G.g[dirW] = &G6[dirE *size_Mat]; + G.g[dirE] = &G6[dirW *size_Mat]; + G.g[dirS] = &G6[dirN *size_Mat]; + G.g[dirN] = &G6[dirS *size_Mat]; + G.g[dirB] = &G6[dirT *size_Mat]; + G.g[dirT] = &G6[dirB *size_Mat]; + } + + //////////////////////////////////////////////////////////////////////////////// + //index + //unsigned int kzero= k; + //unsigned int ke = k; + unsigned int kw = neighborX[k]; + //unsigned int kn = k; + unsigned int ks = neighborY[k]; + //unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + //unsigned int kne = k; + //unsigned int kse = ks; + //unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + //unsigned int kte = k; + //unsigned int kbe = kb; + //unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + //unsigned int ktn = k; + //unsigned int kbn = kb; + //unsigned int kts = ks; + //unsigned int ktse = ks; + //unsigned int kbnw = kbw; + //unsigned int ktnw = kw; + //unsigned int kbse = kbs; + //unsigned int ktsw = ksw; + //unsigned int kbne = kb; + //unsigned int ktne = k; + unsigned int kbsw = neighborZ[ksw]; + + //unsigned int kzero= k; + //unsigned int ke = k; + //unsigned int kw = neighborX[k]; + //unsigned int kn = k; + //unsigned int ks = neighborY[k]; + //unsigned int kt = k; + //unsigned int kb = neighborZ[k]; + //unsigned int ksw = neighborY[kw]; + //unsigned int kne = k; + //unsigned int kse = ks; + //unsigned int knw = kw; + //unsigned int kbw = neighborZ[kw]; + //unsigned int kte = k; + //unsigned int kbe = kb; + //unsigned int ktw = kw; + //unsigned int kbs = neighborZ[ks]; + //unsigned int ktn = k; + //unsigned int kbn = kb; + //unsigned int kts = ks; + //unsigned int ktse = ks; + //unsigned int kbnw = kbw; + //unsigned int ktnw = kw; + //unsigned int kbse = kbs; + //unsigned int ktsw = ksw; + //unsigned int kbne = kb; + //unsigned int ktne = k; + //unsigned int kbsw = neighborZ[ksw]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mgcbb = (G.g[dirE])[k]; + real mgabb = (G.g[dirW])[kw]; + real mgbcb = (G.g[dirN])[k]; + real mgbab = (G.g[dirS])[ks]; + real mgbbc = (G.g[dirT])[k]; + real mgbba = (G.g[dirB])[kb]; + real dxxux = c1o2 * (-mgcbb + mgabb); + real dyyuy = c1o2 * (-mgbcb + mgbab); + real dzzuz = c1o2 * (-mgbbc + mgbba); + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke + real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; + real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn + real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; + real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt + real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; + real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne + real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; + real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse + real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw + real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte + real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; + real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe + real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw + real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn + real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; + real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn + real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts + real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero + real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne + real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw + real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse + real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw + real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne + real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; + real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse + real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + //////////////////////////////////////////////////////////////////////////////////// + real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; + + real rho = one + drho; + //////////////////////////////////////////////////////////////////////////////////// + //slow + //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + + // (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + + // ((mfabb+mfcbb) + (mfbab+mfbcb) + (mfbba+mfbbc)));//fehlt mfbbb + real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) + + (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) + + (mfcbb - mfabb)) / rho; + real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) + + (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) + + (mfbcb - mfbab)) / rho; + real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) + + (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) + + (mfbbc - mfbba)) / rho; + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; // + real fy = forces[1] / (pow(two, level)); //zero; + real fz = forces[2] / (pow(two, level)); //zero; + vvx += fx; + vvy += fy; + vvz += fz; + //////////////////////////////////////////////////////////////////////////////////// + //real omega = omega_in; + //////////////////////////////////////////////////////////////////////////////////// + //fast + real oMdrho = one; // comp special + //real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + + // mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + + // mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr + //real vvx =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + + // mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab + + // mfcbb-mfabb; + //real vvy =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + + // mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab + + // mfbcb-mfbab; + //real vvz =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + + // mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba + + // mfbbc-mfbba; + //////////////////////////////////////////////////////////////////////////////////// + // oMdrho assembler style -------> faaaaaastaaaa + // or much sloooowaaaa ... it depändssssss on sadaku + real m0, m1, m2; + //real oMdrho; + //{ + // oMdrho=mfccc+mfaaa; + // m0=mfaca+mfcac; + // m1=mfacc+mfcaa; + // m2=mfaac+mfcca; + // oMdrho+=m0; + // m1+=m2; + // oMdrho+=m1; + // m0=mfbac+mfbca; + // m1=mfbaa+mfbcc; + // m0+=m1; + // m1=mfabc+mfcba; + // m2=mfaba+mfcbc; + // m1+=m2; + // m0+=m1; + // m1=mfacb+mfcab; + // m2=mfaab+mfccb; + // m1+=m2; + // m0+=m1; + // oMdrho+=m0; + // m0=mfabb+mfcbb; + // m1=mfbab+mfbcb; + // m2=mfbba+mfbbc; + // m0+=m1+m2; + // m0+=mfbbb; //hat gefehlt + // oMdrho = one - (oMdrho + m0); + //} + //real vvx; + real vx2; + //{ + // vvx = mfccc-mfaaa; + // m0 = mfcac-mfaca; + // m1 = mfcaa-mfacc; + // m2 = mfcca-mfaac; + // vvx+= m0; + // m1 += m2; + // vvx+= m1; + // vx2 = mfcba-mfabc; + // m0 = mfcbc-mfaba; + // m1 = mfcab-mfacb; + // m2 = mfccb-mfaab; + // vx2+= m0; + // m1 += m2; + // vx2+= m1; + // vvx+= vx2; + // vx2 = mfcbb-mfabb; + // vvx+= vx2; + //} + //real vvy; + real vy2; + //{ + // vvy = mfccc-mfaaa; + // m0 = mfaca-mfcac; + // m1 = mfacc-mfcaa; + // m2 = mfcca-mfaac; + // vvy+= m0; + // m1 += m2; + // vvy+= m1; + // vy2 = mfbca-mfbac; + // m0 = mfbcc-mfbaa; + // m1 = mfacb-mfcab; + // m2 = mfccb-mfaab; + // vy2+= m0; + // m1 += m2; + // vy2+= m1; + // vvy+= vy2; + // vy2 = mfbcb-mfbab; + // vvy+= vy2; + //} + //real vvz; + real vz2; + //{ + // vvz = mfccc-mfaaa; + // m0 = mfcac-mfaca; + // m1 = mfacc-mfcaa; + // m2 = mfaac-mfcca; + // vvz+= m0; + // m1 += m2; + // vvz+= m1; + // vz2 = mfbac-mfbca; + // m0 = mfbcc-mfbaa; + // m1 = mfabc-mfcba; + // m2 = mfcbc-mfaba; + // vz2+= m0; + // m1 += m2; + // vz2+= m1; + // vvz+= vz2; + // vz2 = mfbbc-mfbba; + // vvz+= vz2; + //} + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + //////////////////////////////////////////////////////////////////////////////////// + real wadjust; + real qudricLimitP = 0.01f;// * 0.0001f; + real qudricLimitM = 0.01f;// * 0.0001f; + real qudricLimitD = 0.01f;// * 0.001f; + //////////////////////////////////////////////////////////////////////////////////// + //Hin + //////////////////////////////////////////////////////////////////////////////////// + // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m2 = mfaaa + mfaac; + m1 = mfaac - mfaaa; + m0 = m2 + mfaab; + mfaaa = m0; + m0 += c1o36 * oMdrho; + mfaab = m1 - m0 * vvz; + mfaac = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaba + mfabc; + m1 = mfabc - mfaba; + m0 = m2 + mfabb; + mfaba = m0; + m0 += c1o9 * oMdrho; + mfabb = m1 - m0 * vvz; + mfabc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaca + mfacc; + m1 = mfacc - mfaca; + m0 = m2 + mfacb; + mfaca = m0; + m0 += c1o36 * oMdrho; + mfacb = m1 - m0 * vvz; + mfacc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbaa + mfbac; + m1 = mfbac - mfbaa; + m0 = m2 + mfbab; + mfbaa = m0; + m0 += c1o9 * oMdrho; + mfbab = m1 - m0 * vvz; + mfbac = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbba + mfbbc; + m1 = mfbbc - mfbba; + m0 = m2 + mfbbb; + mfbba = m0; + m0 += c4o9 * oMdrho; + mfbbb = m1 - m0 * vvz; + mfbbc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbca + mfbcc; + m1 = mfbcc - mfbca; + m0 = m2 + mfbcb; + mfbca = m0; + m0 += c1o9 * oMdrho; + mfbcb = m1 - m0 * vvz; + mfbcc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcaa + mfcac; + m1 = mfcac - mfcaa; + m0 = m2 + mfcab; + mfcaa = m0; + m0 += c1o36 * oMdrho; + mfcab = m1 - m0 * vvz; + mfcac = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcba + mfcbc; + m1 = mfcbc - mfcba; + m0 = m2 + mfcbb; + mfcba = m0; + m0 += c1o9 * oMdrho; + mfcbb = m1 - m0 * vvz; + mfcbc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcca + mfccc; + m1 = mfccc - mfcca; + m0 = m2 + mfccb; + mfcca = m0; + m0 += c1o36 * oMdrho; + mfccb = m1 - m0 * vvz; + mfccc = m2 - two* m1 * vvz + vz2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + // mit 1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m2 = mfaaa + mfaca; + m1 = mfaca - mfaaa; + m0 = m2 + mfaba; + mfaaa = m0; + m0 += c1o6 * oMdrho; + mfaba = m1 - m0 * vvy; + mfaca = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaab + mfacb; + m1 = mfacb - mfaab; + m0 = m2 + mfabb; + mfaab = m0; + mfabb = m1 - m0 * vvy; + mfacb = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaac + mfacc; + m1 = mfacc - mfaac; + m0 = m2 + mfabc; + mfaac = m0; + m0 += c1o18 * oMdrho; + mfabc = m1 - m0 * vvy; + mfacc = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbaa + mfbca; + m1 = mfbca - mfbaa; + m0 = m2 + mfbba; + mfbaa = m0; + m0 += c2o3 * oMdrho; + mfbba = m1 - m0 * vvy; + mfbca = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbab + mfbcb; + m1 = mfbcb - mfbab; + m0 = m2 + mfbbb; + mfbab = m0; + mfbbb = m1 - m0 * vvy; + mfbcb = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfbac + mfbcc; + m1 = mfbcc - mfbac; + m0 = m2 + mfbbc; + mfbac = m0; + m0 += c2o9 * oMdrho; + mfbbc = m1 - m0 * vvy; + mfbcc = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcaa + mfcca; + m1 = mfcca - mfcaa; + m0 = m2 + mfcba; + mfcaa = m0; + m0 += c1o6 * oMdrho; + mfcba = m1 - m0 * vvy; + mfcca = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcab + mfccb; + m1 = mfccb - mfcab; + m0 = m2 + mfcbb; + mfcab = m0; + mfcbb = m1 - m0 * vvy; + mfccb = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfcac + mfccc; + m1 = mfccc - mfcac; + m0 = m2 + mfcbc; + mfcac = m0; + m0 += c1o18 * oMdrho; + mfcbc = m1 - m0 * vvy; + mfccc = m2 - two* m1 * vvy + vy2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + // mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m2 = mfaaa + mfcaa; + m1 = mfcaa - mfaaa; + m0 = m2 + mfbaa; + mfaaa = m0; + m0 += one* oMdrho; + mfbaa = m1 - m0 * vvx; + mfcaa = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaba + mfcba; + m1 = mfcba - mfaba; + m0 = m2 + mfbba; + mfaba = m0; + mfbba = m1 - m0 * vvx; + mfcba = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaca + mfcca; + m1 = mfcca - mfaca; + m0 = m2 + mfbca; + mfaca = m0; + m0 += c1o3 * oMdrho; + mfbca = m1 - m0 * vvx; + mfcca = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaab + mfcab; + m1 = mfcab - mfaab; + m0 = m2 + mfbab; + mfaab = m0; + mfbab = m1 - m0 * vvx; + mfcab = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfabb + mfcbb; + m1 = mfcbb - mfabb; + m0 = m2 + mfbbb; + mfabb = m0; + mfbbb = m1 - m0 * vvx; + mfcbb = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfacb + mfccb; + m1 = mfccb - mfacb; + m0 = m2 + mfbcb; + mfacb = m0; + mfbcb = m1 - m0 * vvx; + mfccb = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfaac + mfcac; + m1 = mfcac - mfaac; + m0 = m2 + mfbac; + mfaac = m0; + m0 += c1o3 * oMdrho; + mfbac = m1 - m0 * vvx; + mfcac = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfabc + mfcbc; + m1 = mfcbc - mfabc; + m0 = m2 + mfbbc; + mfabc = m0; + mfbbc = m1 - m0 * vvx; + mfcbc = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + m2 = mfacc + mfccc; + m1 = mfccc - mfacc; + m0 = m2 + mfbcc; + mfacc = m0; + m0 += c1o9 * oMdrho; + mfbcc = m1 - m0 * vvx; + mfccc = m2 - two* m1 * vvx + vx2 * m0; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + // Cumulants + //////////////////////////////////////////////////////////////////////////////////// + real OxxPyyPzz = one; //set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2) + + //////////////////////////////////////////////////////////// + //3. + ////////////////////////////// + real OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one; + real OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one; + real Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one; + //////////////////////////////////////////////////////////// + //4. + ////////////////////////////// + real O4 = one; + ////////////////////////////// + //real O4 = omega;//TRT + //////////////////////////////////////////////////////////// + //5. + ////////////////////////////// + real O5 = one; + //////////////////////////////////////////////////////////// + //6. + ////////////////////////////// + real O6 = one; + //////////////////////////////////////////////////////////// + + + //central moments to cumulants + //4. + real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + + real CUMccc = mfccc + ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + + //2. + // linear combinations + real mxxPyyPzz = mfcaa + mfaca + mfaac; + real mxxMyy = mfcaa - mfaca; + real mxxMzz = mfcaa - mfaac; + + //////////////////////////////////////////////////////////////////////////// + real Dxy = -three*omega*mfbba; + real Dxz = -three*omega*mfbab; + real Dyz = -three*omega*mfabb; + + //3. + // linear combinations + + real mxxyPyzz = mfcba + mfabc; + real mxxyMyzz = mfcba - mfabc; + + real mxxzPyyz = mfcab + mfacb; + real mxxzMyyz = mfcab - mfacb; + + real mxyyPxzz = mfbca + mfbac; + real mxyyMxzz = mfbca - mfbac; + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //incl. correction (hat noch nicht so gut funktioniert...Optimierungsbedarf??) + + real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz); + real dyuy = dxux + omega * c3o2 * mxxMyy; + real dzuz = dxux + omega * c3o2 * mxxMzz; + + mgabb = dxux; + mgbab = dyuy; + mgbba = dzuz; + + mgcbb = dxux; + mgbcb = dyuy; + mgbbc = dzuz; + + //relax + //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz; + //mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy); + //mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz); + mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz) + + (six - three * (omega + OxxPyyPzz) + omega * OxxPyyPzz) / (three * omega) * ((dxux * dxux + dyuy * dyuy + dzuz * dzuz) / rho + vvx * dxxux + vvy * dyyuy + vvz * dzzuz); + mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy) + + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * ((dxux * dxux - dyuy * dyuy) / rho + vvx * dxxux - vvy * dyyuy); + mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz) + + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * ((dxux * dxux - dzuz * dzuz) / rho + vvx * dxxux - vvz * dzzuz); + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////no correction + //mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz; + //mxxMyy += -(-omega) * (-mxxMyy); + //mxxMzz += -(-omega) * (-mxxMzz); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + mfabb += omega * (-mfabb); + mfbab += omega * (-mfbab); + mfbba += omega * (-mfbba); + ////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz); + mfaca = c1o3 * (-two* mxxMyy + mxxMzz + mxxPyyPzz); + mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz); + + + //relax + ////////////////////////////////////////////////////////////////////////// + //das ist der limiter + wadjust = Oxyz + (one - Oxyz)*abs(mfbbb) / (abs(mfbbb) + qudricLimitD); + mfbbb += wadjust * (-mfbbb); + wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP); + mxxyPyzz += wadjust * (-mxxyPyzz); + wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM); + mxxyMyzz += wadjust * (-mxxyMyzz); + wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP); + mxxzPyyz += wadjust * (-mxxzPyyz); + wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM); + mxxzMyyz += wadjust * (-mxxzMyyz); + wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP); + mxyyPxzz += wadjust * (-mxyyPxzz); + wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxyyMxzz) / (abs(mxyyMxzz) + qudricLimitM); + mxyyMxzz += wadjust * (-mxyyMxzz); + ////////////////////////////////////////////////////////////////////////// + //ohne limiter + //mfbbb += OxyyMxzz * (-mfbbb); + //mxxyPyzz += OxyyPxzz * (-mxxyPyzz); + //mxxyMyzz += OxyyMxzz * (-mxxyMyzz); + //mxxzPyyz += OxyyPxzz * (-mxxzPyyz); + //mxxzMyyz += OxyyMxzz * (-mxxzMyyz); + //mxyyPxzz += OxyyPxzz * (-mxyyPxzz); + //mxyyMxzz += OxyyMxzz * (-mxyyMxzz); + ////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = (mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = (mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = (mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4. + ////////////////////////////////////////////////////////////////////////// + //mit limiter + // wadjust = O4+(one-O4)*abs(CUMacc)/(abs(CUMacc)+qudricLimit); + //CUMacc += wadjust * (-CUMacc); + // wadjust = O4+(one-O4)*abs(CUMcac)/(abs(CUMcac)+qudricLimit); + //CUMcac += wadjust * (-CUMcac); + // wadjust = O4+(one-O4)*abs(CUMcca)/(abs(CUMcca)+qudricLimit); + //CUMcca += wadjust * (-CUMcca); + + // wadjust = O4+(one-O4)*abs(CUMbbc)/(abs(CUMbbc)+qudricLimit); + //CUMbbc += wadjust * (-CUMbbc); + // wadjust = O4+(one-O4)*abs(CUMbcb)/(abs(CUMbcb)+qudricLimit); + //CUMbcb += wadjust * (-CUMbcb); + // wadjust = O4+(one-O4)*abs(CUMcbb)/(abs(CUMcbb)+qudricLimit); + //CUMcbb += wadjust * (-CUMcbb); + ////////////////////////////////////////////////////////////////////////// + //ohne limiter + //CUMacc += O4 * (-CUMacc); + //CUMcac += O4 * (-CUMcac); + //CUMcca += O4 * (-CUMcca); + //CUMbbc += O4 * (-CUMbbc); + //CUMbcb += O4 * (-CUMbcb); + //CUMcbb += O4 * (-CUMcbb); + CUMacc = -O4*(one / omega - c1o2)*(dyuy + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMacc); + CUMcac = -O4*(one / omega - c1o2)*(dxux + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcac); + CUMcca = -O4*(one / omega - c1o2)*(dyuy + dxux)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcca); + CUMbbc = -O4*(one / omega - c1o2)*Dxy*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbbc); + CUMbcb = -O4*(one / omega - c1o2)*Dxz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbcb); + CUMcbb = -O4*(one / omega - c1o2)*Dyz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMcbb); + ////////////////////////////////////////////////////////////////////////// + + + //5. + CUMbcc += O5 * (-CUMbcc); + CUMcbc += O5 * (-CUMcbc); + CUMccb += O5 * (-CUMccb); + + //6. + CUMccc += O6 * (-CUMccc); + + + + //back cumulants to central moments + //4. + mfcbb = CUMcbb + ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho; + mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; + mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; + + mfcca = CUMcca + (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho)); + mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho)); + mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); + + //5. + mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho; + mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho; + mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho; + + //6. + + mfccc = CUMccc - ((-four * mfbbb * mfbbb + - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) + - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) + - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho + + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) + + two * (mfcaa * mfaca * mfaac) + + sixteen * mfbba * mfbab * mfabb) / (rho * rho) + - c1o3 * (mfacc + mfcac + mfcca) / rho + - c1o9 * (mfcaa + mfaca + mfaac) / rho + + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) + + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3 + + c1o27*((drho * drho - drho) / (rho*rho))); + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + //the force be with you + mfbaa = -mfbaa; + mfaba = -mfaba; + mfaab = -mfaab; + //////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one* oMdrho) * (vz2 - vvz) * c1o2; + m1 = -mfaac - two* mfaab * vvz + mfaaa * (one - vz2) - one* oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one* oMdrho) * (vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * (vz2 - vvz) * c1o2; + m1 = -mfabc - two* mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * (vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 - vvz) * c1o2; + m1 = -mfacc - two* mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * (vz2 - vvz) * c1o2; + m1 = -mfbac - two* mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * (vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * (vz2 - vvz) * c1o2; + m1 = -mfbbc - two* mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * (vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * (vz2 - vvz) * c1o2; + m1 = -mfbcc - two* mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * (vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 - vvz) * c1o2; + m1 = -mfcac - two* mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * (vz2 - vvz) * c1o2; + m1 = -mfcbc - two* mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * (vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 - vvz) * c1o2; + m1 = -mfccc - two* mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfaca - two* mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfacb - two* mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfacc - two* mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * (vy2 - vvy) * c1o2; + m1 = -mfbca - two* mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * (vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * (vy2 - vvy) * c1o2; + m1 = -mfbcb - two* mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * (vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * (vy2 - vvy) * c1o2; + m1 = -mfbcc - two* mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * (vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfcca - two* mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfccb - two* mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 - vvy) * c1o2; + m1 = -mfccc - two* mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcaa - two* mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcba - two* mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcca - two* mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcab - two* mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcbb - two* mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfccb - two* mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcac - two* mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfcbc - two* mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 - vvx) * c1o2; + m1 = -mfccc - two* mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] + (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] + (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] + (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] + (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] + (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] + (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] + (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] + (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] + (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] + (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] + (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] + (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] + (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] + (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] + (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] + (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] + (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] + (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] + (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] + (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] + (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] + (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] + (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] + (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] + (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] + (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + //////////////////////////////////////////////////////////////////////////////////// + + (G.g[dirE])[k] = mgabb; + (G.g[dirW])[kw] = mgcbb; + (G.g[dirN])[k] = mgbab; + (G.g[dirS])[ks] = mgbcb; + (G.g[dirT])[k] = mgbba; + (G.g[dirB])[kb] = mgbbc; + } + } +} +//////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/VirtualFluids_GPU/GPU/GPU_Interface.h b/src/VirtualFluids_GPU/GPU/GPU_Interface.h index 4e6fd7fd1..143e67ca5 100644 --- a/src/VirtualFluids_GPU/GPU/GPU_Interface.h +++ b/src/VirtualFluids_GPU/GPU/GPU_Interface.h @@ -138,6 +138,19 @@ extern "C" void KernelCumulantD3Q27All4(unsigned int numberOfThreads, real* forces, bool EvenOrOdd); +extern "C" void KernelCumulantD3Q27F3_2018( unsigned int numberOfThreads, + real s9, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + real* F3, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd); + extern "C" void KernelCumulantD3Q27F3(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, @@ -259,6 +272,49 @@ extern "C" void KernelKumNewCompSP27( unsigned int numberOfThreads, real* forces, bool EvenOrOdd); +extern "C" void CumulantOnePreconditionedErrorDiffusionChimCompSP27( + unsigned int numberOfThreads, + real s9, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + int size_Mat, + int size_Array, + int level, + real* forces, + bool EvenOrOdd); + +extern "C" void CumulantOnePreconditionedChimCompSP27( + unsigned int numberOfThreads, + real s9, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + int size_Mat, + int size_Array, + int level, + real* forces, + bool EvenOrOdd); + +extern "C" void CumulantOneChimCompSP27( + unsigned int numberOfThreads, + real s9, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + int size_Mat, + int size_Array, + int level, + real* forces, + bool EvenOrOdd); + + extern "C" void KernelKumIsoTestSP27(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, @@ -1918,6 +1974,31 @@ extern "C" void ScaleCF_0817_comp_27( real* DC, unsigned int numberOfThreads, OffCF offCF); +extern "C" void ScaleCF_comp_D3Q27F3_2018( real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posCSWB, + unsigned int* posFSWB, + unsigned int kCF, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + unsigned int numberOfThreads, + OffCF offCF); + extern "C" void ScaleCF_comp_D3Q27F3(real* DC, real* DF, real* G6, @@ -2135,6 +2216,31 @@ extern "C" void ScaleFC_0817_comp_27( real* DC, unsigned int numberOfThreads, OffFC offFC); +extern "C" void ScaleFC_comp_D3Q27F3_2018(real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posC, + unsigned int* posFSWB, + unsigned int kFC, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + unsigned int numberOfThreads, + OffFC offFC); + extern "C" void ScaleFC_comp_D3Q27F3( real* DC, real* DF, real* G6, diff --git a/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh b/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh index f41c0b4a9..6ffcadf4a 100644 --- a/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh +++ b/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh @@ -122,6 +122,18 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(real omega, real* forces, bool EvenOrOdd); +extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3_2018( real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + real* F3, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd); + extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3( real omega, unsigned int* bcMatD, unsigned int* neighborX, @@ -253,6 +265,53 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(real s9, int size_Mat, bool EvenOrOdd); + +extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27( + real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd); + +extern "C" __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27( + real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd); + +extern "C" __global__ void Cumulant_One_chim_Comp_SP_27( + real omega, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd); + +inline __device__ void forwardChimeraWithK(real &mfa, real &mfb, real &mfc, real vv, real v2, real K); + +inline __device__ void forwardChimera(real &mfa, real &mfb, real &mfc, real vv, real v2); + +inline __device__ void backwardChimera(real &mfa, real &mfb, real &mfc, real vv, real v2); + +inline __device__ void backwardChimeraWithK(real &mfa, real &mfb, real &mfc, real vv, real v2, real K); + + + extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(real omega, unsigned int* bcMatD, unsigned int* neighborX, @@ -1713,6 +1772,30 @@ extern "C" __global__ void scaleCF_0817_comp_27( real* DC, unsigned int nyF, OffCF offCF); +extern "C" __global__ void scaleCF_comp_D3Q27F3_2018( real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posCSWB, + unsigned int* posFSWB, + unsigned int kCF, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + OffCF offCF); + extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, real* DF, real* G6, @@ -2073,6 +2156,30 @@ extern "C" __global__ void scaleFC_0817_comp_27( real* DC, unsigned int nyF, OffFC offFC); +extern "C" __global__ void scaleFC_comp_D3Q27F3_2018( real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posC, + unsigned int* posFSWB, + unsigned int kFC, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + OffFC offFC); + extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC, real* DF, real* G6, diff --git a/src/VirtualFluids_GPU/GPU/LBMKernel.cu b/src/VirtualFluids_GPU/GPU/LBMKernel.cu index 27fe37027..bf44e0995 100644 --- a/src/VirtualFluids_GPU/GPU/LBMKernel.cu +++ b/src/VirtualFluids_GPU/GPU/LBMKernel.cu @@ -438,6 +438,48 @@ extern "C" void KernelCumulantD3Q27All4(unsigned int numberOfThreads, getLastCudaError("LB_Kernel_Cumulant_D3Q27All4 execution failed"); } ////////////////////////////////////////////////////////////////////////// +extern "C" void KernelCumulantD3Q27F3_2018( unsigned int numberOfThreads, + real s9, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + real* F3, + int size_Mat, + int level, + real* forces, + bool EvenOrOdd) +{ + int Grid = (size_Mat / numberOfThreads)+1; + int Grid1, Grid2; + if (Grid>512) + { + Grid1 = 512; + Grid2 = (Grid/Grid1)+1; + } + else + { + Grid1 = 1; + Grid2 = Grid; + } + dim3 grid(Grid1, Grid2); + dim3 threads(numberOfThreads, 1, 1 ); + + LB_Kernel_Cumulant_D3Q27F3_2018 <<< grid, threads >>>( s9, + bcMatD, + neighborX, + neighborY, + neighborZ, + DD, + F3, + size_Mat, + level, + forces, + EvenOrOdd); + getLastCudaError("LB_Kernel_Cumulant_D3Q27F3_2018 execution failed"); +} +////////////////////////////////////////////////////////////////////////// extern "C" void KernelCumulantD3Q27F3(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, @@ -831,6 +873,141 @@ extern "C" void KernelKumNewCompSP27(unsigned int numberOfThreads, getLastCudaError("LB_Kernel_Kum_New_Comp_SP_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// +extern "C" void CumulantOnePreconditionedErrorDiffusionChimCompSP27(unsigned int numberOfThreads, + real s9, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + int size_Mat, + int size_Array, + int level, + real* forces, + bool EvenOrOdd) +{ + //int Grid = size_Array / numberOfThreads; + //dim3 grid(Grid, 1, 1); + //dim3 threads(numberOfThreads, 1, 1 ); + + int Grid = (size_Mat / numberOfThreads) + 1; + int Grid1, Grid2; + if (Grid > 512) + { + Grid1 = 512; + Grid2 = (Grid / Grid1) + 1; + } + else + { + Grid1 = 1; + Grid2 = Grid; + } + dim3 grid(Grid1, Grid2, 1); + dim3 threads(numberOfThreads, 1, 1); + + Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27 <<< grid, threads >>>( s9, + bcMatD, + neighborX, + neighborY, + neighborZ, + DD, + size_Mat, + level, + forces, + EvenOrOdd); + getLastCudaError("Cumulant_One_preconditioned_chim_Comp_SP_27 execution failed"); +} +////////////////////////////////////////////////////////////////////////// +extern "C" void CumulantOnePreconditionedChimCompSP27( unsigned int numberOfThreads, + real s9, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + int size_Mat, + int size_Array, + int level, + real* forces, + bool EvenOrOdd) +{ + //int Grid = size_Array / numberOfThreads; + //dim3 grid(Grid, 1, 1); + //dim3 threads(numberOfThreads, 1, 1 ); + + int Grid = (size_Mat / numberOfThreads) + 1; + int Grid1, Grid2; + if (Grid > 512) + { + Grid1 = 512; + Grid2 = (Grid / Grid1) + 1; + } + else + { + Grid1 = 1; + Grid2 = Grid; + } + dim3 grid(Grid1, Grid2, 1); + dim3 threads(numberOfThreads, 1, 1); + + Cumulant_One_preconditioned_chim_Comp_SP_27 <<< grid, threads >>>( s9, + bcMatD, + neighborX, + neighborY, + neighborZ, + DD, + size_Mat, + level, + forces, + EvenOrOdd); + getLastCudaError("Cumulant_One_preconditioned_chim_Comp_SP_27 execution failed"); +} +////////////////////////////////////////////////////////////////////////// +extern "C" void CumulantOneChimCompSP27(unsigned int numberOfThreads, + real s9, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + int size_Mat, + int size_Array, + int level, + real* forces, + bool EvenOrOdd) +{ + //int Grid = size_Array / numberOfThreads; + //dim3 grid(Grid, 1, 1); + //dim3 threads(numberOfThreads, 1, 1 ); + + int Grid = (size_Mat / numberOfThreads) + 1; + int Grid1, Grid2; + if (Grid > 512) + { + Grid1 = 512; + Grid2 = (Grid / Grid1) + 1; + } + else + { + Grid1 = 1; + Grid2 = Grid; + } + dim3 grid(Grid1, Grid2, 1); + dim3 threads(numberOfThreads, 1, 1); + + Cumulant_One_chim_Comp_SP_27 <<< grid, threads >>>( s9, + bcMatD, + neighborX, + neighborY, + neighborZ, + DD, + size_Mat, + level, + forces, + EvenOrOdd); + getLastCudaError("Cumulant_One_chim_Comp_SP_27 execution failed"); +} +////////////////////////////////////////////////////////////////////////// extern "C" void KernelKumIsoTestSP27(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, @@ -5514,6 +5691,72 @@ extern "C" void ScaleCF_0817_comp_27(real* DC, getLastCudaError("scaleCF_0817_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// +extern "C" void ScaleCF_comp_D3Q27F3_2018(real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posCSWB, + unsigned int* posFSWB, + unsigned int kCF, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + unsigned int numberOfThreads, + OffCF offCF) +{ + int Grid = (kCF / numberOfThreads)+1; + int Grid1, Grid2; + if (Grid>512) + { + Grid1 = 512; + Grid2 = (Grid/Grid1)+1; + } + else + { + Grid1 = 1; + Grid2 = Grid; + } + dim3 gridINT_CF(Grid1, Grid2); + dim3 threads(numberOfThreads, 1, 1 ); + + scaleCF_comp_D3Q27F3_2018 <<< gridINT_CF, threads >>>(DC, + DF, + G6, + neighborCX, + neighborCY, + neighborCZ, + neighborFX, + neighborFY, + neighborFZ, + size_MatC, + size_MatF, + evenOrOdd, + posCSWB, + posFSWB, + kCF, + omCoarse, + omFine, + nu, + nxC, + nyC, + nxF, + nyF, + offCF); + getLastCudaError("scaleCF_comp_D3Q27F3_2018 execution failed"); +} +////////////////////////////////////////////////////////////////////////// extern "C" void ScaleCF_comp_D3Q27F3(real* DC, real* DF, real* G6, @@ -5577,7 +5820,7 @@ extern "C" void ScaleCF_comp_D3Q27F3(real* DC, nxF, nyF, offCF); - getLastCudaError("scaleCF_0817_27 execution failed"); + getLastCudaError("scaleCF_comp_D3Q27F3 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void ScaleCF_staggered_time_comp_27( real* DC, @@ -6518,6 +6761,72 @@ extern "C" void ScaleFC_0817_comp_27( real* DC, getLastCudaError("scaleFC_0817_27 execution failed"); } ////////////////////////////////////////////////////////////////////////// +extern "C" void ScaleFC_comp_D3Q27F3_2018( real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posC, + unsigned int* posFSWB, + unsigned int kFC, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + unsigned int numberOfThreads, + OffFC offFC) +{ + int Grid = (kFC / numberOfThreads)+1; + int Grid1, Grid2; + if (Grid>512) + { + Grid1 = 512; + Grid2 = (Grid/Grid1)+1; + } + else + { + Grid1 = 1; + Grid2 = Grid; + } + dim3 gridINT_FC(Grid1, Grid2); + dim3 threads(numberOfThreads, 1, 1 ); + + scaleFC_comp_D3Q27F3_2018 <<< gridINT_FC, threads >>> (DC, + DF, + G6, + neighborCX, + neighborCY, + neighborCZ, + neighborFX, + neighborFY, + neighborFZ, + size_MatC, + size_MatF, + evenOrOdd, + posC, + posFSWB, + kFC, + omCoarse, + omFine, + nu, + nxC, + nyC, + nxF, + nyF, + offFC); + getLastCudaError("scaleFC_comp_D3Q27F3_2018 execution failed"); +} +////////////////////////////////////////////////////////////////////////// extern "C" void ScaleFC_comp_D3Q27F3( real* DC, real* DF, real* G6, diff --git a/src/VirtualFluids_GPU/GPU/ScaleCF27.cu b/src/VirtualFluids_GPU/GPU/ScaleCF27.cu index 9b7eb38be..f8c114c92 100644 --- a/src/VirtualFluids_GPU/GPU/ScaleCF27.cu +++ b/src/VirtualFluids_GPU/GPU/ScaleCF27.cu @@ -1,4275 +1,13 @@ +// _ ___ __ __________ _ __ ______________ __ +// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / +// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / +// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / +// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ +// +////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/D3Q27.h" -//#include "LBM/LB.h" #include "GPU/constant.h" - -////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, - real* DF, - real* G6, - unsigned int* neighborCX, - unsigned int* neighborCY, - unsigned int* neighborCZ, - unsigned int* neighborFX, - unsigned int* neighborFY, - unsigned int* neighborFZ, - unsigned int size_MatC, - unsigned int size_MatF, - bool evenOrOdd, - unsigned int* posCSWB, - unsigned int* posFSWB, - unsigned int kCF, - real omCoarse, - real omFine, - real nu, - unsigned int nxC, - unsigned int nyC, - unsigned int nxF, - unsigned int nyF, - OffCF offCF) -{ - real - *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, - *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest, - *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; - - - fP00dest = &DF[dirE *size_MatF]; - fM00dest = &DF[dirW *size_MatF]; - f0P0dest = &DF[dirN *size_MatF]; - f0M0dest = &DF[dirS *size_MatF]; - f00Pdest = &DF[dirT *size_MatF]; - f00Mdest = &DF[dirB *size_MatF]; - fPP0dest = &DF[dirNE *size_MatF]; - fMM0dest = &DF[dirSW *size_MatF]; - fPM0dest = &DF[dirSE *size_MatF]; - fMP0dest = &DF[dirNW *size_MatF]; - fP0Pdest = &DF[dirTE *size_MatF]; - fM0Mdest = &DF[dirBW *size_MatF]; - fP0Mdest = &DF[dirBE *size_MatF]; - fM0Pdest = &DF[dirTW *size_MatF]; - f0PPdest = &DF[dirTN *size_MatF]; - f0MMdest = &DF[dirBS *size_MatF]; - f0PMdest = &DF[dirBN *size_MatF]; - f0MPdest = &DF[dirTS *size_MatF]; - f000dest = &DF[dirZERO*size_MatF]; - fMMMdest = &DF[dirBSW *size_MatF]; - fMMPdest = &DF[dirTSW *size_MatF]; - fMPPdest = &DF[dirTNW *size_MatF]; - fMPMdest = &DF[dirBNW *size_MatF]; - fPPMdest = &DF[dirBNE *size_MatF]; - fPPPdest = &DF[dirTNE *size_MatF]; - fPMPdest = &DF[dirTSE *size_MatF]; - fPMMdest = &DF[dirBSE *size_MatF]; - - real - *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, - *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource, - *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; - - if (evenOrOdd == true) - { - fP00source = &DC[dirE *size_MatC]; - fM00source = &DC[dirW *size_MatC]; - f0P0source = &DC[dirN *size_MatC]; - f0M0source = &DC[dirS *size_MatC]; - f00Psource = &DC[dirT *size_MatC]; - f00Msource = &DC[dirB *size_MatC]; - fPP0source = &DC[dirNE *size_MatC]; - fMM0source = &DC[dirSW *size_MatC]; - fPM0source = &DC[dirSE *size_MatC]; - fMP0source = &DC[dirNW *size_MatC]; - fP0Psource = &DC[dirTE *size_MatC]; - fM0Msource = &DC[dirBW *size_MatC]; - fP0Msource = &DC[dirBE *size_MatC]; - fM0Psource = &DC[dirTW *size_MatC]; - f0PPsource = &DC[dirTN *size_MatC]; - f0MMsource = &DC[dirBS *size_MatC]; - f0PMsource = &DC[dirBN *size_MatC]; - f0MPsource = &DC[dirTS *size_MatC]; - f000source = &DC[dirZERO*size_MatC]; - fMMMsource = &DC[dirBSW *size_MatC]; - fMMPsource = &DC[dirTSW *size_MatC]; - fMPPsource = &DC[dirTNW *size_MatC]; - fMPMsource = &DC[dirBNW *size_MatC]; - fPPMsource = &DC[dirBNE *size_MatC]; - fPPPsource = &DC[dirTNE *size_MatC]; - fPMPsource = &DC[dirTSE *size_MatC]; - fPMMsource = &DC[dirBSE *size_MatC]; - } - else - { - fP00source = &DC[dirW *size_MatC]; - fM00source = &DC[dirE *size_MatC]; - f0P0source = &DC[dirS *size_MatC]; - f0M0source = &DC[dirN *size_MatC]; - f00Psource = &DC[dirB *size_MatC]; - f00Msource = &DC[dirT *size_MatC]; - fPP0source = &DC[dirSW *size_MatC]; - fMM0source = &DC[dirNE *size_MatC]; - fPM0source = &DC[dirNW *size_MatC]; - fMP0source = &DC[dirSE *size_MatC]; - fP0Psource = &DC[dirBW *size_MatC]; - fM0Msource = &DC[dirTE *size_MatC]; - fP0Msource = &DC[dirTW *size_MatC]; - fM0Psource = &DC[dirBE *size_MatC]; - f0PPsource = &DC[dirBS *size_MatC]; - f0MMsource = &DC[dirTN *size_MatC]; - f0PMsource = &DC[dirTS *size_MatC]; - f0MPsource = &DC[dirBN *size_MatC]; - f000source = &DC[dirZERO*size_MatC]; - fMMMsource = &DC[dirTNE *size_MatC]; - fMMPsource = &DC[dirBNE *size_MatC]; - fMPPsource = &DC[dirBSE *size_MatC]; - fMPMsource = &DC[dirTSE *size_MatC]; - fPPMsource = &DC[dirTSW *size_MatC]; - fPPPsource = &DC[dirBSW *size_MatC]; - fPMPsource = &DC[dirBNW *size_MatC]; - fPMMsource = &DC[dirTNW *size_MatC]; - } - - Distributions6 G; - G.g[dirE] = &G6[dirE *size_MatF]; - G.g[dirW] = &G6[dirW *size_MatF]; - G.g[dirN] = &G6[dirN *size_MatF]; - G.g[dirS] = &G6[dirS *size_MatF]; - G.g[dirT] = &G6[dirT *size_MatF]; - G.g[dirB] = &G6[dirB *size_MatF]; - - //////////////////////////////////////////////////////////////////////////////// - const unsigned ix = threadIdx.x; // Globaler x-Index - const unsigned iy = blockIdx.x; // Globaler y-Index - const unsigned iz = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*iz + iy) + ix; - ////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////// - real eps_new = c1o2; - real omegaS = omCoarse;//-omCoarse; - real o = omFine;//-omFine; - real oP = o;//:( - //real op = one; - //real cu_sq; - - real xoff, yoff, zoff; - real xoff_sq, yoff_sq, zoff_sq; - - real vvx, vvy, vvz, vx2, vy2, vz2, drho; - real press;//,drho,vx1,vx2,vx3; - real /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP; - real /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP; - real /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP; - real /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP; - real /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM; - real /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM; - real /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM; - real /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM; - real fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM; - //real feqP00,feqM00,feq0P0,feq0M0,feq00P,feq00M,feqPP0,feqMM0,feqPM0,feqMP0,feqP0P,feqM0M,feqP0M,feqM0P,feq0PP,feq0MM,feq0PM,feq0MP,feq000,feqPPP, feqMMP, feqPMP, feqMPP, feqPPM, feqMMM, feqPMM, feqMPM; - real kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP; - real kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP; - real kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP; - real kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP; - real kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM; - real kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM; - real kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM; - real kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM; - real a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz; - real d0, dx, dy, dz, dxy, dxz, dyz, dxyz; - - real x,y,z; - - - if(k<kCF) - { - ////////////////////////////////////////////////////////////////////////// - xoff = offCF.xOffCF[k]; - yoff = offCF.yOffCF[k]; - zoff = offCF.zOffCF[k]; - xoff_sq = xoff * xoff; - yoff_sq = yoff * yoff; - zoff_sq = zoff * zoff; - ////////////////////////////////////////////////////////////////////////// - //SWB// - ////////////////////////////////////////////////////////////////////////// - //index 0 - unsigned int k000base = posCSWB[k]; - unsigned int kM00base = neighborCX[k000base]; - unsigned int k0M0base = neighborCY[k000base]; - unsigned int k00Mbase = neighborCZ[k000base]; - unsigned int kMM0base = neighborCY[kM00base]; - unsigned int kM0Mbase = neighborCZ[kM00base]; - unsigned int k0MMbase = neighborCZ[k0M0base]; - unsigned int kMMMbase = neighborCZ[kMM0base]; - ////////////////////////////////////////////////////////////////////////// - //index - unsigned int k000 = k000base; - unsigned int kM00 = kM00base; - unsigned int k0M0 = k0M0base; - unsigned int k00M = k00Mbase; - unsigned int kMM0 = kMM0base; - unsigned int kM0M = kM0Mbase; - unsigned int k0MM = k0MMbase; - unsigned int kMMM = kMMMbase; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1MMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM); - vx2MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM); - vx3MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM); - - kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM))); - kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM))); - kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM))); - kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM))); - kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM))); - kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM))); - - ////////////////////////////////////////////////////////////////////////// - //SWT// - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k00M; - kM00 = kM0M; - k0M0 = k0MM; - k00M = neighborCZ[k00M]; - kMM0 = kMMM; - kM0M = neighborCZ[kM0M]; - k0MM = neighborCZ[k0MM]; - kMMM = neighborCZ[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1MMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP); - vx2MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP); - vx3MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP); - - kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP))); - kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP))); - kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP))); - kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP))); - kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP))); - kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP))); - - ////////////////////////////////////////////////////////////////////////// - //SET// - ////////////////////////////////////////////////////////////////////////// - //index - k000 = kM00; - kM00 = neighborCX[kM00]; - k0M0 = kMM0; - k00M = kM0M; - kMM0 = neighborCX[kMM0]; - kM0M = neighborCX[kM0M]; - k0MM = kMMM; - kMMM = neighborCX[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1PMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP); - vx2PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP); - vx3PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP); - - kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP))); - kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP))); - kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP))); - kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP))); - kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP))); - kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP))); - - ////////////////////////////////////////////////////////////////////////// - //SEB// - ////////////////////////////////////////////////////////////////////////// - //index - k00M = k000; - kM0M = kM00; - k0MM = k0M0; - kMMM = kMM0; - k000 = kM00base; - kM00 = neighborCX[kM00base]; - k0M0 = kMM0base; - kMM0 = neighborCX[kMM0base]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1PMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM); - vx2PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM); - vx3PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM); - - kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM))); - kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM))); - kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM))); - kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM))); - kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM))); - kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM))); - - ////////////////////////////////////////////////////////////////////////// - //NWB// - ////////////////////////////////////////////////////////////////////////// - //index 0 - k000base = k0M0base; - kM00base = kMM0base; - k0M0base = neighborCY[k0M0base]; - k00Mbase = k0MMbase; - kMM0base = neighborCY[kMM0base]; - kM0Mbase = kMMMbase; - k0MMbase = neighborCY[k0MMbase]; - kMMMbase = neighborCY[kMMMbase]; - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k000base; - kM00 = kM00base; - k0M0 = k0M0base; - k00M = k00Mbase; - kMM0 = kMM0base; - kM0M = kM0Mbase; - k0MM = k0MMbase; - kMMM = kMMMbase; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1MPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM); - vx2MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM); - vx3MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM); - - kxyFromfcNEQMPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM))); - kyzFromfcNEQMPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM))); - kxzFromfcNEQMPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM))); - kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM))); - kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM))); - kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM))); - - ////////////////////////////////////////////////////////////////////////// - //NWT// - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k00M; - kM00 = kM0M; - k0M0 = k0MM; - k00M = neighborCZ[k00M]; - kMM0 = kMMM; - kM0M = neighborCZ[kM0M]; - k0MM = neighborCZ[k0MM]; - kMMM = neighborCZ[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1MPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP); - vx2MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP); - vx3MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP); - - kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP))); - kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP))); - kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP))); - kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP))); - kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP))); - kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP))); - - ////////////////////////////////////////////////////////////////////////// - //NET// - ////////////////////////////////////////////////////////////////////////// - //index - k000 = kM00; - kM00 = neighborCX[kM00]; - k0M0 = kMM0; - k00M = kM0M; - kMM0 = neighborCX[kMM0]; - kM0M = neighborCX[kM0M]; - k0MM = kMMM; - kMMM = neighborCX[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1PPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP); - vx2PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP); - vx3PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP); - - kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP))); - kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP))); - kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP))); - kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP))); - kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP))); - kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP))); - - ////////////////////////////////////////////////////////////////////////// - //NEB// - ////////////////////////////////////////////////////////////////////////// - //index - k00M = k000; - kM0M = kM00; - k0MM = k0M0; - kMMM = kMM0; - k000 = kM00base; - kM00 = neighborCX[kM00base]; - k0M0 = kMM0base; - kMM0 = neighborCX[kMM0base]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1PPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM); - vx2PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM); - vx3PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM); - - kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM))); - kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM))); - kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM))); - kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM))); - kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM))); - kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM))); - - ////////////////////////////////////////////////////////////////////////// - //3 - ////////////////////////////////////////////////////////////////////////// - a0 = c1o8*(((vx1PPM + vx1PPP) + (vx1MPM + vx1MPP)) + ((vx1PMM + vx1PMP) + (vx1MMM + vx1MMP))); - ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP))); - ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM))); - az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM))); - axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM))); - axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM))); - ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP))); - axyz= ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ; - b0 = c1o8*(((vx2PPM + vx2PPP) + (vx2MPM + vx2MPP)) + ((vx2PMM + vx2PMP) + (vx2MMM + vx2MMP))); - bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP))); - by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM))); - bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM))); - bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM))); - bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP))); - byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM))); - bxyz= ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ; - c0 = c1o8*(((vx3PPM + vx3PPP) + (vx3MPM + vx3MPP)) + ((vx3PMM + vx3PMP) + (vx3MMM + vx3MMP))); - cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP))); - cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM))); - cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM))); - cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM))); - cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP))); - cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP))); - cxyz= ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ; - - //bxx = zero; - //cxx = zero; - //ayy = zero; - //cyy = zero; - //azz = zero; - //bzz = zero; - //axx = zero; - //byy = zero; - //czz = zero; - - bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy; - cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz; - - ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy; - cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz; - - azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz; - bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz; - - axx = (c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy) - + (c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz); - - byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy) - + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz); - - czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz) - + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz); - - a0 -= c1o4*(axx + ayy + azz); - b0 -= c1o4*(bxx + byy + bzz); - c0 -= c1o4*(cxx + cyy + czz); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real kxyAverage = zero; - real kyzAverage = zero; - real kxzAverage = zero; - real kxxMyyAverage = zero; - real kxxMzzAverage = zero; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Press - //d0 = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8; - //dx = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4; - //dy = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4; - //dz = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4; - //dxy = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2; - //dxz = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2; - //dyz = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2; - //dxyz = -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho - d0 = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8; - dx = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4; - dy = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4; - dz = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4; - dxy = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2; - dxz = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2; - dyz = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Bernd das Brot - // - // X------X - // | | x---x - // | ---+-+-> | ----> off-vector - // | | x---x - // X------X - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz; - ax = ax + two * xoff * axx + yoff * axy + zoff * axz; - ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz; - az = az + two * zoff * azz + xoff * axz + yoff * ayz; - b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz; - bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz; - by = by + two * yoff * byy + xoff * bxy + zoff * byz; - bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz; - c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz; - cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz; - cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz; - cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz; - d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz; - dx = dx + yoff * dxy + zoff * dxz; - dy = dy + xoff * dxy + zoff * dyz; - dz = dz + xoff * dxz + yoff * dyz; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = zero; - real mfabb = zero; - real mfbcb = zero; - real mfbab = zero; - real mfbbc = zero; - real mfbba = zero; - real mfccb = zero; - real mfaab = zero; - real mfcab = zero; - real mfacb = zero; - real mfcbc = zero; - real mfaba = zero; - real mfcba = zero; - real mfabc = zero; - real mfbcc = zero; - real mfbaa = zero; - real mfbca = zero; - real mfbac = zero; - real mfbbb = zero; - real mfccc = zero; - real mfaac = zero; - real mfcac = zero; - real mfacc = zero; - real mfcca = zero; - real mfaaa = zero; - real mfcaa = zero; - real mfaca = zero; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = zero; - real mgabb = zero; - real mgbcb = zero; - real mgbab = zero; - real mgbbc = zero; - real mgbba = zero; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real m0, m1, m2, oMdrho; - real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz; - //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein - //real O3 = two - o; - //real residu, residutmp; - //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new; - real NeqOn = one;//zero;//one; //.... one = on ..... zero = off - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position SWB -0.25f, -0.25f, -0.25f - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - x = -c1o4; - y = -c1o4; - z = -c1o4; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //real mxoff = -xoff; - //real myoff = -yoff; - //real mzoff = -zoff; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT; - //press = press_SWT * (c9o64 + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + - // press_NWT * (c3o64 + c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + - // press_SET * (c3o64 - c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + - // press_NET * (c1o64 - c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + - // press_NEB * (c3o64 - c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + - // press_NWB * (c9o64 + c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + - // press_SEB * (c9o64 - c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + - // press_SWB * (c27o64 + c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff); - //drho = drho_SWT * (c9o64 + c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + - // drho_NWT * (c3o64 + c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + - // drho_SET * (c3o64 - c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + - // drho_NET * (c1o64 - c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + - // drho_NEB * (c3o64 - c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + - // drho_NWB * (c9o64 + c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + - // drho_SEB * (c9o64 - c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + - // drho_SWB * (c27o64 + c9o16 * xoff + c9o16 * yoff + c9o16 * zoff); - press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; - vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); - vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); - vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); - //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); - //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); - //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); - - //mfaaa = drho; - //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //2.f - // linear combinations - mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z )*eps_new / oP* (one + press); - //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; - //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; - //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; - - mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); - mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); - - mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); - mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); - mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //three - // linear combinations - //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); - //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); - //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); - //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); - //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - axx) * eps_new; - mgabb = (ax + axx) * eps_new; - mgbcb = (by - byy) * eps_new; - mgbab = (by + byy) * eps_new; - mgbbc = (cz - czz) * eps_new; - mgbba = (cz + czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4.f - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - //index 0 - k000base = posFSWB[k]; - kM00base = neighborFX[k000base]; - k0M0base = neighborFY[k000base]; - k00Mbase = neighborFZ[k000base]; - kMM0base = neighborFY[kM00base]; - kM0Mbase = neighborFZ[kM00base]; - k0MMbase = neighborFZ[k0M0base]; - kMMMbase = neighborFZ[kMM0base]; - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k000base; - kM00 = kM00base; - k0M0 = k0M0base; - k00M = k00Mbase; - kMM0 = kMM0base; - kM0M = kM0Mbase; - k0MM = k0MMbase; - kMMM = kMMMbase; - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - - //reset - mfcbb = zero; - mfabb = zero; - mfbcb = zero; - mfbab = zero; - mfbbc = zero; - mfbba = zero; - mfccb = zero; - mfaab = zero; - mfcab = zero; - mfacb = zero; - mfcbc = zero; - mfaba = zero; - mfcba = zero; - mfabc = zero; - mfbcc = zero; - mfbaa = zero; - mfbca = zero; - mfbac = zero; - mfbbb = zero; - mfccc = zero; - mfaac = zero; - mfcac = zero; - mfacc = zero; - mfcca = zero; - mfaaa = zero; - mfcaa = zero; - mfaca = zero; - ///////////// - mgcbb = zero; - mgabb = zero; - mgbcb = zero; - mgbab = zero; - mgbbc = zero; - mgbba = zero; - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position SWT -0.25f, -0.25f, 0.25f - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - x = -c1o4; - y = -c1o4; - z = c1o4; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho = c1o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c27o64*drho_SWT; - //press = press_SWT * (c27o64 + c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + - // press_NWT * (c9o64 + c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + - // press_SET * (c9o64 - c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + - // press_NET * (c3o64 - c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + - // press_NEB * (c1o64 - c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + - // press_NWB * (c3o64 + c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + - // press_SEB * (c3o64 - c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + - // press_SWB * (c9o64 + c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff); - //drho = drho_SWT * (c27o64 + c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + - // drho_NWT * (c9o64 + c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + - // drho_SET * (c9o64 - c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + - // drho_NET * (c3o64 - c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + - // drho_NEB * (c1o64 - c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + - // drho_NWB * (c3o64 + c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + - // drho_SEB * (c3o64 - c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + - // drho_SWB * (c9o64 + c3o16 * xoff + c3o16 * yoff + c9o16 * zoff); - press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; - vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); - vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); - vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); - //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); - //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); - //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); - - //mfaaa = drho; - //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //2.f - // linear combinations - mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); - //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; - //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; - //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; - - mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); - mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); - - mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); - mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); - mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //three - // linear combinations - //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); - //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); - //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); - //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); - //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - axx) * eps_new; - mgabb = (ax + axx) * eps_new; - mgbcb = (by - byy) * eps_new; - mgbab = (by + byy) * eps_new; - mgbbc = (cz - czz) * eps_new; - mgbba = (cz + czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4.f - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - //index - k000 = k00M; - kM00 = kM0M; - k0M0 = k0MM; - k00M = neighborFZ[k00M]; - kMM0 = kMMM; - kM0M = neighborFZ[kM0M]; - k0MM = neighborFZ[k0MM]; - kMMM = neighborFZ[kMMM]; - //////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - - - //reset - mfcbb = zero; - mfabb = zero; - mfbcb = zero; - mfbab = zero; - mfbbc = zero; - mfbba = zero; - mfccb = zero; - mfaab = zero; - mfcab = zero; - mfacb = zero; - mfcbc = zero; - mfaba = zero; - mfcba = zero; - mfabc = zero; - mfbcc = zero; - mfbaa = zero; - mfbca = zero; - mfbac = zero; - mfbbb = zero; - mfccc = zero; - mfaac = zero; - mfcac = zero; - mfacc = zero; - mfcca = zero; - mfaaa = zero; - mfcaa = zero; - mfaca = zero; - ///////////// - mgcbb = zero; - mgabb = zero; - mgbcb = zero; - mgbab = zero; - mgbbc = zero; - mgbba = zero; - - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position SET 0.25f, -0.25f, 0.25f - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - x = c1o4; - y = -c1o4; - z = c1o4; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho =c3o64*drho_NEB+c9o64*drho_NET+c1o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c27o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT; - //press = press_SET * (c27o64 - c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + - // press_NET * (c9o64 - c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + - // press_SWT * (c9o64 + c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + - // press_NWT * (c3o64 + c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + - // press_NWB * (c1o64 + c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + - // press_NEB * (c3o64 - c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + - // press_SWB * (c3o64 + c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + - // press_SEB * (c9o64 - c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff); - //drho = drho_SET * (c27o64 - c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + - // drho_NET * (c9o64 - c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + - // drho_SWT * (c9o64 + c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + - // drho_NWT * (c3o64 + c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + - // drho_NWB * (c1o64 + c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + - // drho_NEB * (c3o64 - c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + - // drho_SWB * (c3o64 + c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + - // drho_SEB * (c9o64 - c3o16 * xoff + c3o16 * yoff + c9o16 * zoff); - press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; - vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); - vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); - vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); - //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); - //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); - //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); - - //mfaaa = drho; - //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //2.f - // linear combinations - mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); - //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; - //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; - //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; - - mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); - mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); - - mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); - mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); - mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //three - // linear combinations - //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); - //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); - //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); - //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); - //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - axx) * eps_new; - mgabb = (ax + axx) * eps_new; - mgbcb = (by - byy) * eps_new; - mgbab = (by + byy) * eps_new; - mgbbc = (cz - czz) * eps_new; - mgbba = (cz + czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4.f - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - //index - k000 = kM00; - kM00 = neighborFX[kM00]; - k0M0 = kMM0; - k00M = kM0M; - kMM0 = neighborFX[kMM0]; - kM0M = neighborFX[kM0M]; - k0MM = kMMM; - kMMM = neighborFX[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - - //reset - mfcbb = zero; - mfabb = zero; - mfbcb = zero; - mfbab = zero; - mfbbc = zero; - mfbba = zero; - mfccb = zero; - mfaab = zero; - mfcab = zero; - mfacb = zero; - mfcbc = zero; - mfaba = zero; - mfcba = zero; - mfabc = zero; - mfbcc = zero; - mfbaa = zero; - mfbca = zero; - mfbac = zero; - mfbbb = zero; - mfccc = zero; - mfaac = zero; - mfcac = zero; - mfacc = zero; - mfcca = zero; - mfaaa = zero; - mfcaa = zero; - mfaca = zero; - ///////////// - mgcbb = zero; - mgabb = zero; - mgbcb = zero; - mgbab = zero; - mgbbc = zero; - mgbba = zero; - - - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position SEB 0.25f, -0.25f, -0.25f - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - x = c1o4; - y = -c1o4; - z = -c1o4; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho =c9o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c1o64*drho_NWT+c27o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT; - //press = press_SET * (c9o64 - c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + - // press_NET * (c3o64 - c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + - // press_SWT * (c3o64 + c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + - // press_NWT * (c1o64 + c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + - // press_NWB * (c3o64 + c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + - // press_NEB * (c9o64 - c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + - // press_SWB * (c9o64 + c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + - // press_SEB * (c27o64 - c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff); - //drho = drho_SET * (c9o64 - c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + - // drho_NET * (c3o64 - c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + - // drho_SWT * (c3o64 + c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + - // drho_NWT * (c1o64 + c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + - // drho_NWB * (c3o64 + c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + - // drho_NEB * (c9o64 - c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + - // drho_SWB * (c9o64 + c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + - // drho_SEB * (c27o64 - c9o16 * xoff + c9o16 * yoff + c9o16 * zoff); - press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; - vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); - vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); - vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); - //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); - //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); - //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); - - //mfaaa = drho; - //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //2.f - // linear combinations - mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); - //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; - //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; - //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; - - mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); - mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); - - mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); - mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); - mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //three - // linear combinations - //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); - //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); - //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); - //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); - //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - axx) * eps_new; - mgabb = (ax + axx) * eps_new; - mgbcb = (by - byy) * eps_new; - mgbab = (by + byy) * eps_new; - mgbbc = (cz - czz) * eps_new; - mgbba = (cz + czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4.f - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - //index - k00M = k000; - kM0M = kM00; - k0MM = k0M0; - kMMM = kMM0; - k000 = kM00base; - kM00 = neighborFX[kM00base]; - k0M0 = kMM0base; - kMM0 = neighborFX[kMM0base]; - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - - - //reset - mfcbb = zero; - mfabb = zero; - mfbcb = zero; - mfbab = zero; - mfbbc = zero; - mfbba = zero; - mfccb = zero; - mfaab = zero; - mfcab = zero; - mfacb = zero; - mfcbc = zero; - mfaba = zero; - mfcba = zero; - mfabc = zero; - mfbcc = zero; - mfbaa = zero; - mfbca = zero; - mfbac = zero; - mfbbb = zero; - mfccc = zero; - mfaac = zero; - mfcac = zero; - mfacc = zero; - mfcca = zero; - mfaaa = zero; - mfcaa = zero; - mfaca = zero; - ///////////// - mgcbb = zero; - mgabb = zero; - mgbcb = zero; - mgbab = zero; - mgbbc = zero; - mgbba = zero; - - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position NWB -0.25f, 0.25f, -0.25f - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - x = -c1o4; - y = c1o4; - z = -c1o4; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho = c9o64*drho_NEB+c3o64*drho_NET+c27o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c1o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT; - //press = press_NWT * (c9o64 + c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + - // press_NET * (c3o64 - c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + - // press_SWT * (c3o64 + c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + - // press_SET * (c1o64 - c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + - // press_SEB * (c3o64 - c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + - // press_NEB * (c9o64 - c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + - // press_SWB * (c9o64 + c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + - // press_NWB * (c27o64 + c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff); - //drho = drho_NWT * (c9o64 + c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + - // drho_NET * (c3o64 - c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + - // drho_SWT * (c3o64 + c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + - // drho_SET * (c1o64 - c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + - // drho_SEB * (c3o64 - c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + - // drho_NEB * (c9o64 - c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + - // drho_SWB * (c9o64 + c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + - // drho_NWB * (c27o64 + c9o16 * xoff - c9o16 * yoff + c9o16 * zoff); - press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; - vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); - vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); - vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); - //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); - //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); - //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); - - //mfaaa = drho; - //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //2.f - // linear combinations - mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); - //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; - //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; - //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; - - mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); - mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); - - mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); - mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); - mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //three - // linear combinations - //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); - //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); - //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); - //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); - //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - axx) * eps_new; - mgabb = (ax + axx) * eps_new; - mgbcb = (by - byy) * eps_new; - mgbab = (by + byy) * eps_new; - mgbbc = (cz - czz) * eps_new; - mgbba = (cz + czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4.f - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - //index 0 - k000base = k0M0base; - kM00base = kMM0base; - k0M0base = neighborFY[k0M0base]; - k00Mbase = k0MMbase; - kMM0base = neighborFY[kMM0base]; - kM0Mbase = kMMMbase; - k0MMbase = neighborFY[k0MMbase]; - kMMMbase = neighborFY[kMMMbase]; - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k000base; - kM00 = kM00base; - k0M0 = k0M0base; - k00M = k00Mbase; - kMM0 = kMM0base; - kM0M = kM0Mbase; - k0MM = k0MMbase; - kMMM = kMMMbase; - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - - - //reset - mfcbb = zero; - mfabb = zero; - mfbcb = zero; - mfbab = zero; - mfbbc = zero; - mfbba = zero; - mfccb = zero; - mfaab = zero; - mfcab = zero; - mfacb = zero; - mfcbc = zero; - mfaba = zero; - mfcba = zero; - mfabc = zero; - mfbcc = zero; - mfbaa = zero; - mfbca = zero; - mfbac = zero; - mfbbb = zero; - mfccc = zero; - mfaac = zero; - mfcac = zero; - mfacc = zero; - mfcca = zero; - mfaaa = zero; - mfcaa = zero; - mfaca = zero; - ///////////// - mgcbb = zero; - mgabb = zero; - mgbcb = zero; - mgbab = zero; - mgbbc = zero; - mgbba = zero; - - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position NWT -0.25f, 0.25f, 0.25f - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - x = -c1o4; - y = c1o4; - z = c1o4; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho = c3o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c27o64*drho_NWT+c1o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT; - //press = press_NWT * (c27o64 + c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + - // press_NET * (c9o64 - c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + - // press_SWT * (c9o64 + c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + - // press_SET * (c3o64 - c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + - // press_SEB * (c1o64 - c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + - // press_NEB * (c3o64 - c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + - // press_SWB * (c3o64 + c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + - // press_NWB * (c9o64 + c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff); - //drho = drho_NWT * (c27o64 + c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + - // drho_NET * (c9o64 - c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + - // drho_SWT * (c9o64 + c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + - // drho_SET * (c3o64 - c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + - // drho_SEB * (c1o64 - c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + - // drho_NEB * (c3o64 - c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + - // drho_SWB * (c3o64 + c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + - // drho_NWB * (c9o64 + c3o16 * xoff - c3o16 * yoff + c9o16 * zoff); - press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; - vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); - vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); - vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); - //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); - //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); - //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); - - //mfaaa = drho; - //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //2.f - // linear combinations - mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); - //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; - //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; - //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; - - mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); - mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); - - mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); - mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); - mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //three - // linear combinations - //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); - //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); - //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); - //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); - //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - axx) * eps_new; - mgabb = (ax + axx) * eps_new; - mgbcb = (by - byy) * eps_new; - mgbab = (by + byy) * eps_new; - mgbbc = (cz - czz) * eps_new; - mgbba = (cz + czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4.f - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k00M; - kM00 = kM0M; - k0M0 = k0MM; - k00M = neighborFZ[k00M]; - kMM0 = kMMM; - kM0M = neighborFZ[kM0M]; - k0MM = neighborFZ[k0MM]; - kMMM = neighborFZ[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - - - //reset - mfcbb = zero; - mfabb = zero; - mfbcb = zero; - mfbab = zero; - mfbbc = zero; - mfbba = zero; - mfccb = zero; - mfaab = zero; - mfcab = zero; - mfacb = zero; - mfcbc = zero; - mfaba = zero; - mfcba = zero; - mfabc = zero; - mfbcc = zero; - mfbaa = zero; - mfbca = zero; - mfbac = zero; - mfbbb = zero; - mfccc = zero; - mfaac = zero; - mfcac = zero; - mfacc = zero; - mfcca = zero; - mfaaa = zero; - mfcaa = zero; - mfaca = zero; - ///////////// - mgcbb = zero; - mgabb = zero; - mgbcb = zero; - mgbab = zero; - mgbbc = zero; - mgbba = zero; - - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position NET 0.25f, 0.25f, 0.25f - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - x = c1o4; - y = c1o4; - z = c1o4; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho = c9o64*drho_NEB+c27o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c1o64*drho_SWB+c3o64*drho_SWT; - //press = press_NET * (c27o64 - c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + - // press_NWT * (c9o64 + c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + - // press_SET * (c9o64 - c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + - // press_SWT * (c3o64 + c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + - // press_SWB * (c1o64 + c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + - // press_NWB * (c3o64 + c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + - // press_SEB * (c3o64 - c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + - // press_NEB * (c9o64 - c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff); - //drho = drho_NET * (c27o64 - c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + - // drho_NWT * (c9o64 + c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + - // drho_SET * (c9o64 - c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + - // drho_SWT * (c3o64 + c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + - // drho_SWB * (c1o64 + c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + - // drho_NWB * (c3o64 + c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + - // drho_SEB * (c3o64 - c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + - // drho_NEB * (c9o64 - c3o16 * xoff - c3o16 * yoff + c9o16 * zoff); - press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; - vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); - vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); - vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); - //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); - //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); - //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); - - //mfaaa = drho; - //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //2.f - // linear combinations - mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); - //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; - //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; - //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; - - mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); - mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); - - mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); - mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); - mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //three - // linear combinations - //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); - //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); - //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); - //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); - //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - axx) * eps_new; - mgabb = (ax + axx) * eps_new; - mgbcb = (by - byy) * eps_new; - mgbab = (by + byy) * eps_new; - mgbbc = (cz - czz) * eps_new; - mgbba = (cz + czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4.f - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - //index - k000 = kM00; - kM00 = neighborFX[kM00]; - k0M0 = kMM0; - k00M = kM0M; - kMM0 = neighborFX[kMM0]; - kM0M = neighborFX[kM0M]; - k0MM = kMMM; - kMMM = neighborFX[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - - - //reset - mfcbb = zero; - mfabb = zero; - mfbcb = zero; - mfbab = zero; - mfbbc = zero; - mfbba = zero; - mfccb = zero; - mfaab = zero; - mfcab = zero; - mfacb = zero; - mfcbc = zero; - mfaba = zero; - mfcba = zero; - mfabc = zero; - mfbcc = zero; - mfbaa = zero; - mfbca = zero; - mfbac = zero; - mfbbb = zero; - mfccc = zero; - mfaac = zero; - mfcac = zero; - mfacc = zero; - mfcca = zero; - mfaaa = zero; - mfcaa = zero; - mfaca = zero; - ///////////// - mgcbb = zero; - mgabb = zero; - mgbcb = zero; - mgbab = zero; - mgbbc = zero; - mgbba = zero; - - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position NEB 0.25f, 0.25f, -0.25f - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - x = c1o4; - y = c1o4; - z = -c1o4; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho = c27o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c1o64*drho_SWT; - //press = press_NET * (c9o64 - c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + - // press_NWT * (c3o64 + c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + - // press_SET * (c3o64 - c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + - // press_SWT * (c1o64 + c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + - // press_SWB * (c3o64 + c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + - // press_NWB * (c9o64 + c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + - // press_SEB * (c9o64 - c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + - // press_NEB * (c27o64 - c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff); - //drho = drho_NET * (c9o64 - c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + - // drho_NWT * (c3o64 + c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + - // drho_SET * (c3o64 - c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + - // drho_SWT * (c1o64 + c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + - // drho_SWB * (c3o64 + c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + - // drho_NWB * (c9o64 + c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + - // drho_SEB * (c9o64 - c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + - // drho_NEB * (c27o64 - c9o16 * xoff - c9o16 * yoff + c9o16 * zoff); - press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; - vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); - vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); - vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); - //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); - //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); - //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); - - //mfaaa = drho; - //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //2.f - // linear combinations - mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); - //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; - //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; - //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; - - mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); - mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); - - mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); - mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); - mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //three - // linear combinations - //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); - //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); - //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); - //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); - //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - axx) * eps_new; - mgabb = (ax + axx) * eps_new; - mgbcb = (by - byy) * eps_new; - mgbab = (by + byy) * eps_new; - mgbbc = (cz - czz) * eps_new; - mgbba = (cz + czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4.f - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - //index - k00M = k000; - kM0M = kM00; - k0MM = k0M0; - kMMM = kMM0; - k000 = kM00base; - kM00 = neighborFX[kM00base]; - k0M0 = kMM0base; - kMM0 = neighborFX[kMM0base]; - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - } -} -////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ////////////////////////////////////////////////////////////////////////// extern "C" __global__ void scaleCF_0817_comp_27( real* DC, diff --git a/src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu b/src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu new file mode 100644 index 000000000..f2d312908 --- /dev/null +++ b/src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu @@ -0,0 +1,8624 @@ +// _ ___ __ __________ _ __ ______________ __ +// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / +// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / +// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / +// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ +// +////////////////////////////////////////////////////////////////////////// +/* Device code */ +#include "LBM/D3Q27.h" +#include "GPU/constant.h" + +////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posCSWB, + unsigned int* posFSWB, + unsigned int kCF, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + OffCF offCF) +{ + real + *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, + *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest, + *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; + + + fP00dest = &DF[dirE *size_MatF]; + fM00dest = &DF[dirW *size_MatF]; + f0P0dest = &DF[dirN *size_MatF]; + f0M0dest = &DF[dirS *size_MatF]; + f00Pdest = &DF[dirT *size_MatF]; + f00Mdest = &DF[dirB *size_MatF]; + fPP0dest = &DF[dirNE *size_MatF]; + fMM0dest = &DF[dirSW *size_MatF]; + fPM0dest = &DF[dirSE *size_MatF]; + fMP0dest = &DF[dirNW *size_MatF]; + fP0Pdest = &DF[dirTE *size_MatF]; + fM0Mdest = &DF[dirBW *size_MatF]; + fP0Mdest = &DF[dirBE *size_MatF]; + fM0Pdest = &DF[dirTW *size_MatF]; + f0PPdest = &DF[dirTN *size_MatF]; + f0MMdest = &DF[dirBS *size_MatF]; + f0PMdest = &DF[dirBN *size_MatF]; + f0MPdest = &DF[dirTS *size_MatF]; + f000dest = &DF[dirZERO*size_MatF]; + fMMMdest = &DF[dirBSW *size_MatF]; + fMMPdest = &DF[dirTSW *size_MatF]; + fMPPdest = &DF[dirTNW *size_MatF]; + fMPMdest = &DF[dirBNW *size_MatF]; + fPPMdest = &DF[dirBNE *size_MatF]; + fPPPdest = &DF[dirTNE *size_MatF]; + fPMPdest = &DF[dirTSE *size_MatF]; + fPMMdest = &DF[dirBSE *size_MatF]; + + real + *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, + *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource, + *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; + + if (evenOrOdd == true) + { + fP00source = &DC[dirE *size_MatC]; + fM00source = &DC[dirW *size_MatC]; + f0P0source = &DC[dirN *size_MatC]; + f0M0source = &DC[dirS *size_MatC]; + f00Psource = &DC[dirT *size_MatC]; + f00Msource = &DC[dirB *size_MatC]; + fPP0source = &DC[dirNE *size_MatC]; + fMM0source = &DC[dirSW *size_MatC]; + fPM0source = &DC[dirSE *size_MatC]; + fMP0source = &DC[dirNW *size_MatC]; + fP0Psource = &DC[dirTE *size_MatC]; + fM0Msource = &DC[dirBW *size_MatC]; + fP0Msource = &DC[dirBE *size_MatC]; + fM0Psource = &DC[dirTW *size_MatC]; + f0PPsource = &DC[dirTN *size_MatC]; + f0MMsource = &DC[dirBS *size_MatC]; + f0PMsource = &DC[dirBN *size_MatC]; + f0MPsource = &DC[dirTS *size_MatC]; + f000source = &DC[dirZERO*size_MatC]; + fMMMsource = &DC[dirBSW *size_MatC]; + fMMPsource = &DC[dirTSW *size_MatC]; + fMPPsource = &DC[dirTNW *size_MatC]; + fMPMsource = &DC[dirBNW *size_MatC]; + fPPMsource = &DC[dirBNE *size_MatC]; + fPPPsource = &DC[dirTNE *size_MatC]; + fPMPsource = &DC[dirTSE *size_MatC]; + fPMMsource = &DC[dirBSE *size_MatC]; + } + else + { + fP00source = &DC[dirW *size_MatC]; + fM00source = &DC[dirE *size_MatC]; + f0P0source = &DC[dirS *size_MatC]; + f0M0source = &DC[dirN *size_MatC]; + f00Psource = &DC[dirB *size_MatC]; + f00Msource = &DC[dirT *size_MatC]; + fPP0source = &DC[dirSW *size_MatC]; + fMM0source = &DC[dirNE *size_MatC]; + fPM0source = &DC[dirNW *size_MatC]; + fMP0source = &DC[dirSE *size_MatC]; + fP0Psource = &DC[dirBW *size_MatC]; + fM0Msource = &DC[dirTE *size_MatC]; + fP0Msource = &DC[dirTW *size_MatC]; + fM0Psource = &DC[dirBE *size_MatC]; + f0PPsource = &DC[dirBS *size_MatC]; + f0MMsource = &DC[dirTN *size_MatC]; + f0PMsource = &DC[dirTS *size_MatC]; + f0MPsource = &DC[dirBN *size_MatC]; + f000source = &DC[dirZERO*size_MatC]; + fMMMsource = &DC[dirTNE *size_MatC]; + fMMPsource = &DC[dirBNE *size_MatC]; + fMPPsource = &DC[dirBSE *size_MatC]; + fMPMsource = &DC[dirTSE *size_MatC]; + fPPMsource = &DC[dirTSW *size_MatC]; + fPPPsource = &DC[dirBSW *size_MatC]; + fPMPsource = &DC[dirBNW *size_MatC]; + fPMMsource = &DC[dirTNW *size_MatC]; + } + + Distributions6 G; + G.g[dirE] = &G6[dirE *size_MatF]; + G.g[dirW] = &G6[dirW *size_MatF]; + G.g[dirN] = &G6[dirN *size_MatF]; + G.g[dirS] = &G6[dirS *size_MatF]; + G.g[dirT] = &G6[dirT *size_MatF]; + G.g[dirB] = &G6[dirB *size_MatF]; + + //////////////////////////////////////////////////////////////////////////////// + const unsigned ix = threadIdx.x; // Globaler x-Index + const unsigned iy = blockIdx.x; // Globaler y-Index + const unsigned iz = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*iz + iy) + ix; + ////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////// + real eps_new = c1o2; + real omegaS = omCoarse;//-omCoarse; + real o = omFine;//-omFine; + real oP = o;//:( + //real op = one; + //real cu_sq; + + real xoff, yoff, zoff; + real xoff_sq, yoff_sq, zoff_sq; + + real vvx, vvy, vvz, vx2, vy2, vz2, drho; + real press;//,drho,vx1,vx2,vx3; + real /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP; + real /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP; + real /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP; + real /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP; + real /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM; + real /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM; + real /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM; + real /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM; + real fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM; + //real feqP00,feqM00,feq0P0,feq0M0,feq00P,feq00M,feqPP0,feqMM0,feqPM0,feqMP0,feqP0P,feqM0M,feqP0M,feqM0P,feq0PP,feq0MM,feq0PM,feq0MP,feq000,feqPPP, feqMMP, feqPMP, feqMPP, feqPPM, feqMMM, feqPMM, feqMPM; + real kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP; + real kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP; + real kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP; + real kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP; + real kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM; + real kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM; + real kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM; + real kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM; + real a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz; + real d0, dx, dy, dz, dxy, dxz, dyz, dxyz; + + real x,y,z; + + + if(k<kCF) + { + ////////////////////////////////////////////////////////////////////////// + xoff = offCF.xOffCF[k]; + yoff = offCF.yOffCF[k]; + zoff = offCF.zOffCF[k]; + xoff_sq = xoff * xoff; + yoff_sq = yoff * yoff; + zoff_sq = zoff * zoff; + ////////////////////////////////////////////////////////////////////////// + //SWB// + ////////////////////////////////////////////////////////////////////////// + //index 0 + unsigned int k000base = posCSWB[k]; + unsigned int kM00base = neighborCX[k000base]; + unsigned int k0M0base = neighborCY[k000base]; + unsigned int k00Mbase = neighborCZ[k000base]; + unsigned int kMM0base = neighborCY[kM00base]; + unsigned int kM0Mbase = neighborCZ[kM00base]; + unsigned int k0MMbase = neighborCZ[k0M0base]; + unsigned int kMMMbase = neighborCZ[kMM0base]; + ////////////////////////////////////////////////////////////////////////// + //index + unsigned int k000 = k000base; + unsigned int kM00 = kM00base; + unsigned int k0M0 = k0M0base; + unsigned int k00M = k00Mbase; + unsigned int kMM0 = kMM0base; + unsigned int kM0M = kM0Mbase; + unsigned int k0MM = k0MMbase; + unsigned int kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM); + vx2MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM); + vx3MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM); + + kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM))); + kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM))); + kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM))); + kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM))); + kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM))); + kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM))); + + ////////////////////////////////////////////////////////////////////////// + //SWT// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborCZ[k00M]; + kMM0 = kMMM; + kM0M = neighborCZ[kM0M]; + k0MM = neighborCZ[k0MM]; + kMMM = neighborCZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP); + vx2MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP); + vx3MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP); + + kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP))); + kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP))); + kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP))); + kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP))); + kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP))); + kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP))); + + ////////////////////////////////////////////////////////////////////////// + //SET// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborCX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborCX[kMM0]; + kM0M = neighborCX[kM0M]; + k0MM = kMMM; + kMMM = neighborCX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP); + vx2PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP); + vx3PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP); + + kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP))); + kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP))); + kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP))); + kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP))); + kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP))); + kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP))); + + ////////////////////////////////////////////////////////////////////////// + //SEB// + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborCX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborCX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM); + vx2PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM); + vx3PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM); + + kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM))); + kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM))); + kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM))); + kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM))); + kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM))); + kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM))); + + ////////////////////////////////////////////////////////////////////////// + //NWB// + ////////////////////////////////////////////////////////////////////////// + //index 0 + k000base = k0M0base; + kM00base = kMM0base; + k0M0base = neighborCY[k0M0base]; + k00Mbase = k0MMbase; + kMM0base = neighborCY[kMM0base]; + kM0Mbase = kMMMbase; + k0MMbase = neighborCY[k0MMbase]; + kMMMbase = neighborCY[kMMMbase]; + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k000base; + kM00 = kM00base; + k0M0 = k0M0base; + k00M = k00Mbase; + kMM0 = kMM0base; + kM0M = kM0Mbase; + k0MM = k0MMbase; + kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM); + vx2MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM); + vx3MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM); + + kxyFromfcNEQMPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM))); + kyzFromfcNEQMPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM))); + kxzFromfcNEQMPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM))); + kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM))); + kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM))); + kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM))); + + ////////////////////////////////////////////////////////////////////////// + //NWT// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborCZ[k00M]; + kMM0 = kMMM; + kM0M = neighborCZ[kM0M]; + k0MM = neighborCZ[k0MM]; + kMMM = neighborCZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP); + vx2MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP); + vx3MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP); + + kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP))); + kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP))); + kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP))); + kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP))); + kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP))); + kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP))); + + ////////////////////////////////////////////////////////////////////////// + //NET// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborCX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborCX[kMM0]; + kM0M = neighborCX[kM0M]; + k0MM = kMMM; + kMMM = neighborCX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP); + vx2PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP); + vx3PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP); + + kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP))); + kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP))); + kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP))); + kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP))); + kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP))); + kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP))); + + ////////////////////////////////////////////////////////////////////////// + //NEB// + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborCX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborCX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM); + vx2PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM); + vx3PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM); + + kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM))); + kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM))); + kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM))); + kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM))); + kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM))); + kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM))); + + ////////////////////////////////////////////////////////////////////////// + //3 + ////////////////////////////////////////////////////////////////////////// + a0 = c1o8*(((vx1PPM + vx1PPP) + (vx1MPM + vx1MPP)) + ((vx1PMM + vx1PMP) + (vx1MMM + vx1MMP))); + ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP))); + ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM))); + az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM))); + axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM))); + axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM))); + ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP))); + axyz= ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ; + b0 = c1o8*(((vx2PPM + vx2PPP) + (vx2MPM + vx2MPP)) + ((vx2PMM + vx2PMP) + (vx2MMM + vx2MMP))); + bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP))); + by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM))); + bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM))); + bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM))); + bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP))); + byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM))); + bxyz= ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ; + c0 = c1o8*(((vx3PPM + vx3PPP) + (vx3MPM + vx3MPP)) + ((vx3PMM + vx3PMP) + (vx3MMM + vx3MMP))); + cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP))); + cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM))); + cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM))); + cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM))); + cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP))); + cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP))); + cxyz= ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ; + + //bxx = zero; + //cxx = zero; + //ayy = zero; + //cyy = zero; + //azz = zero; + //bzz = zero; + //axx = zero; + //byy = zero; + //czz = zero; + + bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy; + cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz; + + ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy; + cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz; + + azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz; + bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz; + + axx = (c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy) + + (c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz); + + byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy) + + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz); + + czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz) + + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz); + + a0 -= c1o4*(axx + ayy + azz); + b0 -= c1o4*(bxx + byy + bzz); + c0 -= c1o4*(cxx + cyy + czz); + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real kxyAverage = zero; + real kyzAverage = zero; + real kxzAverage = zero; + real kxxMyyAverage = zero; + real kxxMzzAverage = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Press + //d0 = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8; + //dx = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4; + //dy = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4; + //dz = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4; + //dxy = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2; + //dxz = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2; + //dyz = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2; + //dxyz = -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho + d0 = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8; + dx = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4; + dy = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4; + dz = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4; + dxy = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2; + dxz = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2; + dyz = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // Bernd das Brot + // + // X------X + // | | x---x + // | ---+-+-> | ----> off-vector + // | | x---x + // X------X + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz; + ax = ax + two * xoff * axx + yoff * axy + zoff * axz; + ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz; + az = az + two * zoff * azz + xoff * axz + yoff * ayz; + b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz; + bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz; + by = by + two * yoff * byy + xoff * bxy + zoff * byz; + bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz; + c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz; + cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz; + cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz; + cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz; + d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz; + dx = dx + yoff * dxy + zoff * dxz; + dy = dy + xoff * dxy + zoff * dyz; + dz = dz + xoff * dxz + yoff * dyz; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = zero; + real mfabb = zero; + real mfbcb = zero; + real mfbab = zero; + real mfbbc = zero; + real mfbba = zero; + real mfccb = zero; + real mfaab = zero; + real mfcab = zero; + real mfacb = zero; + real mfcbc = zero; + real mfaba = zero; + real mfcba = zero; + real mfabc = zero; + real mfbcc = zero; + real mfbaa = zero; + real mfbca = zero; + real mfbac = zero; + real mfbbb = zero; + real mfccc = zero; + real mfaac = zero; + real mfcac = zero; + real mfacc = zero; + real mfcca = zero; + real mfaaa = zero; + real mfcaa = zero; + real mfaca = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mgcbb = zero; + real mgabb = zero; + real mgbcb = zero; + real mgbab = zero; + real mgbbc = zero; + real mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real m0, m1, m2, oMdrho; + real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz; + //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein + //real O3 = two - o; + //real residu, residutmp; + //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new; + real NeqOn = one;//zero;//one; //.... one = on ..... zero = off + real dxux; + real dyuy; + real dzuz; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position SWB -0.25f, -0.25f, -0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = -c1o4; + y = -c1o4; + z = -c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //real mxoff = -xoff; + //real myoff = -yoff; + //real mzoff = -zoff; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT; + //press = press_SWT * (c9o64 + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + + // press_NWT * (c3o64 + c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + + // press_SET * (c3o64 - c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + + // press_NET * (c1o64 - c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + + // press_NEB * (c3o64 - c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + + // press_NWB * (c9o64 + c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c9o64 - c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c27o64 + c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff); + //drho = drho_SWT * (c9o64 + c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + + // drho_NWT * (c3o64 + c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + + // drho_SET * (c3o64 - c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + + // drho_NET * (c1o64 - c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + + // drho_NEB * (c3o64 - c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + + // drho_NWB * (c9o64 + c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c9o64 - c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c27o64 + c9o16 * xoff + c9o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z )*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z); + dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z); + dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y); + mgcbb = (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index 0 + k000base = posFSWB[k]; + kM00base = neighborFX[k000base]; + k0M0base = neighborFY[k000base]; + k00Mbase = neighborFZ[k000base]; + kMM0base = neighborFY[kM00base]; + kM0Mbase = neighborFZ[kM00base]; + k0MMbase = neighborFZ[k0M0base]; + kMMMbase = neighborFZ[kMM0base]; + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k000base; + kM00 = kM00base; + k0M0 = k0M0base; + k00M = k00Mbase; + kMM0 = kMM0base; + kM0M = kM0Mbase; + k0MM = k0MMbase; + kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position SWT -0.25f, -0.25f, 0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = -c1o4; + y = -c1o4; + z = c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c1o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c27o64*drho_SWT; + //press = press_SWT * (c27o64 + c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + + // press_NWT * (c9o64 + c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + + // press_SET * (c9o64 - c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + + // press_NET * (c3o64 - c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + + // press_NEB * (c1o64 - c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + + // press_NWB * (c3o64 + c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c3o64 - c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c9o64 + c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff); + //drho = drho_SWT * (c27o64 + c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + + // drho_NWT * (c9o64 + c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + + // drho_SET * (c9o64 - c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + + // drho_NET * (c3o64 - c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + + // drho_NEB * (c1o64 - c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + + // drho_NWB * (c3o64 + c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c3o64 - c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c9o64 + c3o16 * xoff + c3o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z); + dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z); + dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y); + mgcbb = (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborFZ[k00M]; + kMM0 = kMMM; + kM0M = neighborFZ[kM0M]; + k0MM = neighborFZ[k0MM]; + kMMM = neighborFZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position SET 0.25f, -0.25f, 0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = c1o4; + y = -c1o4; + z = c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho =c3o64*drho_NEB+c9o64*drho_NET+c1o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c27o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT; + //press = press_SET * (c27o64 - c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + + // press_NET * (c9o64 - c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c9o64 + c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + + // press_NWT * (c3o64 + c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + + // press_NWB * (c1o64 + c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + + // press_NEB * (c3o64 - c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c3o64 + c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c9o64 - c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff); + //drho = drho_SET * (c27o64 - c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + + // drho_NET * (c9o64 - c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c9o64 + c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + + // drho_NWT * (c3o64 + c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + + // drho_NWB * (c1o64 + c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + + // drho_NEB * (c3o64 - c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c3o64 + c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c9o64 - c3o16 * xoff + c3o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z); + dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z); + dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y); + mgcbb = (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborFX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborFX[kMM0]; + kM0M = neighborFX[kM0M]; + k0MM = kMMM; + kMMM = neighborFX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position SEB 0.25f, -0.25f, -0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = c1o4; + y = -c1o4; + z = -c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho =c9o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c1o64*drho_NWT+c27o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT; + //press = press_SET * (c9o64 - c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + + // press_NET * (c3o64 - c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c3o64 + c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + + // press_NWT * (c1o64 + c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + + // press_NWB * (c3o64 + c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + + // press_NEB * (c9o64 - c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c9o64 + c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c27o64 - c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff); + //drho = drho_SET * (c9o64 - c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + + // drho_NET * (c3o64 - c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c3o64 + c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + + // drho_NWT * (c1o64 + c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + + // drho_NWB * (c3o64 + c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + + // drho_NEB * (c9o64 - c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c9o64 + c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c27o64 - c9o16 * xoff + c9o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z); + dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z); + dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y); + mgcbb = (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborFX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborFX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position NWB -0.25f, 0.25f, -0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = -c1o4; + y = c1o4; + z = -c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c9o64*drho_NEB+c3o64*drho_NET+c27o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c1o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT; + //press = press_NWT * (c9o64 + c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + + // press_NET * (c3o64 - c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c3o64 + c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + + // press_SET * (c1o64 - c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + + // press_SEB * (c3o64 - c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + + // press_NEB * (c9o64 - c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c9o64 + c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + + // press_NWB * (c27o64 + c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff); + //drho = drho_NWT * (c9o64 + c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + + // drho_NET * (c3o64 - c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c3o64 + c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + + // drho_SET * (c1o64 - c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + + // drho_SEB * (c3o64 - c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + + // drho_NEB * (c9o64 - c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c9o64 + c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + + // drho_NWB * (c27o64 + c9o16 * xoff - c9o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z); + dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z); + dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y); + mgcbb = (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index 0 + k000base = k0M0base; + kM00base = kMM0base; + k0M0base = neighborFY[k0M0base]; + k00Mbase = k0MMbase; + kMM0base = neighborFY[kMM0base]; + kM0Mbase = kMMMbase; + k0MMbase = neighborFY[k0MMbase]; + kMMMbase = neighborFY[kMMMbase]; + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k000base; + kM00 = kM00base; + k0M0 = k0M0base; + k00M = k00Mbase; + kMM0 = kMM0base; + kM0M = kM0Mbase; + k0MM = k0MMbase; + kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position NWT -0.25f, 0.25f, 0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = -c1o4; + y = c1o4; + z = c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c3o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c27o64*drho_NWT+c1o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT; + //press = press_NWT * (c27o64 + c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + + // press_NET * (c9o64 - c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c9o64 + c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + + // press_SET * (c3o64 - c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + + // press_SEB * (c1o64 - c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + + // press_NEB * (c3o64 - c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c3o64 + c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + + // press_NWB * (c9o64 + c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff); + //drho = drho_NWT * (c27o64 + c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + + // drho_NET * (c9o64 - c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c9o64 + c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + + // drho_SET * (c3o64 - c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + + // drho_SEB * (c1o64 - c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + + // drho_NEB * (c3o64 - c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c3o64 + c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + + // drho_NWB * (c9o64 + c3o16 * xoff - c3o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z); + dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z); + dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y); + mgcbb = (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborFZ[k00M]; + kMM0 = kMMM; + kM0M = neighborFZ[kM0M]; + k0MM = neighborFZ[k0MM]; + kMMM = neighborFZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position NET 0.25f, 0.25f, 0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = c1o4; + y = c1o4; + z = c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c9o64*drho_NEB+c27o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c1o64*drho_SWB+c3o64*drho_SWT; + //press = press_NET * (c27o64 - c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + + // press_NWT * (c9o64 + c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + + // press_SET * (c9o64 - c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c3o64 + c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + + // press_SWB * (c1o64 + c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + + // press_NWB * (c3o64 + c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c3o64 - c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + + // press_NEB * (c9o64 - c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff); + //drho = drho_NET * (c27o64 - c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + + // drho_NWT * (c9o64 + c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + + // drho_SET * (c9o64 - c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c3o64 + c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + + // drho_SWB * (c1o64 + c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + + // drho_NWB * (c3o64 + c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c3o64 - c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + + // drho_NEB * (c9o64 - c3o16 * xoff - c3o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z); + dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z); + dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y); + mgcbb = (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborFX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborFX[kMM0]; + kM0M = neighborFX[kM0M]; + k0MM = kMMM; + kMMM = neighborFX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position NEB 0.25f, 0.25f, -0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = c1o4; + y = c1o4; + z = -c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c27o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c1o64*drho_SWT; + //press = press_NET * (c9o64 - c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + + // press_NWT * (c3o64 + c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + + // press_SET * (c3o64 - c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c1o64 + c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + + // press_SWB * (c3o64 + c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + + // press_NWB * (c9o64 + c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c9o64 - c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + + // press_NEB * (c27o64 - c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff); + //drho = drho_NET * (c9o64 - c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + + // drho_NWT * (c3o64 + c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + + // drho_SET * (c3o64 - c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c1o64 + c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + + // drho_SWB * (c3o64 + c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + + // drho_NWB * (c9o64 + c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c9o64 - c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + + // drho_NEB * (c27o64 - c9o16 * xoff - c9o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z); + dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z); + dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y); + mgcbb = (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborFX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborFX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + } +} +////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posCSWB, + unsigned int* posFSWB, + unsigned int kCF, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + OffCF offCF) +{ + real + *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, + *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest, + *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; + + + fP00dest = &DF[dirE *size_MatF]; + fM00dest = &DF[dirW *size_MatF]; + f0P0dest = &DF[dirN *size_MatF]; + f0M0dest = &DF[dirS *size_MatF]; + f00Pdest = &DF[dirT *size_MatF]; + f00Mdest = &DF[dirB *size_MatF]; + fPP0dest = &DF[dirNE *size_MatF]; + fMM0dest = &DF[dirSW *size_MatF]; + fPM0dest = &DF[dirSE *size_MatF]; + fMP0dest = &DF[dirNW *size_MatF]; + fP0Pdest = &DF[dirTE *size_MatF]; + fM0Mdest = &DF[dirBW *size_MatF]; + fP0Mdest = &DF[dirBE *size_MatF]; + fM0Pdest = &DF[dirTW *size_MatF]; + f0PPdest = &DF[dirTN *size_MatF]; + f0MMdest = &DF[dirBS *size_MatF]; + f0PMdest = &DF[dirBN *size_MatF]; + f0MPdest = &DF[dirTS *size_MatF]; + f000dest = &DF[dirZERO*size_MatF]; + fMMMdest = &DF[dirBSW *size_MatF]; + fMMPdest = &DF[dirTSW *size_MatF]; + fMPPdest = &DF[dirTNW *size_MatF]; + fMPMdest = &DF[dirBNW *size_MatF]; + fPPMdest = &DF[dirBNE *size_MatF]; + fPPPdest = &DF[dirTNE *size_MatF]; + fPMPdest = &DF[dirTSE *size_MatF]; + fPMMdest = &DF[dirBSE *size_MatF]; + + real + *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, + *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource, + *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; + + if (evenOrOdd == true) + { + fP00source = &DC[dirE *size_MatC]; + fM00source = &DC[dirW *size_MatC]; + f0P0source = &DC[dirN *size_MatC]; + f0M0source = &DC[dirS *size_MatC]; + f00Psource = &DC[dirT *size_MatC]; + f00Msource = &DC[dirB *size_MatC]; + fPP0source = &DC[dirNE *size_MatC]; + fMM0source = &DC[dirSW *size_MatC]; + fPM0source = &DC[dirSE *size_MatC]; + fMP0source = &DC[dirNW *size_MatC]; + fP0Psource = &DC[dirTE *size_MatC]; + fM0Msource = &DC[dirBW *size_MatC]; + fP0Msource = &DC[dirBE *size_MatC]; + fM0Psource = &DC[dirTW *size_MatC]; + f0PPsource = &DC[dirTN *size_MatC]; + f0MMsource = &DC[dirBS *size_MatC]; + f0PMsource = &DC[dirBN *size_MatC]; + f0MPsource = &DC[dirTS *size_MatC]; + f000source = &DC[dirZERO*size_MatC]; + fMMMsource = &DC[dirBSW *size_MatC]; + fMMPsource = &DC[dirTSW *size_MatC]; + fMPPsource = &DC[dirTNW *size_MatC]; + fMPMsource = &DC[dirBNW *size_MatC]; + fPPMsource = &DC[dirBNE *size_MatC]; + fPPPsource = &DC[dirTNE *size_MatC]; + fPMPsource = &DC[dirTSE *size_MatC]; + fPMMsource = &DC[dirBSE *size_MatC]; + } + else + { + fP00source = &DC[dirW *size_MatC]; + fM00source = &DC[dirE *size_MatC]; + f0P0source = &DC[dirS *size_MatC]; + f0M0source = &DC[dirN *size_MatC]; + f00Psource = &DC[dirB *size_MatC]; + f00Msource = &DC[dirT *size_MatC]; + fPP0source = &DC[dirSW *size_MatC]; + fMM0source = &DC[dirNE *size_MatC]; + fPM0source = &DC[dirNW *size_MatC]; + fMP0source = &DC[dirSE *size_MatC]; + fP0Psource = &DC[dirBW *size_MatC]; + fM0Msource = &DC[dirTE *size_MatC]; + fP0Msource = &DC[dirTW *size_MatC]; + fM0Psource = &DC[dirBE *size_MatC]; + f0PPsource = &DC[dirBS *size_MatC]; + f0MMsource = &DC[dirTN *size_MatC]; + f0PMsource = &DC[dirTS *size_MatC]; + f0MPsource = &DC[dirBN *size_MatC]; + f000source = &DC[dirZERO*size_MatC]; + fMMMsource = &DC[dirTNE *size_MatC]; + fMMPsource = &DC[dirBNE *size_MatC]; + fMPPsource = &DC[dirBSE *size_MatC]; + fMPMsource = &DC[dirTSE *size_MatC]; + fPPMsource = &DC[dirTSW *size_MatC]; + fPPPsource = &DC[dirBSW *size_MatC]; + fPMPsource = &DC[dirBNW *size_MatC]; + fPMMsource = &DC[dirTNW *size_MatC]; + } + + Distributions6 G; + G.g[dirE] = &G6[dirE *size_MatF]; + G.g[dirW] = &G6[dirW *size_MatF]; + G.g[dirN] = &G6[dirN *size_MatF]; + G.g[dirS] = &G6[dirS *size_MatF]; + G.g[dirT] = &G6[dirT *size_MatF]; + G.g[dirB] = &G6[dirB *size_MatF]; + + //////////////////////////////////////////////////////////////////////////////// + const unsigned ix = threadIdx.x; // Globaler x-Index + const unsigned iy = blockIdx.x; // Globaler y-Index + const unsigned iz = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*iz + iy) + ix; + ////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////// + real eps_new = c1o2; + real omegaS = omCoarse;//-omCoarse; + real o = omFine;//-omFine; + real oP = o;//:( + //real op = one; + //real cu_sq; + + real xoff, yoff, zoff; + real xoff_sq, yoff_sq, zoff_sq; + + real vvx, vvy, vvz, vx2, vy2, vz2, drho; + real press;//,drho,vx1,vx2,vx3; + real /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP; + real /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP; + real /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP; + real /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP; + real /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM; + real /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM; + real /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM; + real /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM; + real fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM; + //real feqP00,feqM00,feq0P0,feq0M0,feq00P,feq00M,feqPP0,feqMM0,feqPM0,feqMP0,feqP0P,feqM0M,feqP0M,feqM0P,feq0PP,feq0MM,feq0PM,feq0MP,feq000,feqPPP, feqMMP, feqPMP, feqMPP, feqPPM, feqMMM, feqPMM, feqMPM; + real kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP; + real kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP; + real kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP; + real kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP; + real kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM; + real kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM; + real kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM; + real kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM; + real a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz; + real d0, dx, dy, dz, dxy, dxz, dyz, dxyz; + + real x,y,z; + + + if(k<kCF) + { + ////////////////////////////////////////////////////////////////////////// + xoff = offCF.xOffCF[k]; + yoff = offCF.yOffCF[k]; + zoff = offCF.zOffCF[k]; + xoff_sq = xoff * xoff; + yoff_sq = yoff * yoff; + zoff_sq = zoff * zoff; + ////////////////////////////////////////////////////////////////////////// + //SWB// + ////////////////////////////////////////////////////////////////////////// + //index 0 + unsigned int k000base = posCSWB[k]; + unsigned int kM00base = neighborCX[k000base]; + unsigned int k0M0base = neighborCY[k000base]; + unsigned int k00Mbase = neighborCZ[k000base]; + unsigned int kMM0base = neighborCY[kM00base]; + unsigned int kM0Mbase = neighborCZ[kM00base]; + unsigned int k0MMbase = neighborCZ[k0M0base]; + unsigned int kMMMbase = neighborCZ[kMM0base]; + ////////////////////////////////////////////////////////////////////////// + //index + unsigned int k000 = k000base; + unsigned int kM00 = kM00base; + unsigned int k0M0 = k0M0base; + unsigned int k00M = k00Mbase; + unsigned int kMM0 = kMM0base; + unsigned int kM0M = kM0Mbase; + unsigned int k0MM = k0MMbase; + unsigned int kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM); + vx2MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM); + vx3MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM); + + kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM))); + kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM))); + kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM))); + kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM))); + kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM))); + kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM))); + + ////////////////////////////////////////////////////////////////////////// + //SWT// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborCZ[k00M]; + kMM0 = kMMM; + kM0M = neighborCZ[kM0M]; + k0MM = neighborCZ[k0MM]; + kMMM = neighborCZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP); + vx2MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP); + vx3MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP); + + kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP))); + kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP))); + kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP))); + kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP))); + kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP))); + kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP))); + + ////////////////////////////////////////////////////////////////////////// + //SET// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborCX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborCX[kMM0]; + kM0M = neighborCX[kM0M]; + k0MM = kMMM; + kMMM = neighborCX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP); + vx2PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP); + vx3PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP); + + kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP))); + kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP))); + kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP))); + kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP))); + kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP))); + kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP))); + + ////////////////////////////////////////////////////////////////////////// + //SEB// + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborCX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborCX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM); + vx2PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM); + vx3PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM); + + kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM))); + kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM))); + kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM))); + kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM))); + kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM))); + kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM))); + + ////////////////////////////////////////////////////////////////////////// + //NWB// + ////////////////////////////////////////////////////////////////////////// + //index 0 + k000base = k0M0base; + kM00base = kMM0base; + k0M0base = neighborCY[k0M0base]; + k00Mbase = k0MMbase; + kMM0base = neighborCY[kMM0base]; + kM0Mbase = kMMMbase; + k0MMbase = neighborCY[k0MMbase]; + kMMMbase = neighborCY[kMMMbase]; + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k000base; + kM00 = kM00base; + k0M0 = k0M0base; + k00M = k00Mbase; + kMM0 = kMM0base; + kM0M = kM0Mbase; + k0MM = k0MMbase; + kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM); + vx2MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM); + vx3MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM); + + kxyFromfcNEQMPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM))); + kyzFromfcNEQMPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM))); + kxzFromfcNEQMPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM))); + kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM))); + kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM))); + kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM))); + + ////////////////////////////////////////////////////////////////////////// + //NWT// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborCZ[k00M]; + kMM0 = kMMM; + kM0M = neighborCZ[kM0M]; + k0MM = neighborCZ[k0MM]; + kMMM = neighborCZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP); + vx2MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP); + vx3MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP); + + kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP))); + kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP))); + kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP))); + kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP))); + kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP))); + kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP))); + + ////////////////////////////////////////////////////////////////////////// + //NET// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborCX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborCX[kMM0]; + kM0M = neighborCX[kM0M]; + k0MM = kMMM; + kMMM = neighborCX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP); + vx2PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP); + vx3PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP); + + kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP))); + kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP))); + kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP))); + kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP))); + kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP))); + kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP))); + + ////////////////////////////////////////////////////////////////////////// + //NEB// + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborCX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborCX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM); + vx2PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM); + vx3PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM); + + kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM))); + kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM))); + kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM))); + kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM))); + kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM))); + kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM))); + + ////////////////////////////////////////////////////////////////////////// + //3 + ////////////////////////////////////////////////////////////////////////// + a0 = c1o8*(((vx1PPM + vx1PPP) + (vx1MPM + vx1MPP)) + ((vx1PMM + vx1PMP) + (vx1MMM + vx1MMP))); + ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP))); + ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM))); + az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM))); + axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM))); + axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM))); + ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP))); + axyz= ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ; + b0 = c1o8*(((vx2PPM + vx2PPP) + (vx2MPM + vx2MPP)) + ((vx2PMM + vx2PMP) + (vx2MMM + vx2MMP))); + bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP))); + by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM))); + bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM))); + bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM))); + bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP))); + byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM))); + bxyz= ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ; + c0 = c1o8*(((vx3PPM + vx3PPP) + (vx3MPM + vx3MPP)) + ((vx3PMM + vx3PMP) + (vx3MMM + vx3MMP))); + cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP))); + cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM))); + cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM))); + cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM))); + cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP))); + cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP))); + cxyz= ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ; + + //bxx = zero; + //cxx = zero; + //ayy = zero; + //cyy = zero; + //azz = zero; + //bzz = zero; + //axx = zero; + //byy = zero; + //czz = zero; + + bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy; + cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz; + + ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy; + cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz; + + azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz; + bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz; + + axx = (c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy) + + (c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz); + + byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy) + + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz); + + czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz) + + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz); + + a0 -= c1o4*(axx + ayy + azz); + b0 -= c1o4*(bxx + byy + bzz); + c0 -= c1o4*(cxx + cyy + czz); + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real kxyAverage = zero; + real kyzAverage = zero; + real kxzAverage = zero; + real kxxMyyAverage = zero; + real kxxMzzAverage = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Press + //d0 = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8; + //dx = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4; + //dy = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4; + //dz = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4; + //dxy = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2; + //dxz = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2; + //dyz = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2; + //dxyz = -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho + d0 = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8; + dx = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4; + dy = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4; + dz = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4; + dxy = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2; + dxz = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2; + dyz = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // Bernd das Brot + // + // X------X + // | | x---x + // | ---+-+-> | ----> off-vector + // | | x---x + // X------X + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz; + ax = ax + two * xoff * axx + yoff * axy + zoff * axz; + ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz; + az = az + two * zoff * azz + xoff * axz + yoff * ayz; + b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz; + bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz; + by = by + two * yoff * byy + xoff * bxy + zoff * byz; + bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz; + c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz; + cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz; + cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz; + cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz; + d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz; + dx = dx + yoff * dxy + zoff * dxz; + dy = dy + xoff * dxy + zoff * dyz; + dz = dz + xoff * dxz + yoff * dyz; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = zero; + real mfabb = zero; + real mfbcb = zero; + real mfbab = zero; + real mfbbc = zero; + real mfbba = zero; + real mfccb = zero; + real mfaab = zero; + real mfcab = zero; + real mfacb = zero; + real mfcbc = zero; + real mfaba = zero; + real mfcba = zero; + real mfabc = zero; + real mfbcc = zero; + real mfbaa = zero; + real mfbca = zero; + real mfbac = zero; + real mfbbb = zero; + real mfccc = zero; + real mfaac = zero; + real mfcac = zero; + real mfacc = zero; + real mfcca = zero; + real mfaaa = zero; + real mfcaa = zero; + real mfaca = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mgcbb = zero; + real mgabb = zero; + real mgbcb = zero; + real mgbab = zero; + real mgbbc = zero; + real mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real m0, m1, m2, oMdrho; + real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz; + //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein + //real O3 = two - o; + //real residu, residutmp; + //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new; + real NeqOn = one;//zero;//one; //.... one = on ..... zero = off + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position SWB -0.25f, -0.25f, -0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = -c1o4; + y = -c1o4; + z = -c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //real mxoff = -xoff; + //real myoff = -yoff; + //real mzoff = -zoff; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT; + //press = press_SWT * (c9o64 + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + + // press_NWT * (c3o64 + c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + + // press_SET * (c3o64 - c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + + // press_NET * (c1o64 - c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + + // press_NEB * (c3o64 - c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + + // press_NWB * (c9o64 + c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c9o64 - c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c27o64 + c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff); + //drho = drho_SWT * (c9o64 + c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + + // drho_NWT * (c3o64 + c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + + // drho_SET * (c3o64 - c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + + // drho_NET * (c1o64 - c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + + // drho_NEB * (c3o64 - c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + + // drho_NWB * (c9o64 + c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c9o64 - c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c27o64 + c9o16 * xoff + c9o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z )*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - axx) * eps_new; + mgabb = (ax + axx) * eps_new; + mgbcb = (by - byy) * eps_new; + mgbab = (by + byy) * eps_new; + mgbbc = (cz - czz) * eps_new; + mgbba = (cz + czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index 0 + k000base = posFSWB[k]; + kM00base = neighborFX[k000base]; + k0M0base = neighborFY[k000base]; + k00Mbase = neighborFZ[k000base]; + kMM0base = neighborFY[kM00base]; + kM0Mbase = neighborFZ[kM00base]; + k0MMbase = neighborFZ[k0M0base]; + kMMMbase = neighborFZ[kMM0base]; + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k000base; + kM00 = kM00base; + k0M0 = k0M0base; + k00M = k00Mbase; + kMM0 = kMM0base; + kM0M = kM0Mbase; + k0MM = k0MMbase; + kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position SWT -0.25f, -0.25f, 0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = -c1o4; + y = -c1o4; + z = c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c1o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c27o64*drho_SWT; + //press = press_SWT * (c27o64 + c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + + // press_NWT * (c9o64 + c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + + // press_SET * (c9o64 - c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + + // press_NET * (c3o64 - c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + + // press_NEB * (c1o64 - c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + + // press_NWB * (c3o64 + c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c3o64 - c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c9o64 + c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff); + //drho = drho_SWT * (c27o64 + c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + + // drho_NWT * (c9o64 + c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + + // drho_SET * (c9o64 - c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + + // drho_NET * (c3o64 - c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + + // drho_NEB * (c1o64 - c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + + // drho_NWB * (c3o64 + c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c3o64 - c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c9o64 + c3o16 * xoff + c3o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - axx) * eps_new; + mgabb = (ax + axx) * eps_new; + mgbcb = (by - byy) * eps_new; + mgbab = (by + byy) * eps_new; + mgbbc = (cz - czz) * eps_new; + mgbba = (cz + czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborFZ[k00M]; + kMM0 = kMMM; + kM0M = neighborFZ[kM0M]; + k0MM = neighborFZ[k0MM]; + kMMM = neighborFZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position SET 0.25f, -0.25f, 0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = c1o4; + y = -c1o4; + z = c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho =c3o64*drho_NEB+c9o64*drho_NET+c1o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c27o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT; + //press = press_SET * (c27o64 - c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + + // press_NET * (c9o64 - c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c9o64 + c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + + // press_NWT * (c3o64 + c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + + // press_NWB * (c1o64 + c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + + // press_NEB * (c3o64 - c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c3o64 + c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c9o64 - c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff); + //drho = drho_SET * (c27o64 - c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + + // drho_NET * (c9o64 - c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c9o64 + c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + + // drho_NWT * (c3o64 + c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + + // drho_NWB * (c1o64 + c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + + // drho_NEB * (c3o64 - c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c3o64 + c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c9o64 - c3o16 * xoff + c3o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - axx) * eps_new; + mgabb = (ax + axx) * eps_new; + mgbcb = (by - byy) * eps_new; + mgbab = (by + byy) * eps_new; + mgbbc = (cz - czz) * eps_new; + mgbba = (cz + czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborFX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborFX[kMM0]; + kM0M = neighborFX[kM0M]; + k0MM = kMMM; + kMMM = neighborFX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position SEB 0.25f, -0.25f, -0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = c1o4; + y = -c1o4; + z = -c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho =c9o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c1o64*drho_NWT+c27o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT; + //press = press_SET * (c9o64 - c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + + // press_NET * (c3o64 - c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c3o64 + c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + + // press_NWT * (c1o64 + c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + + // press_NWB * (c3o64 + c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + + // press_NEB * (c9o64 - c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c9o64 + c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c27o64 - c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff); + //drho = drho_SET * (c9o64 - c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + + // drho_NET * (c3o64 - c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c3o64 + c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + + // drho_NWT * (c1o64 + c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + + // drho_NWB * (c3o64 + c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + + // drho_NEB * (c9o64 - c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c9o64 + c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c27o64 - c9o16 * xoff + c9o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - axx) * eps_new; + mgabb = (ax + axx) * eps_new; + mgbcb = (by - byy) * eps_new; + mgbab = (by + byy) * eps_new; + mgbbc = (cz - czz) * eps_new; + mgbba = (cz + czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborFX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborFX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position NWB -0.25f, 0.25f, -0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = -c1o4; + y = c1o4; + z = -c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c9o64*drho_NEB+c3o64*drho_NET+c27o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c1o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT; + //press = press_NWT * (c9o64 + c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + + // press_NET * (c3o64 - c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c3o64 + c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + + // press_SET * (c1o64 - c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + + // press_SEB * (c3o64 - c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + + // press_NEB * (c9o64 - c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c9o64 + c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + + // press_NWB * (c27o64 + c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff); + //drho = drho_NWT * (c9o64 + c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + + // drho_NET * (c3o64 - c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c3o64 + c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + + // drho_SET * (c1o64 - c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + + // drho_SEB * (c3o64 - c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + + // drho_NEB * (c9o64 - c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c9o64 + c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + + // drho_NWB * (c27o64 + c9o16 * xoff - c9o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - axx) * eps_new; + mgabb = (ax + axx) * eps_new; + mgbcb = (by - byy) * eps_new; + mgbab = (by + byy) * eps_new; + mgbbc = (cz - czz) * eps_new; + mgbba = (cz + czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index 0 + k000base = k0M0base; + kM00base = kMM0base; + k0M0base = neighborFY[k0M0base]; + k00Mbase = k0MMbase; + kMM0base = neighborFY[kMM0base]; + kM0Mbase = kMMMbase; + k0MMbase = neighborFY[k0MMbase]; + kMMMbase = neighborFY[kMMMbase]; + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k000base; + kM00 = kM00base; + k0M0 = k0M0base; + k00M = k00Mbase; + kMM0 = kMM0base; + kM0M = kM0Mbase; + k0MM = k0MMbase; + kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position NWT -0.25f, 0.25f, 0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = -c1o4; + y = c1o4; + z = c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c3o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c27o64*drho_NWT+c1o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT; + //press = press_NWT * (c27o64 + c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + + // press_NET * (c9o64 - c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c9o64 + c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + + // press_SET * (c3o64 - c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + + // press_SEB * (c1o64 - c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + + // press_NEB * (c3o64 - c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + + // press_SWB * (c3o64 + c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + + // press_NWB * (c9o64 + c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff); + //drho = drho_NWT * (c27o64 + c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + + // drho_NET * (c9o64 - c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c9o64 + c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + + // drho_SET * (c3o64 - c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + + // drho_SEB * (c1o64 - c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + + // drho_NEB * (c3o64 - c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + + // drho_SWB * (c3o64 + c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + + // drho_NWB * (c9o64 + c3o16 * xoff - c3o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - axx) * eps_new; + mgabb = (ax + axx) * eps_new; + mgbcb = (by - byy) * eps_new; + mgbab = (by + byy) * eps_new; + mgbbc = (cz - czz) * eps_new; + mgbba = (cz + czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborFZ[k00M]; + kMM0 = kMMM; + kM0M = neighborFZ[kM0M]; + k0MM = neighborFZ[k0MM]; + kMMM = neighborFZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position NET 0.25f, 0.25f, 0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = c1o4; + y = c1o4; + z = c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c9o64*drho_NEB+c27o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c1o64*drho_SWB+c3o64*drho_SWT; + //press = press_NET * (c27o64 - c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + + // press_NWT * (c9o64 + c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + + // press_SET * (c9o64 - c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c3o64 + c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + + // press_SWB * (c1o64 + c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + + // press_NWB * (c3o64 + c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c3o64 - c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + + // press_NEB * (c9o64 - c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff); + //drho = drho_NET * (c27o64 - c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + + // drho_NWT * (c9o64 + c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + + // drho_SET * (c9o64 - c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c3o64 + c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + + // drho_SWB * (c1o64 + c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + + // drho_NWB * (c3o64 + c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c3o64 - c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + + // drho_NEB * (c9o64 - c3o16 * xoff - c3o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - axx) * eps_new; + mgabb = (ax + axx) * eps_new; + mgbcb = (by - byy) * eps_new; + mgbab = (by + byy) * eps_new; + mgbbc = (cz - czz) * eps_new; + mgbba = (cz + czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborFX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborFX[kMM0]; + kM0M = neighborFX[kM0M]; + k0MM = kMMM; + kMMM = neighborFX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + + + //reset + mfcbb = zero; + mfabb = zero; + mfbcb = zero; + mfbab = zero; + mfbbc = zero; + mfbba = zero; + mfccb = zero; + mfaab = zero; + mfcab = zero; + mfacb = zero; + mfcbc = zero; + mfaba = zero; + mfcba = zero; + mfabc = zero; + mfbcc = zero; + mfbaa = zero; + mfbca = zero; + mfbac = zero; + mfbbb = zero; + mfccc = zero; + mfaac = zero; + mfcac = zero; + mfacc = zero; + mfcca = zero; + mfaaa = zero; + mfcaa = zero; + mfaca = zero; + ///////////// + mgcbb = zero; + mgabb = zero; + mgbcb = zero; + mgbab = zero; + mgbbc = zero; + mgbba = zero; + + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position NEB 0.25f, 0.25f, -0.25f + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + x = c1o4; + y = c1o4; + z = -c1o4; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho = c27o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c1o64*drho_SWT; + //press = press_NET * (c9o64 - c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + + // press_NWT * (c3o64 + c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + + // press_SET * (c3o64 - c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + + // press_SWT * (c1o64 + c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + + // press_SWB * (c3o64 + c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + + // press_NWB * (c9o64 + c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + + // press_SEB * (c9o64 - c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + + // press_NEB * (c27o64 - c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff); + //drho = drho_NET * (c9o64 - c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + + // drho_NWT * (c3o64 + c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + + // drho_SET * (c3o64 - c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + + // drho_SWT * (c1o64 + c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + + // drho_SWB * (c3o64 + c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + + // drho_NWB * (c9o64 + c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + + // drho_SEB * (c9o64 - c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + + // drho_NEB * (c27o64 - c9o16 * xoff - c9o16 * yoff + c9o16 * zoff); + press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz; + vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz); + vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz); + vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz); + //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz); + //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz); + //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz); + + //mfaaa = drho; + //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //2.f + // linear combinations + mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press); + //mxxMyy = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o; + //mfbab = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o; + //mfbba = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o; + + mxxMyy = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press); + mxxMzz = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press); + + mfabb = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press); + mfbab = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press); + mfbba = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press); + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //three + // linear combinations + //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z); + //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit); + //residu = -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z)); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y); + //residu = -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new; + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y)); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z); + //residu = -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new; + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - axx) * eps_new; + mgabb = (ax + axx) * eps_new; + mgbcb = (by - byy) * eps_new; + mgbab = (by + byy) * eps_new; + mgbbc = (cz - czz) * eps_new; + mgbba = (cz + czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4.f + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborFX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborFX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + } +} +////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/VirtualFluids_GPU/GPU/ScaleFC27.cu b/src/VirtualFluids_GPU/GPU/ScaleFC27.cu index 354494d34..85f67cc91 100644 --- a/src/VirtualFluids_GPU/GPU/ScaleFC27.cu +++ b/src/VirtualFluids_GPU/GPU/ScaleFC27.cu @@ -1,1247 +1,13 @@ +// _ ___ __ __________ _ __ ______________ __ +// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / +// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / +// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / +// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ +// +////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/D3Q27.h" -//#include "LBM/LB.h" #include "GPU/constant.h" - -////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC, - real* DF, - real* G6, - unsigned int* neighborCX, - unsigned int* neighborCY, - unsigned int* neighborCZ, - unsigned int* neighborFX, - unsigned int* neighborFY, - unsigned int* neighborFZ, - unsigned int size_MatC, - unsigned int size_MatF, - bool evenOrOdd, - unsigned int* posC, - unsigned int* posFSWB, - unsigned int kFC, - real omCoarse, - real omFine, - real nu, - unsigned int nxC, - unsigned int nyC, - unsigned int nxF, - unsigned int nyF, - OffFC offFC) -{ - real - *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, - *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource, - *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; - - - fP00source = &DF[dirE *size_MatF]; - fM00source = &DF[dirW *size_MatF]; - f0P0source = &DF[dirN *size_MatF]; - f0M0source = &DF[dirS *size_MatF]; - f00Psource = &DF[dirT *size_MatF]; - f00Msource = &DF[dirB *size_MatF]; - fPP0source = &DF[dirNE *size_MatF]; - fMM0source = &DF[dirSW *size_MatF]; - fPM0source = &DF[dirSE *size_MatF]; - fMP0source = &DF[dirNW *size_MatF]; - fP0Psource = &DF[dirTE *size_MatF]; - fM0Msource = &DF[dirBW *size_MatF]; - fP0Msource = &DF[dirBE *size_MatF]; - fM0Psource = &DF[dirTW *size_MatF]; - f0PPsource = &DF[dirTN *size_MatF]; - f0MMsource = &DF[dirBS *size_MatF]; - f0PMsource = &DF[dirBN *size_MatF]; - f0MPsource = &DF[dirTS *size_MatF]; - f000source = &DF[dirZERO*size_MatF]; - fMMMsource = &DF[dirBSW *size_MatF]; - fMMPsource = &DF[dirTSW *size_MatF]; - fMPPsource = &DF[dirTNW *size_MatF]; - fMPMsource = &DF[dirBNW *size_MatF]; - fPPMsource = &DF[dirBNE *size_MatF]; - fPPPsource = &DF[dirTNE *size_MatF]; - fPMPsource = &DF[dirTSE *size_MatF]; - fPMMsource = &DF[dirBSE *size_MatF]; - - real - *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, - *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest, - *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; - - if (evenOrOdd==true) - { - fP00dest = &DC[dirE *size_MatC]; - fM00dest = &DC[dirW *size_MatC]; - f0P0dest = &DC[dirN *size_MatC]; - f0M0dest = &DC[dirS *size_MatC]; - f00Pdest = &DC[dirT *size_MatC]; - f00Mdest = &DC[dirB *size_MatC]; - fPP0dest = &DC[dirNE *size_MatC]; - fMM0dest = &DC[dirSW *size_MatC]; - fPM0dest = &DC[dirSE *size_MatC]; - fMP0dest = &DC[dirNW *size_MatC]; - fP0Pdest = &DC[dirTE *size_MatC]; - fM0Mdest = &DC[dirBW *size_MatC]; - fP0Mdest = &DC[dirBE *size_MatC]; - fM0Pdest = &DC[dirTW *size_MatC]; - f0PPdest = &DC[dirTN *size_MatC]; - f0MMdest = &DC[dirBS *size_MatC]; - f0PMdest = &DC[dirBN *size_MatC]; - f0MPdest = &DC[dirTS *size_MatC]; - f000dest = &DC[dirZERO*size_MatC]; - fMMMdest = &DC[dirBSW *size_MatC]; - fMMPdest = &DC[dirTSW *size_MatC]; - fMPPdest = &DC[dirTNW *size_MatC]; - fMPMdest = &DC[dirBNW *size_MatC]; - fPPMdest = &DC[dirBNE *size_MatC]; - fPPPdest = &DC[dirTNE *size_MatC]; - fPMPdest = &DC[dirTSE *size_MatC]; - fPMMdest = &DC[dirBSE *size_MatC]; - } - else - { - fP00dest = &DC[dirW *size_MatC]; - fM00dest = &DC[dirE *size_MatC]; - f0P0dest = &DC[dirS *size_MatC]; - f0M0dest = &DC[dirN *size_MatC]; - f00Pdest = &DC[dirB *size_MatC]; - f00Mdest = &DC[dirT *size_MatC]; - fPP0dest = &DC[dirSW *size_MatC]; - fMM0dest = &DC[dirNE *size_MatC]; - fPM0dest = &DC[dirNW *size_MatC]; - fMP0dest = &DC[dirSE *size_MatC]; - fP0Pdest = &DC[dirBW *size_MatC]; - fM0Mdest = &DC[dirTE *size_MatC]; - fP0Mdest = &DC[dirTW *size_MatC]; - fM0Pdest = &DC[dirBE *size_MatC]; - f0PPdest = &DC[dirBS *size_MatC]; - f0MMdest = &DC[dirTN *size_MatC]; - f0PMdest = &DC[dirTS *size_MatC]; - f0MPdest = &DC[dirBN *size_MatC]; - f000dest = &DC[dirZERO*size_MatC]; - fMMMdest = &DC[dirTNE *size_MatC]; - fMMPdest = &DC[dirBNE *size_MatC]; - fMPPdest = &DC[dirBSE *size_MatC]; - fMPMdest = &DC[dirTSE *size_MatC]; - fPPMdest = &DC[dirTSW *size_MatC]; - fPPPdest = &DC[dirBSW *size_MatC]; - fPMPdest = &DC[dirBNW *size_MatC]; - fPMMdest = &DC[dirTNW *size_MatC]; - } - - Distributions6 G; - if (evenOrOdd == true) - { - G.g[dirE] = &G6[dirE *size_MatC]; - G.g[dirW] = &G6[dirW *size_MatC]; - G.g[dirN] = &G6[dirN *size_MatC]; - G.g[dirS] = &G6[dirS *size_MatC]; - G.g[dirT] = &G6[dirT *size_MatC]; - G.g[dirB] = &G6[dirB *size_MatC]; - } - else - { - G.g[dirW] = &G6[dirE *size_MatC]; - G.g[dirE] = &G6[dirW *size_MatC]; - G.g[dirS] = &G6[dirN *size_MatC]; - G.g[dirN] = &G6[dirS *size_MatC]; - G.g[dirB] = &G6[dirT *size_MatC]; - G.g[dirT] = &G6[dirB *size_MatC]; - } - - //////////////////////////////////////////////////////////////////////////////// - const unsigned ix = threadIdx.x; // Globaler x-Index - const unsigned iy = blockIdx.x; // Globaler y-Index - const unsigned iz = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*iz + iy) + ix; - ////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////// - real eps_new = two; - real omegaS = omFine;//-omFine; - real o = omCoarse;//-omCoarse; - //real op = one; - //real cu_sq; - - real xoff, yoff, zoff; - real xoff_sq, yoff_sq, zoff_sq; - - real vvx, vvy, vvz, vx2, vy2, vz2, drho; - real press;//,drho,vx1,vx2,vx3; - real /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM; - real /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP; - real /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP; - real /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM; - real /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM; - real /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP; - real /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP; - real /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM; - real fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM; - real kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM; - real kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP; - real kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP; - real kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM; - real kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM; - real kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP; - real kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP; - real kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM; - real a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/; - real d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/; - - if(k<kFC) - { - ////////////////////////////////////////////////////////////////////////// - xoff = offFC.xOffFC[k]; - yoff = offFC.yOffFC[k]; - zoff = offFC.zOffFC[k]; - xoff_sq = xoff * xoff; - yoff_sq = yoff * yoff; - zoff_sq = zoff * zoff; - ////////////////////////////////////////////////////////////////////////// - //SWB// - ////////////////////////////////////////////////////////////////////////// - //index 0 - unsigned int k000base = posFSWB[k]; - unsigned int kM00base = neighborFX[k000base]; - unsigned int k0M0base = neighborFY[k000base]; - unsigned int k00Mbase = neighborFZ[k000base]; - unsigned int kMM0base = neighborFY[kM00base]; - unsigned int kM0Mbase = neighborFZ[kM00base]; - unsigned int k0MMbase = neighborFZ[k0M0base]; - unsigned int kMMMbase = neighborFZ[kMM0base]; - ////////////////////////////////////////////////////////////////////////// - //index - unsigned int k000 = k000base; - unsigned int kM00 = kM00base; - unsigned int k0M0 = k0M0base; - unsigned int k00M = k00Mbase; - unsigned int kMM0 = kMM0base; - unsigned int kM0M = kM0Mbase; - unsigned int k0MM = k0MMbase; - unsigned int kMMM = kMMMbase; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1MMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM); - vx2MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM); - vx3MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM); - - kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM))); - kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM))); - kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM))); - kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM))); - kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM))); - kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM))); - - ////////////////////////////////////////////////////////////////////////// - //SWT// - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k00M; - kM00 = kM0M; - k0M0 = k0MM; - k00M = neighborFZ[k00M]; - kMM0 = kMMM; - kM0M = neighborFZ[kM0M]; - k0MM = neighborFZ[k0MM]; - kMMM = neighborFZ[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1MMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP); - vx2MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP); - vx3MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP); - - kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP))); - kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP))); - kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP))); - kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP))); - kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP))); - kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP))); - - ////////////////////////////////////////////////////////////////////////// - //SET// - ////////////////////////////////////////////////////////////////////////// - //index - k000 = kM00; - kM00 = neighborFX[kM00]; - k0M0 = kMM0; - k00M = kM0M; - kMM0 = neighborFX[kMM0]; - kM0M = neighborFX[kM0M]; - k0MM = kMMM; - kMMM = neighborFX[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1PMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP); - vx2PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP); - vx3PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP); - - kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP))); - kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP))); - kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP))); - kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP))); - kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP))); - kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP))); - - ////////////////////////////////////////////////////////////////////////// - //SEB// - ////////////////////////////////////////////////////////////////////////// - //index - k00M = k000; - kM0M = kM00; - k0MM = k0M0; - kMMM = kMM0; - k000 = kM00base; - kM00 = neighborFX[kM00base]; - k0M0 = kMM0base; - kMM0 = neighborFX[kMM0base]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1PMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM); - vx2PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM); - vx3PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM); - - kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM))); - kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM))); - kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM))); - kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM))); - kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM))); - kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM))); - - ////////////////////////////////////////////////////////////////////////// - //NWB// - ////////////////////////////////////////////////////////////////////////// - //index 0 - k000base = k0M0base; - kM00base = kMM0base; - k0M0base = neighborFY[k0M0base]; - k00Mbase = k0MMbase; - kMM0base = neighborFY[kMM0base]; - kM0Mbase = kMMMbase; - k0MMbase = neighborFY[k0MMbase]; - kMMMbase = neighborFY[kMMMbase]; - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k000base; - kM00 = kM00base; - k0M0 = k0M0base; - k00M = k00Mbase; - kMM0 = kMM0base; - kM0M = kM0Mbase; - k0MM = k0MMbase; - kMMM = kMMMbase; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1MPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM); - vx2MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM); - vx3MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM); - - kxyFromfcNEQMPM = -three*omegaS* ((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM))); - kyzFromfcNEQMPM = -three*omegaS* ((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM))); - kxzFromfcNEQMPM = -three*omegaS* ((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM))); - kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM))); - kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM))); - kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM))); - - ////////////////////////////////////////////////////////////////////////// - //NWT// - ////////////////////////////////////////////////////////////////////////// - //index - k000 = k00M; - kM00 = kM0M; - k0M0 = k0MM; - k00M = neighborFZ[k00M]; - kMM0 = kMMM; - kM0M = neighborFZ[kM0M]; - k0MM = neighborFZ[k0MM]; - kMMM = neighborFZ[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1MPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP); - vx2MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP); - vx3MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP); - - kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP))); - kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP))); - kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP))); - kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP))); - kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP))); - kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP))); - - ////////////////////////////////////////////////////////////////////////// - //NET// - ////////////////////////////////////////////////////////////////////////// - //index - k000 = kM00; - kM00 = neighborFX[kM00]; - k0M0 = kMM0; - k00M = kM0M; - kMM0 = neighborFX[kMM0]; - kM0M = neighborFX[kM0M]; - k0MM = kMMM; - kMMM = neighborFX[kMMM]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1PPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP); - vx2PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP); - vx3PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP); - - kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP))); - kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP))); - kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP))); - kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP))); - kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP))); - kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP))); - - ////////////////////////////////////////////////////////////////////////// - //NEB// - ////////////////////////////////////////////////////////////////////////// - //index - k00M = k000; - kM0M = kM00; - k0MM = k0M0; - kMMM = kMM0; - k000 = kM00base; - kM00 = neighborFX[kM00base]; - k0M0 = kMM0base; - kMM0 = neighborFX[kMM0base]; - //////////////////////////////////////////////////////////////////////////////// - fP00 = fP00source[k000]; - fM00 = fM00source[kM00]; - f0P0 = f0P0source[k000]; - f0M0 = f0M0source[k0M0]; - f00P = f00Psource[k000]; - f00M = f00Msource[k00M]; - fPP0 = fPP0source[k000]; - fMM0 = fMM0source[kMM0]; - fPM0 = fPM0source[k0M0]; - fMP0 = fMP0source[kM00]; - fP0P = fP0Psource[k000]; - fM0M = fM0Msource[kM0M]; - fP0M = fP0Msource[k00M]; - fM0P = fM0Psource[kM00]; - f0PP = f0PPsource[k000]; - f0MM = f0MMsource[k0MM]; - f0PM = f0PMsource[k00M]; - f0MP = f0MPsource[k0M0]; - f000 = f000source[k000]; - fMMM = fMMMsource[kMMM]; - fMMP = fMMPsource[kMM0]; - fMPP = fMPPsource[kM00]; - fMPM = fMPMsource[kM0M]; - fPPM = fPPMsource[k00M]; - fPPP = fPPPsource[k000]; - fPMP = fPMPsource[k0M0]; - fPMM = fPMMsource[k0MM]; - - drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; - vx1PPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM); - vx2PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM); - vx3PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM); - - kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM))); - kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM))); - kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM))); - kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM))); - kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM))); - kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM))); - - ////////////////////////////////////////////////////////////////////////// - //3 - ////////////////////////////////////////////////////////////////////////// - a0 = c1o8*(((vx1PPM + vx1MMP) + (vx1MPM + vx1PMP)) + ((vx1PMM + vx1MPP) + (vx1MMM + vx1PPP))); - ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP))); - ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM))); - az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM))); - axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM))); - axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM))); - ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP))); - //axyz= ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ; - b0 = c1o8*(((vx2PPM + vx2MMP) + (vx2MPM + vx2PMP)) + ((vx2PMM + vx2MPP) + (vx2MMM + vx2PPP))); - bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP))); - by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM))); - bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM))); - bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM))); - bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP))); - byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM))); - //bxyz= ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ; - c0 = c1o8*(((vx3PPM + vx3MMP) + (vx3MPM + vx3PMP)) + ((vx3PMM + vx3MPP) + (vx3MMM + vx3PPP))); - cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP))); - cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM))); - cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM))); - cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM))); - cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP))); - cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP))); - //cxyz= ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ; - - //bxx = zero; - //cxx = zero; - //ayy = zero; - //cyy = zero; - //azz = zero; - //bzz = zero; - //axx = zero; - //byy = zero; - //czz = zero; - - bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy; - cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz; - - ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy; - cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz; - - azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz; - bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz; - - axx = ( c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy) - + ( c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz); - - byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy) - + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz); - - czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz) - + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz); - - a0 -= c1o4*(axx + ayy + azz); - b0 -= c1o4*(bxx + byy + bzz); - c0 -= c1o4*(cxx + cyy + czz); - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real kxyAverage = zero; - real kyzAverage = zero; - real kxzAverage = zero; - real kxxMyyAverage = zero; - real kxxMzzAverage = zero; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////Press - //d0 = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8; - //dx = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4; - //dy = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4; - //dz = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4; - //dxy = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2; - //dxz = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2; - //dyz = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2; - //dxyz = -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //drho - d0 = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8; - dx = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4; - dy = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4; - dz = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4; - dxy = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2; - dxz = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2; - dyz = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - // Bernd das Brot - // - // - // x------x - // | | - // | ---+--->X - // | | \ - // x------x \ - // off-vector - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz; - ax = ax + two * xoff * axx + yoff * axy + zoff * axz; - ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz; - az = az + two * zoff * azz + xoff * axz + yoff * ayz; - b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz; - bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz; - by = by + two * yoff * byy + xoff * bxy + zoff * byz; - bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz; - c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz; - cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz; - cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz; - cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz; - d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = zero; - real mfabb = zero; - real mfbcb = zero; - real mfbab = zero; - real mfbbc = zero; - real mfbba = zero; - real mfccb = zero; - real mfaab = zero; - real mfcab = zero; - real mfacb = zero; - real mfcbc = zero; - real mfaba = zero; - real mfcba = zero; - real mfabc = zero; - real mfbcc = zero; - real mfbaa = zero; - real mfbca = zero; - real mfbac = zero; - real mfbbb = zero; - real mfccc = zero; - real mfaac = zero; - real mfcac = zero; - real mfacc = zero; - real mfcca = zero; - real mfaaa = zero; - real mfcaa = zero; - real mfaca = zero; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = zero; - real mgabb = zero; - real mgbcb = zero; - real mgbab = zero; - real mgbbc = zero; - real mgbba = zero; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real m0, m1, m2, oMdrho; - real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz; - real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein - real O3 = two - o; - real residu, residutmp; - residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new; - real NeqOn = one;//zero;//one; //.... one = on ..... zero = off - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - //Position C 0., 0., 0. - // - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //x = 0.; - //y = 0.; - //z = 0.; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //real mxoff = -xoff; - //real myoff = -yoff; - //real mzoff = -zoff; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //press = pressPPP * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + - // pressMPP * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + - // pressPMP * (c1o8 - c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + - // pressMMP * (c1o8 + c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + - // pressPPM * (c1o8 - c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + - // pressMPM * (c1o8 + c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + - // pressPMM * (c1o8 - c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff) + - // pressMMM * (c1o8 + c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff); - //drho = drhoPPP * (c1o8 - c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + - // drhoMPP * (c1o8 + c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + - // drhoPMP * (c1o8 - c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + - // drhoMMP * (c1o8 + c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + - // drhoPPM * (c1o8 - c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + - // drhoMPM * (c1o8 + c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + - // drhoPMM * (c1o8 - c1o4 * xoff + c1o4 * yoff + c1o4 * zoff) + - // drhoMMM * (c1o8 + c1o4 * xoff + c1o4 * yoff + c1o4 * zoff); - press = d0; - vvx = a0; - vvy = b0; - vvz = c0; - - //mfaaa = drho; - //mfaaa = press + (ax+by+cz)/three; // 1/3 = 2/3*(1/op-1/2) - mfaaa = press; // if drho is interpolated directly - - vx2 = vvx*vvx; - vy2 = vvy*vvy; - vz2 = vvz*vvz; - oMdrho = one; - //oMdrho = one - mfaaa; - - //two - // linear combinations - real oP = o;// :( - mxxPyyPzz = mfaaa -c2o3*(ax+by+cz)*eps_new/oP*(one+press); - //mxxMyy = -c2o3*(ax - by)*eps_new/o; - //mxxMzz = -c2o3*(ax - cz)*eps_new/o; - - //mfabb = -c1o3 * (bz + cy)*eps_new/o; - //mfbab = -c1o3 * (az + cx)*eps_new/o; - //mfbba = -c1o3 * (ay + bx)*eps_new/o; - mxxMyy = -c2o3*((ax - by)+kxxMyyAverage)*eps_new/o * (one + press); - mxxMzz = -c2o3*((ax - cz)+kxxMzzAverage)*eps_new/o * (one + press); - - mfabb = -c1o3 * ((bz + cy)+kyzAverage)*eps_new/o * (one + press); - mfbab = -c1o3 * ((az + cx)+kxzAverage)*eps_new/o * (one + press); - mfbba = -c1o3 * ((ay + bx)+kxyAverage)*eps_new/o * (one + press); - - - // linear combinations back - mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; - mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; - - //3. - // linear combinations - //residu = residutmp * (ayz + bxz + cxy ); - //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mfbbb = zero; - - //residu = residutmp * (axy + two*bxx + two*bzz + cyz ); - //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz )); - //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyPyzz = zero; - - //residu = residutmp * (axy + two*bxx - two*bzz - cyz ); - //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz ); - //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxyMyzz = zero; - - //residu = residutmp * (axz + byz + two*cxx + two*cyy ); - //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy )); - //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzPyyz = zero; - - //residu = residutmp * (axz - byz + two*cxx - two*cyy ); - //residu = c1o9*(axz - byz - 2*cxx + 2*cyy ); - //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxxzMyyz = zero; - - //residu = residutmp * (two*ayy + two*azz + bxy + cxz ); - //residu = c1o9*(2*ayy + 2*azz - bxy - cxz ); - //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyPxzz = zero; - - //residu = residutmp * (two*ayy - two*azz + bxy - cxz ); - //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz ); - //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); - mxyyMxzz = zero; - - //////////////////////////////////////////////////////////////////////////////////// - // D3Q27F - mgcbb = (ax - four * axx) * eps_new; - mgabb = (ax + four * axx) * eps_new; - mgbcb = (by - four * byy) * eps_new; - mgbab = (by + four * byy) * eps_new; - mgbbc = (cz - four * czz) * eps_new; - mgbba = (cz + four * czz) * eps_new; - //////////////////////////////////////////////////////////////////////////////////// - - // linear combinations back - mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; - mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; - mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; - mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; - mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; - mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; - - //4. - mfacc = mfaaa*c1o9; - mfcac = mfacc; - mfcca = mfacc; - //5. - - //6. - mfccc = mfaaa*c1o27; - //////////////////////////////////////////////////////////////////////////////////// - //back - //////////////////////////////////////////////////////////////////////////////////// - //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Z - Dir - m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; - m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; - mfaaa = m0; - mfaab = m1; - mfaac = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; - m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); - m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; - mfaba = m0; - mfabb = m1; - mfabc = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfaca = m0; - mfacb = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; - m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); - m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; - mfbaa = m0; - mfbab = m1; - mfbac = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; - m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); - m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; - mfbba = m0; - mfbbb = m1; - mfbbc = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; - m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); - m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; - mfbca = m0; - mfbcb = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; - m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcaa = m0; - mfcab = m1; - mfcac = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; - m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); - m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; - mfcba = m0; - mfcbb = m1; - mfcbc = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; - m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; - m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; - mfcca = m0; - mfccb = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // Y - Dir - m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaaa = m0; - mfaba = m1; - mfaca = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; - m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaab = m0; - mfabb = m1; - mfacb = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; - m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; - mfaac = m0; - mfabc = m1; - mfacc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; - m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); - m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; - mfbaa = m0; - mfbba = m1; - mfbca = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; - m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); - m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; - mfbab = m0; - mfbbb = m1; - mfbcb = m2; - /////////b////////////////////////////////////////////////////////////////////////// - m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; - m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); - m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; - mfbac = m0; - mfbbc = m1; - mfbcc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcaa = m0; - mfcba = m1; - mfcca = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; - m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcab = m0; - mfcbb = m1; - mfccb = m2; - /////////c////////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; - m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; - m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; - mfcac = m0; - mfcbc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren - //////////////////////////////////////////////////////////////////////////////////// - // X - Dir - m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaaa = m0; - mfbaa = m1; - mfcaa = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaba = m0; - mfbba = m1; - mfcba = m2; - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaca = m0; - mfbca = m1; - mfcca = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaab = m0; - mfbab = m1; - mfcab = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; - m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabb = m0; - mfbbb = m1; - mfcbb = m2; - ///////////b//////////////////////////////////////////////////////////////////////// - m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacb = m0; - mfbcb = m1; - mfccb = m2; - //////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////// - m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfaac = m0; - mfbac = m1; - mfcac = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; - m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; - mfabc = m0; - mfbbc = m1; - mfcbc = m2; - ///////////c//////////////////////////////////////////////////////////////////////// - m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; - m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; - m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; - mfacc = m0; - mfbcc = m1; - mfccc = m2; - //////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - //index 0 - k000 = posC[k]; - kM00 = neighborCX[k000]; - k0M0 = neighborCY[k000]; - k00M = neighborCZ[k000]; - kMM0 = neighborCY[kM00]; - kM0M = neighborCZ[kM00]; - k0MM = neighborCZ[k0M0]; - kMMM = neighborCZ[kMM0]; - //////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; - //////////////////////////////////////////////////////////////////////////////////// - fP00dest[k000] = mfcbb; - fM00dest[kM00] = mfabb; - f0P0dest[k000] = mfbcb; - f0M0dest[k0M0] = mfbab; - f00Pdest[k000] = mfbbc; - f00Mdest[k00M] = mfbba; - fPP0dest[k000] = mfccb; - fMM0dest[kMM0] = mfaab; - fPM0dest[k0M0] = mfcab; - fMP0dest[kM00] = mfacb; - fP0Pdest[k000] = mfcbc; - fM0Mdest[kM0M] = mfaba; - fP0Mdest[k00M] = mfcba; - fM0Pdest[kM00] = mfabc; - f0PPdest[k000] = mfbcc; - f0MMdest[k0MM] = mfbaa; - f0PMdest[k00M] = mfbca; - f0MPdest[k0M0] = mfbac; - f000dest[k000] = mfbbb; - fMMMdest[kMMM] = mfaaa; - fMMPdest[kMM0] = mfaac; - fMPPdest[kM00] = mfacc; - fMPMdest[kM0M] = mfaca; - fPPMdest[k00M] = mfcca; - fPPPdest[k000] = mfccc; - fPMPdest[k0M0] = mfcac; - fPMMdest[k0MM] = mfcaa; - //////////////////////////////////////////////////////////////////////////////////// - } -} -////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ////////////////////////////////////////////////////////////////////////// extern "C" __global__ void scaleFC_0817_comp_27( real* DC, diff --git a/src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu b/src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu new file mode 100644 index 000000000..09a84b912 --- /dev/null +++ b/src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu @@ -0,0 +1,2497 @@ +// _ ___ __ __________ _ __ ______________ __ +// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / +// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / +// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / +// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ +// +////////////////////////////////////////////////////////////////////////// +/* Device code */ +#include "LBM/D3Q27.h" +#include "GPU/constant.h" + +////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posC, + unsigned int* posFSWB, + unsigned int kFC, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + OffFC offFC) +{ + real + *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, + *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource, + *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; + + + fP00source = &DF[dirE *size_MatF]; + fM00source = &DF[dirW *size_MatF]; + f0P0source = &DF[dirN *size_MatF]; + f0M0source = &DF[dirS *size_MatF]; + f00Psource = &DF[dirT *size_MatF]; + f00Msource = &DF[dirB *size_MatF]; + fPP0source = &DF[dirNE *size_MatF]; + fMM0source = &DF[dirSW *size_MatF]; + fPM0source = &DF[dirSE *size_MatF]; + fMP0source = &DF[dirNW *size_MatF]; + fP0Psource = &DF[dirTE *size_MatF]; + fM0Msource = &DF[dirBW *size_MatF]; + fP0Msource = &DF[dirBE *size_MatF]; + fM0Psource = &DF[dirTW *size_MatF]; + f0PPsource = &DF[dirTN *size_MatF]; + f0MMsource = &DF[dirBS *size_MatF]; + f0PMsource = &DF[dirBN *size_MatF]; + f0MPsource = &DF[dirTS *size_MatF]; + f000source = &DF[dirZERO*size_MatF]; + fMMMsource = &DF[dirBSW *size_MatF]; + fMMPsource = &DF[dirTSW *size_MatF]; + fMPPsource = &DF[dirTNW *size_MatF]; + fMPMsource = &DF[dirBNW *size_MatF]; + fPPMsource = &DF[dirBNE *size_MatF]; + fPPPsource = &DF[dirTNE *size_MatF]; + fPMPsource = &DF[dirTSE *size_MatF]; + fPMMsource = &DF[dirBSE *size_MatF]; + + real + *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, + *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest, + *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; + + if (evenOrOdd==true) + { + fP00dest = &DC[dirE *size_MatC]; + fM00dest = &DC[dirW *size_MatC]; + f0P0dest = &DC[dirN *size_MatC]; + f0M0dest = &DC[dirS *size_MatC]; + f00Pdest = &DC[dirT *size_MatC]; + f00Mdest = &DC[dirB *size_MatC]; + fPP0dest = &DC[dirNE *size_MatC]; + fMM0dest = &DC[dirSW *size_MatC]; + fPM0dest = &DC[dirSE *size_MatC]; + fMP0dest = &DC[dirNW *size_MatC]; + fP0Pdest = &DC[dirTE *size_MatC]; + fM0Mdest = &DC[dirBW *size_MatC]; + fP0Mdest = &DC[dirBE *size_MatC]; + fM0Pdest = &DC[dirTW *size_MatC]; + f0PPdest = &DC[dirTN *size_MatC]; + f0MMdest = &DC[dirBS *size_MatC]; + f0PMdest = &DC[dirBN *size_MatC]; + f0MPdest = &DC[dirTS *size_MatC]; + f000dest = &DC[dirZERO*size_MatC]; + fMMMdest = &DC[dirBSW *size_MatC]; + fMMPdest = &DC[dirTSW *size_MatC]; + fMPPdest = &DC[dirTNW *size_MatC]; + fMPMdest = &DC[dirBNW *size_MatC]; + fPPMdest = &DC[dirBNE *size_MatC]; + fPPPdest = &DC[dirTNE *size_MatC]; + fPMPdest = &DC[dirTSE *size_MatC]; + fPMMdest = &DC[dirBSE *size_MatC]; + } + else + { + fP00dest = &DC[dirW *size_MatC]; + fM00dest = &DC[dirE *size_MatC]; + f0P0dest = &DC[dirS *size_MatC]; + f0M0dest = &DC[dirN *size_MatC]; + f00Pdest = &DC[dirB *size_MatC]; + f00Mdest = &DC[dirT *size_MatC]; + fPP0dest = &DC[dirSW *size_MatC]; + fMM0dest = &DC[dirNE *size_MatC]; + fPM0dest = &DC[dirNW *size_MatC]; + fMP0dest = &DC[dirSE *size_MatC]; + fP0Pdest = &DC[dirBW *size_MatC]; + fM0Mdest = &DC[dirTE *size_MatC]; + fP0Mdest = &DC[dirTW *size_MatC]; + fM0Pdest = &DC[dirBE *size_MatC]; + f0PPdest = &DC[dirBS *size_MatC]; + f0MMdest = &DC[dirTN *size_MatC]; + f0PMdest = &DC[dirTS *size_MatC]; + f0MPdest = &DC[dirBN *size_MatC]; + f000dest = &DC[dirZERO*size_MatC]; + fMMMdest = &DC[dirTNE *size_MatC]; + fMMPdest = &DC[dirBNE *size_MatC]; + fMPPdest = &DC[dirBSE *size_MatC]; + fMPMdest = &DC[dirTSE *size_MatC]; + fPPMdest = &DC[dirTSW *size_MatC]; + fPPPdest = &DC[dirBSW *size_MatC]; + fPMPdest = &DC[dirBNW *size_MatC]; + fPMMdest = &DC[dirTNW *size_MatC]; + } + + Distributions6 G; + if (evenOrOdd == true) + { + G.g[dirE] = &G6[dirE *size_MatC]; + G.g[dirW] = &G6[dirW *size_MatC]; + G.g[dirN] = &G6[dirN *size_MatC]; + G.g[dirS] = &G6[dirS *size_MatC]; + G.g[dirT] = &G6[dirT *size_MatC]; + G.g[dirB] = &G6[dirB *size_MatC]; + } + else + { + G.g[dirW] = &G6[dirE *size_MatC]; + G.g[dirE] = &G6[dirW *size_MatC]; + G.g[dirS] = &G6[dirN *size_MatC]; + G.g[dirN] = &G6[dirS *size_MatC]; + G.g[dirB] = &G6[dirT *size_MatC]; + G.g[dirT] = &G6[dirB *size_MatC]; + } + + //////////////////////////////////////////////////////////////////////////////// + const unsigned ix = threadIdx.x; // Globaler x-Index + const unsigned iy = blockIdx.x; // Globaler y-Index + const unsigned iz = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*iz + iy) + ix; + ////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////// + real eps_new = two; + real omegaS = omFine;//-omFine; + real o = omCoarse;//-omCoarse; + //real op = one; + //real cu_sq; + + real xoff, yoff, zoff; + real xoff_sq, yoff_sq, zoff_sq; + + real vvx, vvy, vvz, vx2, vy2, vz2, drho; + real press;//,drho,vx1,vx2,vx3; + real /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM; + real /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP; + real /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP; + real /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM; + real /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM; + real /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP; + real /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP; + real /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM; + real fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM; + real kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM; + real kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP; + real kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP; + real kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM; + real kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM; + real kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP; + real kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP; + real kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM; + real a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/; + real d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/; + + if(k<kFC) + { + ////////////////////////////////////////////////////////////////////////// + xoff = offFC.xOffFC[k]; + yoff = offFC.yOffFC[k]; + zoff = offFC.zOffFC[k]; + xoff_sq = xoff * xoff; + yoff_sq = yoff * yoff; + zoff_sq = zoff * zoff; + ////////////////////////////////////////////////////////////////////////// + //SWB// + ////////////////////////////////////////////////////////////////////////// + //index 0 + unsigned int k000base = posFSWB[k]; + unsigned int kM00base = neighborFX[k000base]; + unsigned int k0M0base = neighborFY[k000base]; + unsigned int k00Mbase = neighborFZ[k000base]; + unsigned int kMM0base = neighborFY[kM00base]; + unsigned int kM0Mbase = neighborFZ[kM00base]; + unsigned int k0MMbase = neighborFZ[k0M0base]; + unsigned int kMMMbase = neighborFZ[kMM0base]; + ////////////////////////////////////////////////////////////////////////// + //index + unsigned int k000 = k000base; + unsigned int kM00 = kM00base; + unsigned int k0M0 = k0M0base; + unsigned int k00M = k00Mbase; + unsigned int kMM0 = kMM0base; + unsigned int kM0M = kM0Mbase; + unsigned int k0MM = k0MMbase; + unsigned int kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM); + vx2MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM); + vx3MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM); + + kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM))); + kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM))); + kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM))); + kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM))); + kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM))); + kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM))); + + ////////////////////////////////////////////////////////////////////////// + //SWT// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborFZ[k00M]; + kMM0 = kMMM; + kM0M = neighborFZ[kM0M]; + k0MM = neighborFZ[k0MM]; + kMMM = neighborFZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP); + vx2MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP); + vx3MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP); + + kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP))); + kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP))); + kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP))); + kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP))); + kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP))); + kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP))); + + ////////////////////////////////////////////////////////////////////////// + //SET// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborFX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborFX[kMM0]; + kM0M = neighborFX[kM0M]; + k0MM = kMMM; + kMMM = neighborFX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP); + vx2PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP); + vx3PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP); + + kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP))); + kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP))); + kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP))); + kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP))); + kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP))); + kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP))); + + ////////////////////////////////////////////////////////////////////////// + //SEB// + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborFX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborFX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM); + vx2PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM); + vx3PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM); + + kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM))); + kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM))); + kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM))); + kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM))); + kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM))); + kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM))); + + ////////////////////////////////////////////////////////////////////////// + //NWB// + ////////////////////////////////////////////////////////////////////////// + //index 0 + k000base = k0M0base; + kM00base = kMM0base; + k0M0base = neighborFY[k0M0base]; + k00Mbase = k0MMbase; + kMM0base = neighborFY[kMM0base]; + kM0Mbase = kMMMbase; + k0MMbase = neighborFY[k0MMbase]; + kMMMbase = neighborFY[kMMMbase]; + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k000base; + kM00 = kM00base; + k0M0 = k0M0base; + k00M = k00Mbase; + kMM0 = kMM0base; + kM0M = kM0Mbase; + k0MM = k0MMbase; + kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM); + vx2MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM); + vx3MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM); + + kxyFromfcNEQMPM = -three*omegaS* ((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM))); + kyzFromfcNEQMPM = -three*omegaS* ((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM))); + kxzFromfcNEQMPM = -three*omegaS* ((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM))); + kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM))); + kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM))); + kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM))); + + ////////////////////////////////////////////////////////////////////////// + //NWT// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborFZ[k00M]; + kMM0 = kMMM; + kM0M = neighborFZ[kM0M]; + k0MM = neighborFZ[k0MM]; + kMMM = neighborFZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP); + vx2MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP); + vx3MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP); + + kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP))); + kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP))); + kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP))); + kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP))); + kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP))); + kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP))); + + ////////////////////////////////////////////////////////////////////////// + //NET// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborFX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborFX[kMM0]; + kM0M = neighborFX[kM0M]; + k0MM = kMMM; + kMMM = neighborFX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP); + vx2PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP); + vx3PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP); + + kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP))); + kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP))); + kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP))); + kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP))); + kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP))); + kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP))); + + ////////////////////////////////////////////////////////////////////////// + //NEB// + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborFX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborFX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM); + vx2PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM); + vx3PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM); + + kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM))); + kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM))); + kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM))); + kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM))); + kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM))); + kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM))); + + ////////////////////////////////////////////////////////////////////////// + //3 + ////////////////////////////////////////////////////////////////////////// + a0 = c1o8*(((vx1PPM + vx1MMP) + (vx1MPM + vx1PMP)) + ((vx1PMM + vx1MPP) + (vx1MMM + vx1PPP))); + ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP))); + ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM))); + az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM))); + axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM))); + axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM))); + ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP))); + //axyz= ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ; + b0 = c1o8*(((vx2PPM + vx2MMP) + (vx2MPM + vx2PMP)) + ((vx2PMM + vx2MPP) + (vx2MMM + vx2PPP))); + bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP))); + by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM))); + bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM))); + bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM))); + bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP))); + byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM))); + //bxyz= ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ; + c0 = c1o8*(((vx3PPM + vx3MMP) + (vx3MPM + vx3PMP)) + ((vx3PMM + vx3MPP) + (vx3MMM + vx3PPP))); + cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP))); + cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM))); + cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM))); + cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM))); + cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP))); + cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP))); + //cxyz= ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ; + + //bxx = zero; + //cxx = zero; + //ayy = zero; + //cyy = zero; + //azz = zero; + //bzz = zero; + //axx = zero; + //byy = zero; + //czz = zero; + + bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy; + cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz; + + ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy; + cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz; + + azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz; + bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz; + + axx = ( c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy) + + ( c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz); + + byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy) + + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz); + + czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz) + + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz); + + a0 -= c1o4*(axx + ayy + azz); + b0 -= c1o4*(bxx + byy + bzz); + c0 -= c1o4*(cxx + cyy + czz); + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real kxyAverage = zero; + real kyzAverage = zero; + real kxzAverage = zero; + real kxxMyyAverage = zero; + real kxxMzzAverage = zero; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////Press + //d0 = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8; + //dx = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4; + //dy = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4; + //dz = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4; + //dxy = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2; + //dxz = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2; + //dyz = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2; + //dxyz = -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho + d0 = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8; + dx = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4; + dy = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4; + dz = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4; + dxy = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2; + dxz = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2; + dyz = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // Bernd das Brot + // + // + // x------x + // | | + // | ---+--->X + // | | \ + // x------x \ + // off-vector + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz; + ax = ax + two * xoff * axx + yoff * axy + zoff * axz; + ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz; + az = az + two * zoff * azz + xoff * axz + yoff * ayz; + b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz; + bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz; + by = by + two * yoff * byy + xoff * bxy + zoff * byz; + bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz; + c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz; + cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz; + cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz; + cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz; + d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = zero; + real mfabb = zero; + real mfbcb = zero; + real mfbab = zero; + real mfbbc = zero; + real mfbba = zero; + real mfccb = zero; + real mfaab = zero; + real mfcab = zero; + real mfacb = zero; + real mfcbc = zero; + real mfaba = zero; + real mfcba = zero; + real mfabc = zero; + real mfbcc = zero; + real mfbaa = zero; + real mfbca = zero; + real mfbac = zero; + real mfbbb = zero; + real mfccc = zero; + real mfaac = zero; + real mfcac = zero; + real mfacc = zero; + real mfcca = zero; + real mfaaa = zero; + real mfcaa = zero; + real mfaca = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mgcbb = zero; + real mgabb = zero; + real mgbcb = zero; + real mgbab = zero; + real mgbbc = zero; + real mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real m0, m1, m2, oMdrho; + real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz; + real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein + real O3 = two - o; + real residu, residutmp; + residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new; + real NeqOn = one;//zero;//one; //.... one = on ..... zero = off + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position C 0., 0., 0. + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //x = 0.; + //y = 0.; + //z = 0.; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //real mxoff = -xoff; + //real myoff = -yoff; + //real mzoff = -zoff; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //press = pressPPP * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + + // pressMPP * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + + // pressPMP * (c1o8 - c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + + // pressMMP * (c1o8 + c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + + // pressPPM * (c1o8 - c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + + // pressMPM * (c1o8 + c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + + // pressPMM * (c1o8 - c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff) + + // pressMMM * (c1o8 + c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff); + //drho = drhoPPP * (c1o8 - c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + + // drhoMPP * (c1o8 + c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + + // drhoPMP * (c1o8 - c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + + // drhoMMP * (c1o8 + c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + + // drhoPPM * (c1o8 - c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + + // drhoMPM * (c1o8 + c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + + // drhoPMM * (c1o8 - c1o4 * xoff + c1o4 * yoff + c1o4 * zoff) + + // drhoMMM * (c1o8 + c1o4 * xoff + c1o4 * yoff + c1o4 * zoff); + press = d0; + vvx = a0; + vvy = b0; + vvz = c0; + + //mfaaa = drho; + //mfaaa = press + (ax+by+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //two + // linear combinations + real oP = o;// :( + mxxPyyPzz = mfaaa -c2o3*(ax+by+cz)*eps_new/oP*(one+press); + //mxxMyy = -c2o3*(ax - by)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy)*eps_new/o; + //mfbab = -c1o3 * (az + cx)*eps_new/o; + //mfbba = -c1o3 * (ay + bx)*eps_new/o; + mxxMyy = -c2o3*((ax - by)+kxxMyyAverage)*eps_new/o * (one + press); + mxxMzz = -c2o3*((ax - cz)+kxxMzzAverage)*eps_new/o * (one + press); + + mfabb = -c1o3 * ((bz + cy)+kyzAverage)*eps_new/o * (one + press); + mfbab = -c1o3 * ((az + cx)+kxzAverage)*eps_new/o * (one + press); + mfbba = -c1o3 * ((ay + bx)+kxyAverage)*eps_new/o * (one + press); + + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //3. + // linear combinations + //residu = residutmp * (ayz + bxz + cxy ); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz ); + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz )); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz ); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz ); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy ); + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy )); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy ); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy ); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz ); + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz ); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz ); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz ); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (vvx * axx + ax * ax) * (eps_new * eps_new) * (one + press); + mgabb = -(vvx * axx + ax * ax) * (eps_new * eps_new) * (one + press); + mgbcb = (vvy * byy + by * by) * (eps_new * eps_new) * (one + press); + mgbab = -(vvy * byy + by * by) * (eps_new * eps_new) * (one + press); + mgbbc = (vvz * czz + cz * cz) * (eps_new * eps_new) * (one + press); + mgbba = -(vvz * czz + cz * cz) * (eps_new * eps_new) * (one + press); + //mgcbb = zero; + //mgabb = zero; + //mgbcb = zero; + //mgbab = zero; + //mgbbc = zero; + //mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4. + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + //index 0 + k000 = posC[k]; + kM00 = neighborCX[k000]; + k0M0 = neighborCY[k000]; + k00M = neighborCZ[k000]; + kMM0 = neighborCY[kM00]; + kM0M = neighborCZ[kM00]; + k0MM = neighborCZ[k0M0]; + kMMM = neighborCZ[kMM0]; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + } +} +////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////// +extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC, + real* DF, + real* G6, + unsigned int* neighborCX, + unsigned int* neighborCY, + unsigned int* neighborCZ, + unsigned int* neighborFX, + unsigned int* neighborFY, + unsigned int* neighborFZ, + unsigned int size_MatC, + unsigned int size_MatF, + bool evenOrOdd, + unsigned int* posC, + unsigned int* posFSWB, + unsigned int kFC, + real omCoarse, + real omFine, + real nu, + unsigned int nxC, + unsigned int nyC, + unsigned int nxF, + unsigned int nyF, + OffFC offFC) +{ + real + *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, + *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource, + *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; + + + fP00source = &DF[dirE *size_MatF]; + fM00source = &DF[dirW *size_MatF]; + f0P0source = &DF[dirN *size_MatF]; + f0M0source = &DF[dirS *size_MatF]; + f00Psource = &DF[dirT *size_MatF]; + f00Msource = &DF[dirB *size_MatF]; + fPP0source = &DF[dirNE *size_MatF]; + fMM0source = &DF[dirSW *size_MatF]; + fPM0source = &DF[dirSE *size_MatF]; + fMP0source = &DF[dirNW *size_MatF]; + fP0Psource = &DF[dirTE *size_MatF]; + fM0Msource = &DF[dirBW *size_MatF]; + fP0Msource = &DF[dirBE *size_MatF]; + fM0Psource = &DF[dirTW *size_MatF]; + f0PPsource = &DF[dirTN *size_MatF]; + f0MMsource = &DF[dirBS *size_MatF]; + f0PMsource = &DF[dirBN *size_MatF]; + f0MPsource = &DF[dirTS *size_MatF]; + f000source = &DF[dirZERO*size_MatF]; + fMMMsource = &DF[dirBSW *size_MatF]; + fMMPsource = &DF[dirTSW *size_MatF]; + fMPPsource = &DF[dirTNW *size_MatF]; + fMPMsource = &DF[dirBNW *size_MatF]; + fPPMsource = &DF[dirBNE *size_MatF]; + fPPPsource = &DF[dirTNE *size_MatF]; + fPMPsource = &DF[dirTSE *size_MatF]; + fPMMsource = &DF[dirBSE *size_MatF]; + + real + *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, + *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest, + *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; + + if (evenOrOdd==true) + { + fP00dest = &DC[dirE *size_MatC]; + fM00dest = &DC[dirW *size_MatC]; + f0P0dest = &DC[dirN *size_MatC]; + f0M0dest = &DC[dirS *size_MatC]; + f00Pdest = &DC[dirT *size_MatC]; + f00Mdest = &DC[dirB *size_MatC]; + fPP0dest = &DC[dirNE *size_MatC]; + fMM0dest = &DC[dirSW *size_MatC]; + fPM0dest = &DC[dirSE *size_MatC]; + fMP0dest = &DC[dirNW *size_MatC]; + fP0Pdest = &DC[dirTE *size_MatC]; + fM0Mdest = &DC[dirBW *size_MatC]; + fP0Mdest = &DC[dirBE *size_MatC]; + fM0Pdest = &DC[dirTW *size_MatC]; + f0PPdest = &DC[dirTN *size_MatC]; + f0MMdest = &DC[dirBS *size_MatC]; + f0PMdest = &DC[dirBN *size_MatC]; + f0MPdest = &DC[dirTS *size_MatC]; + f000dest = &DC[dirZERO*size_MatC]; + fMMMdest = &DC[dirBSW *size_MatC]; + fMMPdest = &DC[dirTSW *size_MatC]; + fMPPdest = &DC[dirTNW *size_MatC]; + fMPMdest = &DC[dirBNW *size_MatC]; + fPPMdest = &DC[dirBNE *size_MatC]; + fPPPdest = &DC[dirTNE *size_MatC]; + fPMPdest = &DC[dirTSE *size_MatC]; + fPMMdest = &DC[dirBSE *size_MatC]; + } + else + { + fP00dest = &DC[dirW *size_MatC]; + fM00dest = &DC[dirE *size_MatC]; + f0P0dest = &DC[dirS *size_MatC]; + f0M0dest = &DC[dirN *size_MatC]; + f00Pdest = &DC[dirB *size_MatC]; + f00Mdest = &DC[dirT *size_MatC]; + fPP0dest = &DC[dirSW *size_MatC]; + fMM0dest = &DC[dirNE *size_MatC]; + fPM0dest = &DC[dirNW *size_MatC]; + fMP0dest = &DC[dirSE *size_MatC]; + fP0Pdest = &DC[dirBW *size_MatC]; + fM0Mdest = &DC[dirTE *size_MatC]; + fP0Mdest = &DC[dirTW *size_MatC]; + fM0Pdest = &DC[dirBE *size_MatC]; + f0PPdest = &DC[dirBS *size_MatC]; + f0MMdest = &DC[dirTN *size_MatC]; + f0PMdest = &DC[dirTS *size_MatC]; + f0MPdest = &DC[dirBN *size_MatC]; + f000dest = &DC[dirZERO*size_MatC]; + fMMMdest = &DC[dirTNE *size_MatC]; + fMMPdest = &DC[dirBNE *size_MatC]; + fMPPdest = &DC[dirBSE *size_MatC]; + fMPMdest = &DC[dirTSE *size_MatC]; + fPPMdest = &DC[dirTSW *size_MatC]; + fPPPdest = &DC[dirBSW *size_MatC]; + fPMPdest = &DC[dirBNW *size_MatC]; + fPMMdest = &DC[dirTNW *size_MatC]; + } + + Distributions6 G; + if (evenOrOdd == true) + { + G.g[dirE] = &G6[dirE *size_MatC]; + G.g[dirW] = &G6[dirW *size_MatC]; + G.g[dirN] = &G6[dirN *size_MatC]; + G.g[dirS] = &G6[dirS *size_MatC]; + G.g[dirT] = &G6[dirT *size_MatC]; + G.g[dirB] = &G6[dirB *size_MatC]; + } + else + { + G.g[dirW] = &G6[dirE *size_MatC]; + G.g[dirE] = &G6[dirW *size_MatC]; + G.g[dirS] = &G6[dirN *size_MatC]; + G.g[dirN] = &G6[dirS *size_MatC]; + G.g[dirB] = &G6[dirT *size_MatC]; + G.g[dirT] = &G6[dirB *size_MatC]; + } + + //////////////////////////////////////////////////////////////////////////////// + const unsigned ix = threadIdx.x; // Globaler x-Index + const unsigned iy = blockIdx.x; // Globaler y-Index + const unsigned iz = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*iz + iy) + ix; + ////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////// + real eps_new = two; + real omegaS = omFine;//-omFine; + real o = omCoarse;//-omCoarse; + //real op = one; + //real cu_sq; + + real xoff, yoff, zoff; + real xoff_sq, yoff_sq, zoff_sq; + + real vvx, vvy, vvz, vx2, vy2, vz2, drho; + real press;//,drho,vx1,vx2,vx3; + real /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM; + real /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP; + real /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP; + real /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM; + real /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM; + real /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP; + real /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP; + real /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM; + real fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM; + real kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM; + real kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP; + real kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP; + real kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM; + real kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM; + real kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP; + real kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP; + real kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM; + real a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/; + real d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/; + + if(k<kFC) + { + ////////////////////////////////////////////////////////////////////////// + xoff = offFC.xOffFC[k]; + yoff = offFC.yOffFC[k]; + zoff = offFC.zOffFC[k]; + xoff_sq = xoff * xoff; + yoff_sq = yoff * yoff; + zoff_sq = zoff * zoff; + ////////////////////////////////////////////////////////////////////////// + //SWB// + ////////////////////////////////////////////////////////////////////////// + //index 0 + unsigned int k000base = posFSWB[k]; + unsigned int kM00base = neighborFX[k000base]; + unsigned int k0M0base = neighborFY[k000base]; + unsigned int k00Mbase = neighborFZ[k000base]; + unsigned int kMM0base = neighborFY[kM00base]; + unsigned int kM0Mbase = neighborFZ[kM00base]; + unsigned int k0MMbase = neighborFZ[k0M0base]; + unsigned int kMMMbase = neighborFZ[kMM0base]; + ////////////////////////////////////////////////////////////////////////// + //index + unsigned int k000 = k000base; + unsigned int kM00 = kM00base; + unsigned int k0M0 = k0M0base; + unsigned int k00M = k00Mbase; + unsigned int kMM0 = kMM0base; + unsigned int kM0M = kM0Mbase; + unsigned int k0MM = k0MMbase; + unsigned int kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM); + vx2MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM); + vx3MMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM); + + kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM))); + kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM))); + kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM))); + kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM))); + kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM))); + kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM))); + + ////////////////////////////////////////////////////////////////////////// + //SWT// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborFZ[k00M]; + kMM0 = kMMM; + kM0M = neighborFZ[kM0M]; + k0MM = neighborFZ[k0MM]; + kMMM = neighborFZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP); + vx2MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP); + vx3MMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP); + + kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP))); + kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP))); + kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP))); + kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP))); + kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP))); + kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP))); + + ////////////////////////////////////////////////////////////////////////// + //SET// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborFX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborFX[kMM0]; + kM0M = neighborFX[kM0M]; + k0MM = kMMM; + kMMM = neighborFX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PMP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP); + vx2PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP); + vx3PMP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP); + + kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP))); + kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP))); + kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP))); + kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP))); + kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP))); + kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP))); + + ////////////////////////////////////////////////////////////////////////// + //SEB// + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborFX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborFX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PMM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM); + vx2PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM); + vx3PMM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM); + + kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM))); + kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM))); + kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM))); + kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM))); + kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM))); + kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM))); + + ////////////////////////////////////////////////////////////////////////// + //NWB// + ////////////////////////////////////////////////////////////////////////// + //index 0 + k000base = k0M0base; + kM00base = kMM0base; + k0M0base = neighborFY[k0M0base]; + k00Mbase = k0MMbase; + kMM0base = neighborFY[kMM0base]; + kM0Mbase = kMMMbase; + k0MMbase = neighborFY[k0MMbase]; + kMMMbase = neighborFY[kMMMbase]; + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k000base; + kM00 = kM00base; + k0M0 = k0M0base; + k00M = k00Mbase; + kMM0 = kMM0base; + kM0M = kM0Mbase; + k0MM = k0MMbase; + kMMM = kMMMbase; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM); + vx2MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM); + vx3MPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM); + + kxyFromfcNEQMPM = -three*omegaS* ((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM))); + kyzFromfcNEQMPM = -three*omegaS* ((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM))); + kxzFromfcNEQMPM = -three*omegaS* ((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM))); + kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM))); + kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM))); + kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM))); + + ////////////////////////////////////////////////////////////////////////// + //NWT// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = k00M; + kM00 = kM0M; + k0M0 = k0MM; + k00M = neighborFZ[k00M]; + kMM0 = kMMM; + kM0M = neighborFZ[kM0M]; + k0MM = neighborFZ[k0MM]; + kMMM = neighborFZ[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1MPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP); + vx2MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP); + vx3MPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP); + + kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP))); + kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP))); + kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP))); + kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP))); + kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP))); + kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP))); + + ////////////////////////////////////////////////////////////////////////// + //NET// + ////////////////////////////////////////////////////////////////////////// + //index + k000 = kM00; + kM00 = neighborFX[kM00]; + k0M0 = kMM0; + k00M = kM0M; + kMM0 = neighborFX[kMM0]; + kM0M = neighborFX[kM0M]; + k0MM = kMMM; + kMMM = neighborFX[kMMM]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PPP = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP); + vx2PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP); + vx3PPP = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP); + + kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP))); + kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP))); + kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP))); + kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP))); + kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP))); + kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP))); + + ////////////////////////////////////////////////////////////////////////// + //NEB// + ////////////////////////////////////////////////////////////////////////// + //index + k00M = k000; + kM0M = kM00; + k0MM = k0M0; + kMMM = kMM0; + k000 = kM00base; + kM00 = neighborFX[kM00base]; + k0M0 = kMM0base; + kMM0 = neighborFX[kMM0base]; + //////////////////////////////////////////////////////////////////////////////// + fP00 = fP00source[k000]; + fM00 = fM00source[kM00]; + f0P0 = f0P0source[k000]; + f0M0 = f0M0source[k0M0]; + f00P = f00Psource[k000]; + f00M = f00Msource[k00M]; + fPP0 = fPP0source[k000]; + fMM0 = fMM0source[kMM0]; + fPM0 = fPM0source[k0M0]; + fMP0 = fMP0source[kM00]; + fP0P = fP0Psource[k000]; + fM0M = fM0Msource[kM0M]; + fP0M = fP0Msource[k00M]; + fM0P = fM0Psource[kM00]; + f0PP = f0PPsource[k000]; + f0MM = f0MMsource[k0MM]; + f0PM = f0PMsource[k00M]; + f0MP = f0MPsource[k0M0]; + f000 = f000source[k000]; + fMMM = fMMMsource[kMMM]; + fMMP = fMMPsource[kMM0]; + fMPP = fMPPsource[kM00]; + fMPM = fMPMsource[kM0M]; + fPPM = fPPMsource[k00M]; + fPPP = fPPPsource[k000]; + fPMP = fPMPsource[k0M0]; + fPMM = fPMMsource[k0MM]; + + drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM; + vx1PPM = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM); + vx2PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM); + vx3PPM = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM); + + kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM))); + kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM))); + kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM))); + kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM))); + kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM))); + kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM))); + + ////////////////////////////////////////////////////////////////////////// + //3 + ////////////////////////////////////////////////////////////////////////// + a0 = c1o8*(((vx1PPM + vx1MMP) + (vx1MPM + vx1PMP)) + ((vx1PMM + vx1MPP) + (vx1MMM + vx1PPP))); + ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP))); + ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM))); + az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM))); + axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM))); + axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM))); + ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP))); + //axyz= ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ; + b0 = c1o8*(((vx2PPM + vx2MMP) + (vx2MPM + vx2PMP)) + ((vx2PMM + vx2MPP) + (vx2MMM + vx2PPP))); + bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP))); + by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM))); + bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM))); + bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM))); + bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP))); + byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM))); + //bxyz= ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ; + c0 = c1o8*(((vx3PPM + vx3MMP) + (vx3MPM + vx3PMP)) + ((vx3PMM + vx3MPP) + (vx3MMM + vx3PPP))); + cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP))); + cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM))); + cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM))); + cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM))); + cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP))); + cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP))); + //cxyz= ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ; + + //bxx = zero; + //cxx = zero; + //ayy = zero; + //cyy = zero; + //azz = zero; + //bzz = zero; + //axx = zero; + //byy = zero; + //czz = zero; + + bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy; + cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz; + + ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy; + cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz; + + azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz; + bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz; + + axx = ( c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy) + + ( c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz); + + byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy) + + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz); + + czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz) + + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz); + + a0 -= c1o4*(axx + ayy + azz); + b0 -= c1o4*(bxx + byy + bzz); + c0 -= c1o4*(cxx + cyy + czz); + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real kxyAverage = zero; + real kyzAverage = zero; + real kxzAverage = zero; + real kxxMyyAverage = zero; + real kxxMzzAverage = zero; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////Press + //d0 = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8; + //dx = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4; + //dy = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4; + //dz = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4; + //dxy = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2; + //dxz = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2; + //dyz = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2; + //dxyz = -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //drho + d0 = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8; + dx = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4; + dy = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4; + dz = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4; + dxy = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2; + dxz = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2; + dyz = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // Bernd das Brot + // + // + // x------x + // | | + // | ---+--->X + // | | \ + // x------x \ + // off-vector + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz; + ax = ax + two * xoff * axx + yoff * axy + zoff * axz; + ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz; + az = az + two * zoff * azz + xoff * axz + yoff * ayz; + b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz; + bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz; + by = by + two * yoff * byy + xoff * bxy + zoff * byz; + bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz; + c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz; + cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz; + cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz; + cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz; + d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = zero; + real mfabb = zero; + real mfbcb = zero; + real mfbab = zero; + real mfbbc = zero; + real mfbba = zero; + real mfccb = zero; + real mfaab = zero; + real mfcab = zero; + real mfacb = zero; + real mfcbc = zero; + real mfaba = zero; + real mfcba = zero; + real mfabc = zero; + real mfbcc = zero; + real mfbaa = zero; + real mfbca = zero; + real mfbac = zero; + real mfbbb = zero; + real mfccc = zero; + real mfaac = zero; + real mfcac = zero; + real mfacc = zero; + real mfcca = zero; + real mfaaa = zero; + real mfcaa = zero; + real mfaca = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mgcbb = zero; + real mgabb = zero; + real mgbcb = zero; + real mgbab = zero; + real mgbbc = zero; + real mgbba = zero; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real m0, m1, m2, oMdrho; + real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz; + real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein + real O3 = two - o; + real residu, residutmp; + residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new; + real NeqOn = one;//zero;//one; //.... one = on ..... zero = off + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + //Position C 0., 0., 0. + // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //x = 0.; + //y = 0.; + //z = 0.; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //real mxoff = -xoff; + //real myoff = -yoff; + //real mzoff = -zoff; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //press = pressPPP * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + + // pressMPP * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + + // pressPMP * (c1o8 - c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + + // pressMMP * (c1o8 + c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + + // pressPPM * (c1o8 - c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + + // pressMPM * (c1o8 + c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + + // pressPMM * (c1o8 - c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff) + + // pressMMM * (c1o8 + c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff); + //drho = drhoPPP * (c1o8 - c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + + // drhoMPP * (c1o8 + c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + + // drhoPMP * (c1o8 - c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + + // drhoMMP * (c1o8 + c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + + // drhoPPM * (c1o8 - c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + + // drhoMPM * (c1o8 + c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + + // drhoPMM * (c1o8 - c1o4 * xoff + c1o4 * yoff + c1o4 * zoff) + + // drhoMMM * (c1o8 + c1o4 * xoff + c1o4 * yoff + c1o4 * zoff); + press = d0; + vvx = a0; + vvy = b0; + vvz = c0; + + //mfaaa = drho; + //mfaaa = press + (ax+by+cz)/three; // 1/3 = 2/3*(1/op-1/2) + mfaaa = press; // if drho is interpolated directly + + vx2 = vvx*vvx; + vy2 = vvy*vvy; + vz2 = vvz*vvz; + oMdrho = one; + //oMdrho = one - mfaaa; + + //two + // linear combinations + real oP = o;// :( + mxxPyyPzz = mfaaa -c2o3*(ax+by+cz)*eps_new/oP*(one+press); + //mxxMyy = -c2o3*(ax - by)*eps_new/o; + //mxxMzz = -c2o3*(ax - cz)*eps_new/o; + + //mfabb = -c1o3 * (bz + cy)*eps_new/o; + //mfbab = -c1o3 * (az + cx)*eps_new/o; + //mfbba = -c1o3 * (ay + bx)*eps_new/o; + mxxMyy = -c2o3*((ax - by)+kxxMyyAverage)*eps_new/o * (one + press); + mxxMzz = -c2o3*((ax - cz)+kxxMzzAverage)*eps_new/o * (one + press); + + mfabb = -c1o3 * ((bz + cy)+kyzAverage)*eps_new/o * (one + press); + mfbab = -c1o3 * ((az + cx)+kxzAverage)*eps_new/o * (one + press); + mfbba = -c1o3 * ((ay + bx)+kxyAverage)*eps_new/o * (one + press); + + + // linear combinations back + mfcaa = c1o3 * ( mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz) * NeqOn; + mfaac = c1o3 * ( mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn; + + //3. + // linear combinations + //residu = residutmp * (ayz + bxz + cxy ); + //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mfbbb = zero; + + //residu = residutmp * (axy + two*bxx + two*bzz + cyz ); + //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz )); + //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyPyzz = zero; + + //residu = residutmp * (axy + two*bxx - two*bzz - cyz ); + //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz ); + //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxyMyzz = zero; + + //residu = residutmp * (axz + byz + two*cxx + two*cyy ); + //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy )); + //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzPyyz = zero; + + //residu = residutmp * (axz - byz + two*cxx - two*cyy ); + //residu = c1o9*(axz - byz - 2*cxx + 2*cyy ); + //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxxzMyyz = zero; + + //residu = residutmp * (two*ayy + two*azz + bxy + cxz ); + //residu = c1o9*(2*ayy + 2*azz - bxy - cxz ); + //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyPxzz = zero; + + //residu = residutmp * (two*ayy - two*azz + bxy - cxz ); + //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz ); + //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu)); + mxyyMxzz = zero; + + //////////////////////////////////////////////////////////////////////////////////// + // D3Q27F + mgcbb = (ax - four * axx) * eps_new; + mgabb = (ax + four * axx) * eps_new; + mgbcb = (by - four * byy) * eps_new; + mgbab = (by + four * byy) * eps_new; + mgbbc = (cz - four * czz) * eps_new; + mgbba = (cz + four * czz) * eps_new; + //////////////////////////////////////////////////////////////////////////////////// + + // linear combinations back + mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2; + mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2; + mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2; + mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2; + mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2; + mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2; + + //4. + mfacc = mfaaa*c1o9; + mfcac = mfacc; + mfcca = mfacc; + //5. + + //6. + mfccc = mfaaa*c1o27; + //////////////////////////////////////////////////////////////////////////////////// + //back + //////////////////////////////////////////////////////////////////////////////////// + //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Z - Dir + m0 = mfaac * c1o2 + mfaab * (vvz - c1o2) + (mfaaa + one * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2; + m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * ( vz2 + vvz) * c1o2; + mfaaa = m0; + mfaab = m1; + mfaac = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * ( vz2 - vvz) * c1o2; + m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2); + m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * ( vz2 + vvz) * c1o2; + mfaba = m0; + mfabb = m1; + mfabc = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfaca = m0; + mfacb = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * ( vz2 - vvz) * c1o2; + m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2); + m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * ( vz2 + vvz) * c1o2; + mfbaa = m0; + mfbab = m1; + mfbac = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * ( vz2 - vvz) * c1o2; + m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2); + m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * ( vz2 + vvz) * c1o2; + mfbba = m0; + mfbbb = m1; + mfbbc = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * ( vz2 - vvz) * c1o2; + m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2); + m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * ( vz2 + vvz) * c1o2; + mfbca = m0; + mfbcb = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2; + m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcaa = m0; + mfcab = m1; + mfcac = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * ( vz2 - vvz) * c1o2; + m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2); + m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * ( vz2 + vvz) * c1o2; + mfcba = m0; + mfcbb = m1; + mfcbc = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 - vvz) * c1o2; + m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2; + m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * ( vz2 + vvz) * c1o2; + mfcca = m0; + mfccb = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // Y - Dir + m0 = mfaca * c1o2 + mfaba * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaaa = m0; + mfaba = m1; + mfaca = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2; + m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaab = m0; + mfabb = m1; + mfacb = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2; + m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * ( vy2 + vvy) * c1o2; + mfaac = m0; + mfabc = m1; + mfacc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * ( vy2 - vvy) * c1o2; + m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2); + m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * ( vy2 + vvy) * c1o2; + mfbaa = m0; + mfbba = m1; + mfbca = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * ( vy2 - vvy) * c1o2; + m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2); + m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * ( vy2 + vvy) * c1o2; + mfbab = m0; + mfbbb = m1; + mfbcb = m2; + /////////b////////////////////////////////////////////////////////////////////////// + m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * ( vy2 - vvy) * c1o2; + m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2); + m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * ( vy2 + vvy) * c1o2; + mfbac = m0; + mfbbc = m1; + mfbcc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcaa = m0; + mfcba = m1; + mfcca = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2; + m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcab = m0; + mfcbb = m1; + mfccb = m2; + /////////c////////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 - vvy) * c1o2; + m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2; + m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * ( vy2 + vvy) * c1o2; + mfcac = m0; + mfcbc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren + //////////////////////////////////////////////////////////////////////////////////// + // X - Dir + m0 = mfcaa * c1o2 + mfbaa * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaaa = m0; + mfbaa = m1; + mfcaa = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaba = m0; + mfbba = m1; + mfcba = m2; + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaca = m0; + mfbca = m1; + mfcca = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaab = m0; + mfbab = m1; + mfcab = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2; + m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabb = m0; + mfbbb = m1; + mfcbb = m2; + ///////////b//////////////////////////////////////////////////////////////////////// + m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacb = m0; + mfbcb = m1; + mfccb = m2; + //////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////// + m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfaac = m0; + mfbac = m1; + mfcac = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2; + m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * ( vx2 + vvx) * c1o2; + mfabc = m0; + mfbbc = m1; + mfcbc = m2; + ///////////c//////////////////////////////////////////////////////////////////////// + m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 - vvx) * c1o2; + m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2; + m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * ( vx2 + vvx) * c1o2; + mfacc = m0; + mfbcc = m1; + mfccc = m2; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + //index 0 + k000 = posC[k]; + kM00 = neighborCX[k000]; + k0M0 = neighborCY[k000]; + k00M = neighborCZ[k000]; + kMM0 = neighborCY[kM00]; + kM0M = neighborCZ[kM00]; + k0MM = neighborCZ[k0M0]; + kMMM = neighborCZ[kMM0]; + //////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////// + (G.g[dirE])[k000] = mgcbb; + (G.g[dirW])[kM00] = mgabb; + (G.g[dirN])[k000] = mgbcb; + (G.g[dirS])[k0M0] = mgbab; + (G.g[dirT])[k000] = mgbbc; + (G.g[dirB])[k00M] = mgbba; + //////////////////////////////////////////////////////////////////////////////////// + fP00dest[k000] = mfcbb; + fM00dest[kM00] = mfabb; + f0P0dest[k000] = mfbcb; + f0M0dest[k0M0] = mfbab; + f00Pdest[k000] = mfbbc; + f00Mdest[k00M] = mfbba; + fPP0dest[k000] = mfccb; + fMM0dest[kMM0] = mfaab; + fPM0dest[k0M0] = mfcab; + fMP0dest[kM00] = mfacb; + fP0Pdest[k000] = mfcbc; + fM0Mdest[kM0M] = mfaba; + fP0Mdest[k00M] = mfcba; + fM0Pdest[kM00] = mfabc; + f0PPdest[k000] = mfbcc; + f0MMdest[k0MM] = mfbaa; + f0PMdest[k00M] = mfbca; + f0MPdest[k0M0] = mfbac; + f000dest[k000] = mfbbb; + fMMMdest[kMMM] = mfaaa; + fMMPdest[kMM0] = mfaac; + fMPPdest[kM00] = mfacc; + fMPMdest[kM0M] = mfaca; + fPPMdest[k00M] = mfcca; + fPPPdest[k000] = mfccc; + fPMPdest[k0M0] = mfcac; + fPMMdest[k0MM] = mfcaa; + //////////////////////////////////////////////////////////////////////////////////// + } +} +////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/VirtualFluids_GPU/Init/InitLattice.cpp b/src/VirtualFluids_GPU/Init/InitLattice.cpp index 0fe9374e0..d0b05a59a 100644 --- a/src/VirtualFluids_GPU/Init/InitLattice.cpp +++ b/src/VirtualFluids_GPU/Init/InitLattice.cpp @@ -40,19 +40,19 @@ void initLattice(SPtr<Parameter> para) //para->getParD(lev)->d0SP.f[0], //para->getParD(lev)->evenOrOdd); // getLastCudaError("Kernel execution failed"); - //InitF3( para->getParD(lev)->numberofthreads, - // para->getParD(lev)->neighborX_SP, - // para->getParD(lev)->neighborY_SP, - // para->getParD(lev)->neighborZ_SP, - // para->getParD(lev)->geoSP, - // para->getParD(lev)->rho_SP, - // para->getParD(lev)->vx_SP, - // para->getParD(lev)->vy_SP, - // para->getParD(lev)->vz_SP, - // para->getParD(lev)->size_Mat_SP, - // para->getParD(lev)->g6.g[0], - // para->getParD(lev)->evenOrOdd); - //getLastCudaError("Kernel execution failed"); + InitF3( para->getParD(lev)->numberofthreads, + para->getParD(lev)->neighborX_SP, + para->getParD(lev)->neighborY_SP, + para->getParD(lev)->neighborZ_SP, + para->getParD(lev)->geoSP, + para->getParD(lev)->rho_SP, + para->getParD(lev)->vx_SP, + para->getParD(lev)->vy_SP, + para->getParD(lev)->vz_SP, + para->getParD(lev)->size_Mat_SP, + para->getParD(lev)->g6.g[0], + para->getParD(lev)->evenOrOdd); + getLastCudaError("Kernel execution failed"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// para->getParD(lev)->evenOrOdd = true; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -82,19 +82,19 @@ void initLattice(SPtr<Parameter> para) //para->getParD(lev)->d0SP.f[0], //para->getParD(lev)->evenOrOdd); // getLastCudaError("Kernel execution failed"); - //InitF3( para->getParD(lev)->numberofthreads, - // para->getParD(lev)->neighborX_SP, - // para->getParD(lev)->neighborY_SP, - // para->getParD(lev)->neighborZ_SP, - // para->getParD(lev)->geoSP, - // para->getParD(lev)->rho_SP, - // para->getParD(lev)->vx_SP, - // para->getParD(lev)->vy_SP, - // para->getParD(lev)->vz_SP, - // para->getParD(lev)->size_Mat_SP, - // para->getParD(lev)->g6.g[0], - // para->getParD(lev)->evenOrOdd); - //getLastCudaError("Kernel execution failed"); + InitF3( para->getParD(lev)->numberofthreads, + para->getParD(lev)->neighborX_SP, + para->getParD(lev)->neighborY_SP, + para->getParD(lev)->neighborZ_SP, + para->getParD(lev)->geoSP, + para->getParD(lev)->rho_SP, + para->getParD(lev)->vx_SP, + para->getParD(lev)->vy_SP, + para->getParD(lev)->vz_SP, + para->getParD(lev)->size_Mat_SP, + para->getParD(lev)->g6.g[0], + para->getParD(lev)->evenOrOdd); + getLastCudaError("Kernel execution failed"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// CalcMacSP27(para->getParD(lev)->vx_SP, para->getParD(lev)->vy_SP, diff --git a/src/VirtualFluids_GPU/LBM/Simulation.cpp b/src/VirtualFluids_GPU/LBM/Simulation.cpp index d53346749..05e364d37 100644 --- a/src/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/VirtualFluids_GPU/LBM/Simulation.cpp @@ -231,7 +231,7 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std //defineGrid(para, comm); ////allocateMemory(); //output << "done.\n"; - + output << "init lattice..." ; initLattice(para); output << "done.\n"; @@ -695,19 +695,19 @@ void Simulation::run() } else { - KernelKumNewCompSP27(para->getParD(0)->numberofthreads, - para->getParD(0)->omega, - para->getParD(0)->geoSP, - para->getParD(0)->neighborX_SP, - para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, - para->getParD(0)->d0SP.f[0], - para->getParD(0)->size_Mat_SP, - para->getParD(0)->size_Array_SP, - 0, - para->getForcesDev(), - para->getParD(0)->evenOrOdd); - getLastCudaError("KernelKumNewCompSP27 execution failed"); + //KernelKumNewCompSP27(para->getParD(0)->numberofthreads, + // para->getParD(0)->omega, + // para->getParD(0)->geoSP, + // para->getParD(0)->neighborX_SP, + // para->getParD(0)->neighborY_SP, + // para->getParD(0)->neighborZ_SP, + // para->getParD(0)->d0SP.f[0], + // para->getParD(0)->size_Mat_SP, + // para->getParD(0)->size_Array_SP, + // 0, + // para->getForcesDev(), + // para->getParD(0)->evenOrOdd); + //getLastCudaError("KernelKumNewCompSP27 execution failed"); //KernelKumAA2016CompSP27( // para->getParD(0)->numberofthreads, @@ -737,6 +737,20 @@ void Simulation::run() //getLastCudaError("KernelCumulantD3Q27All4 execution failed"); //F3 + KernelCumulantD3Q27F3_2018( para->getParD(0)->numberofthreads, + para->getParD(0)->omega, + para->getParD(0)->geoSP, + para->getParD(0)->neighborX_SP, + para->getParD(0)->neighborY_SP, + para->getParD(0)->neighborZ_SP, + para->getParD(0)->d0SP.f[0], + para->getParD(0)->g6.g[0], + para->getParD(0)->size_Mat_SP, + 0, + para->getForcesDev(), + para->getParD(0)->evenOrOdd); + getLastCudaError("KernelCumulantD3Q27F3_2018 execution failed"); + //KernelCumulantD3Q27F3( para->getParD(0)->numberofthreads, // para->getParD(0)->omega, // para->getParD(0)->geoSP, @@ -1808,6 +1822,17 @@ void Simulation::run() ////////////////////////////////////////////////////////////////////////// //fine to coarse interpolation + ScaleFC_comp_D3Q27F3_2018( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], para->getParD(0)->g6.g[0], + para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, + para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, + para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, + para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, + para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, + para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, + para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, + para->getParD(0)->offFC); + getLastCudaError("ScaleFC_comp_D3Q27F3_2018 execution failed"); + //////////////////////////////////////////////////////////////////////////// //ScaleFC_comp_D3Q27F3(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], para->getParD(0)->g6.g[0], // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, @@ -1842,16 +1867,16 @@ void Simulation::run() // getLastCudaError("ScaleFC_Fix_comp_27 execution failed"); //////////////////////////////////////////////////////////////////////////// - ScaleFC_RhoSq_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - para->getParD(0)->offFC); - getLastCudaError("ScaleFC_RhoSq_comp_27 execution failed"); + //ScaleFC_RhoSq_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], + // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, + // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, + // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, + // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, + // para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, + // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, + // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, + // para->getParD(0)->offFC); + //getLastCudaError("ScaleFC_RhoSq_comp_27 execution failed"); ////////////////////////////////////////////////////////////////////////// // ScaleFC_RhoSq_3rdMom_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], @@ -1902,6 +1927,17 @@ void Simulation::run() } ////////////////////////////////////////////////////////////////////////// //coarse to fine interpolation + ScaleCF_comp_D3Q27F3_2018( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], para->getParD(1)->g6.g[0], + para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, + para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, + para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, + para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, + para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, + para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, + para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, + para->getParD(0)->offCF); + getLastCudaError("ScaleCF_comp_D3Q27F3_2018 execution failed"); + //////////////////////////////////////////////////////////////////////// //ScaleCF_comp_D3Q27F3(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], para->getParD(1)->g6.g[0], // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, @@ -1935,16 +1971,16 @@ void Simulation::run() //para->getParD(0)->offCF); // getLastCudaError("ScaleCF_Fix_comp_27 execution failed"); //////////////////////////////////////////////////////////////////////// - ScaleCF_RhoSq_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - para->getParD(0)->offCF); - getLastCudaError("ScaleCF_RhoSq_comp_27 execution failed"); + //ScaleCF_RhoSq_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], + // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, + // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, + // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, + // para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, + // para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, + // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, + // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, + // para->getParD(0)->offCF); + // getLastCudaError("ScaleCF_RhoSq_comp_27 execution failed"); ////////////////////////////////////////////////////////////////////////// // ScaleCF_RhoSq_3rdMom_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, diff --git a/targets/apps/LBM/lbmTest/main.cpp b/targets/apps/LBM/lbmTest/main.cpp index 7cb8488b8..df6e1abe7 100644 --- a/targets/apps/LBM/lbmTest/main.cpp +++ b/targets/apps/LBM/lbmTest/main.cpp @@ -288,18 +288,64 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - bool useGridGenerator = true; + bool useGridGenerator = false; if(useGridGenerator){ enum testCase{ - DrivAer, + Sphere, + DrivAer, DLC, MultiGPU }; - int testcase = MultiGPU; + int testcase = Sphere; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + if( testcase == Sphere) + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + { + real dx = 0.2; + real vx = 0.05; + + TriangularMesh* SphereSTL = TriangularMesh::make("E:/temp/GridSphere/2018/STL/SphereNotOptimal.stl"); + + gridBuilder->addCoarseGrid(- 5.0, -5.0, -5.0, + 10.0, 5.0, 5.0, dx); // DrivAer + + gridBuilder->setNumberOfLayers(10,8); + gridBuilder->addGrid(SphereSTL, 2); + + gridBuilder->addGeometry(SphereSTL); + + gridBuilder->setPeriodicBoundaryCondition(false, false, false); + + gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!! + ////////////////////////////////////////////////////////////////////////// + gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx , 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx , 0.0, 0.0); + + gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); + + gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); + + ////////////////////////////////////////////////////////////////////////// + SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); + ////////////////////////////////////////////////////////////////////////// + + gridBuilder->writeGridsToVtk("E:/temp/GridSphere/2018/grids/outSphere/DrivAer_Grid"); + gridBuilder->writeArrows ("E:/temp/GridSphere/2018/grids/outSphere/DrivAer_Grid_arrow"); + + SimulationFileWriter::write("E:/temp/GridSphere/2018/grids/gridSphere/", gridBuilder, FILEFORMAT::BINARY); //FILEFORMAT::ASCII + + //return; + + gridGenerator = GridGenerator::make(gridBuilder, para); + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if( testcase == DrivAer ) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -662,7 +708,7 @@ int main( int argc, char* argv[]) { try { - multipleLevel("F:/Work/Computations/gridGenerator/inp/configTest.txt"); + multipleLevel("C:/Users/schoen/Desktop/bin/3D/VirtualFluidsGpuCodes/Sphere/configSphere.txt"); } catch (const std::exception& e) { -- GitLab