#pragma OPENCL EXTENSION cl_khr_fp64 : enable double2 sample(const double qy, const double qz, const double r, const double h, const int dwba) { return (double2)(qy,qz); } __kernel void dwba(const int ny, const int nz, const double r, const double h, const __global double* qy, const __global double *qz, __global double* res, const int dwba, const int vector) { if (vector == 0) { int iy = get_global_id(0); int iz = get_global_id(1); int ind = iz+nz*iy; if (qz[iz] < 0) { res[ind] = 0; return; } res[ind] = length(sample(qy[iy], qz[iz], r, h, dwba)); } else { const double q0 = 2*M_PI/0.139; const double alpha_i = 0.2*M_PI/180.; double2 tmp; int i = get_global_id(0); res[2*i] = 0; res[2*i+1] = 1; if (i < ny) { if (dwba == 0) { tmp = sample(qy[i], 0, r, h, dwba); } else { tmp = sample(qy[i], -q0*sin(alpha_i), r, h, dwba); } res[2*i] = tmp.x; res[2*i+1] = tmp.y; } if (i < nz) { tmp = sample(0, qz[i], r, h, dwba); res[2*(i+ny)] = tmp.x; res[2*(i+ny)+1] = tmp.y; } } }