-
Jean-Matthieu Etancelin authoredJean-Matthieu Etancelin authored
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)
}
}