void MonaghanKernel::monaghanGradient( const Vec3r& r, Vec3r& gradient ) { HReal dist = r.length(); HReal q = dist*m_invH; gradient.fill(0.0); if( q >= 0 && q < 1 ) { HReal scalar = -3.0f*(2-q)*(2-q); scalar += 12.0f*(1-q)*(1-q); gradient = (m_g*m_invH*scalar/dist)*r; } else if ( q >=1 && q < 2 ) { HReal scalar = -3.0f*(2-q)*(2-q); gradient = (m_g*scalar*m_invH/dist)*r; } }