 // physicalY - The number of rows allocated for the array
 //******************************************************************************
 __global__
-void fixRhoGridSides(float rhoe[], float rhoi[],
+void fixRhoGridSides(float* __restrict__ rhoe, float* __restrict__ rhoi,
                      const unsigned int logicalX, 
                      const unsigned int logicalY,
                      const unsigned int physicalX, 

// size - The total number of grid points
//******************************************************************************
__global__ 
void getFinalRho(float rho[],
                 const float rhoi[],
                 const float rhoe[],
                 const unsigned int size)
{
   unsigned int index = blockDim.x * blockIdx.x + threadIdx.x;

//        a3 = area.z, a4 = area.w
//******************************************************************************
__global__
void calcA(const float2* __restrict__ particleLocations,
           float* __restrict__ area1,
           float* __restrict__ area2,
           float* __restrict__ area3,
           float* __restrict__ area4,
           const unsigned int numParticles,
           const unsigned int NY,
           const float DX,
