/* Implement Mixed Gradient (Lee et al. JCP 2016)*/ #include #define NBLOCKS 560 #define NTHREADS 128 __global__ void dvc_ScaLBL_D3Q19_MixedGradient(int *Map, double *Phi, double *Gradient, int start, int finish, int Np, int Nx, int Ny, int Nz) { static int D3Q19[18][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}, {1,1,0},{-1,-1,0},{1,-1,0},{-1,1,0}, {1,0,1},{-1,0,-1},{1,0,-1},{-1,0,1}, {0,1,1},{0,-1,-1},{0,1,-1},{0,-1,1}}; int i,j,k,n,N; int np,np2,nm; // neighbors double v,vp,vp2,vm; // values at neighbors double grad; int S = N/NBLOCKS/NTHREADS + 1; for (int s=0; s>>(Map, Phi, Gradient, start, finish, Np, Nx, Ny, Nz); cudaError_t err = cudaGetLastError(); if (cudaSuccess != err){ printf("CUDA error in ScaLBL_D3Q19_MixedGradient: %s \n",cudaGetErrorString(err)); } cudaProfilerStop(); }