/* Implement Mixed Gradient (Lee et al. JCP 2016)*/ #include //#include #include "hip/hip_runtime.h" #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 const 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,idx; int np,np2,nm; // neighbors double v,vp,vp2,vm; // values at neighbors double grad; N = Nx*Ny*Nz; int S = Np/NBLOCKS/NTHREADS + 1; for (int s=0; s>>(Map, Phi, Gradient, start, finish, Np, Nx, Ny, Nz); hipError_t err = hipGetLastError(); if (hipSuccess != err){ printf("hip error in ScaLBL_D3Q19_MixedGradient: %s \n",hipGetErrorString(err)); } }