Skip to content
Snippets Groups Projects
levelSet3D.cl 1.25 KiB
__kernel void initScalar(__global float* scalar,
			 float4 minPos,
			 float4 size)
{
  uint gidX = get_global_id(0);
  uint gidY = get_global_id(1);
  uint gidZ = get_global_id(2);
  uint i;
  float4 pos, center=(float4)(0.35, 0.35, 0.35, 0.0);
  for(i=gidX; i<WIDTH; i+=WGN)
    {
      pos = (float4)(i*size.x, gidY*size.y, gidZ*size.z, 0.0);
      scalar[i+gidY*(WIDTH)+gidZ*(WIDTH*WIDTH)] = ((distance(pos, center)<0.15) ? 1.0 : 0.0);
    }
}

__kernel void initVelocity(__global float* veloX,
			   __global float* veloY,
			   __global float* veloZ,
			   //float t,
			   float4 minPos,
			   float4 size)
{
  uint gidX = get_global_id(0);
  uint gidY = get_global_id(1);
  uint gidZ = get_global_id(2);
  uint i;
  float pix,piy,piz;
  float time_term = 1.0;//cos(t*M_PI/3.0f);

  for(i=gidX; i<WIDTH; i+=WGN)
    {
      pix = i*size.x*M_PI;
      piy = gidY*size.y*M_PI;
      piz = gidZ*size.z*M_PI;

      veloX[i+gidY*(WIDTH)+gidZ*(WIDTH*WIDTH)] = 2.0 * sin(pix)*sin(pix)*sin(2.0*piy)*sin(2.0*piz)*time_term; // Vx(x,y,z)
      veloY[i+gidY*(WIDTH)+gidZ*(WIDTH*WIDTH)] = -sin(2.0*piy)*sin(pix)*sin(pix)*sin(2.0*piz)*time_term;// Vy(y,x,z)
      veloZ[i+gidY*(WIDTH)+gidZ*(WIDTH*WIDTH)] = -sin(2.0*piy)*sin(2.0*piz)*sin(pix)*sin(pix)*time_term;//Vz(z,x,y)
    }
}