{ \
uint pDims = cudaGridSize((
uint)size, BLOCK_SIZE); \
if (type == ParticleApproximation<TDataType>::KT_Smooth) \
{ \
return SmoothKernel<Real>::integral(r, h, s); \
}; \
Func << <pDims, BLOCK_SIZE >> > (__VA_ARGS__, lambdaFunc, ParticleApproximation<TDataType>::mScalingFactor); \
} \
else if (type == ParticleApproximation<TDataType>::KT_Spiky) \
{ \
return SpikyKernel<Real>::integral(r, h, s); \
}; \
Func << <pDims, BLOCK_SIZE >> > (__VA_ARGS__, lambdaFunc, ParticleApproximation<TDataType>::mScalingFactor); \
} \
cuSynchronize(); \
}