Editing Source Code to Correct Kernel Gradient

After reviewing several user posts, I noticed that some are experiencing wave-decay issues in their flume (as illustrated in the example below). It took me some time to understand that this problem is an inherent limitation in the standard SPH formulation. While tuning certain parameters can mitigate the issue to some extent, it is still insufficient in resolving the problem entirely.

In my research, I came across a paper (refer to the figure below) that addresses the issue of numerical wave decay by correcting the kernel gradient. It is worth noting that this correction was applied in GPUSPH, but not in DualSPHysics.

The following is the required correction:

So technically, we need to add Matrix B into the momentum equation. I was wondering if someone knows how to get started doing this, or if the developers could incorporate similar correction.


  • Hi!

    I am not a developer, but commenting out of interest.

    Did they explain why specificically this would resolve the issue of decaying wave trains?

    I believe that the reason for DualSPHysics choosing to accept the small error at the free surface due to kernel truncation, is that it had a very small influence on results, but a heavy computational cost. The computational cost comes from the inversion of the matrix.

    I have not read the paper, but is this really the only change they do to avoid decay or do they also significantly modify the viscous term Pi?

    Kind regards

Sign In or Register to comment.