WaveHeight not consistent with piston generation?


I am doing a simulation using a piston to generate waves unto a beach. The piston parameters are:

After the ramp periode I see that the amplitude of the pistion motion matches the given amplitude of 0.305757 m. But when I use a gauge to analyze the wave height as such (green is wave gauge):

Which is about 0.18 m above 0 (still water level). To my understanding WaveHeight = 2 * WaveAmplitude, which means in this case using gauge I find WaveHeight = 0.36 m, but in my initial piston settings it said it would only produces waves of height 0.3 m?

Can anyone clear my confusion / explain to me why my settings are not implemented properly - it is a difference of 20%..

Kind regards


  • The desired generated waves are properly developed far from the piston.

    However you are now checking surface elevation too close to the piston.

    Ideal is to allow one wavelenght from piston for a complete and accurate wave developement.

    This is why we re commend to include an object that you may be studying at one wavelenght from the piston.

    To check this you can compare the time series of wave elevation at a close position from the piston and at one wavelength.


  • Dear Asalish3d,

    the term "Amplitude" refers to the amplitude of the piston movement (0.5*Stroke). In your case, it happens that this quantity is very similar to the desired wave height but is just a coincidence depending on your target wave conditions.

    Regarding the measured water surface elevation, I agree with Alex. Close to the wavemaker there are the so-called evanescent modes, which disappear at a distance equal to at least 1 time the water depth. I do recommend you to measure at least at that distance from the piston or even further.

    My regards


  • edited May 2020

    Thanks both of you.

    @Alex how do I know the exact wave length? Usually the wave length is defined as lambda = wave velocity / frequency. I know the frequency since I know the period (in this case 6s), so frequency = 1 / 6s, but do I somehow know the wave velocity before hand? I have tried putting a gauge 11 meters from the piston and then the result is:

    Which is still not fully developed, green dot is the gauge 11 m away:

    @iarba27 thanks for the comment regarding the stroke and the amplitude. I have placed one 11 metres away now, but still do not see what I expect.. Have I misunderstood something again?

    Kind regards

  • Wavelength=25.5834 m

    We compute that value here:

    that is why ETA at 11m is not enough

    Another consideration is that waves are properly propagated using sthg like 10 particles per wave height

    In your case H=0.3m therefore you have to use dp=0.03m!!!!!!!!!!


  • Oh sorry, you are absolutely right I was not looking properly the wave length was just infront of me! I am using that value now, using your "wavelength(gravity,depth,period)" function now, which is so nice in the xml :-)

    I am going to test using dp = 0.05 (bit worse than the usual), dp = 0.025 (a bit better) and dp = 0.0125 (much better) to learn and improve. Will post my results when I get them.

    Kind regards

  • These are the results:

    I have offset all values with the initial value of measurements (since gauge was just a bit under 0), and then this is the plot I get. It seems like the wave displacement converges, which is good, and if I am correct it seems better now atleast initially, since diff. between two peaks is around 0.3 now:

    But then for some reason the wave height later on becomes smaller, is this because of no damping? I have not applied damping at shore since my domain is quite large, 60 m in x direction with wave length of about 26m..

    Kind regards

  • You should also compute the reflection coefficient of your dissipative beach.

    There are different methods to compute CR for regular waves... Healy method is one of the most known.

    More information in:

    Altomare C, Domínguez JM, Crespo AJC, González-Cao J, Suzuki T, Gómez-Gesteira M, Troch P. 2017. Long-crested wave generation and absorption for SPH-based DualSPHysics model. Coastal Engineering, 127: 37-54 doi: 10.1016/j.coastaleng.2017.06.004.

  • Thanks for confirming my thought ! I will look into this when making the simulations a bit more complex for later. Currently trying to compare the effect of DBC versus mDBC + FreeDrawMode

    Kind regards

  • @Alex I think you might find this interesting. Comparison of wave heights of similar simulations using either DBC or mDBC + Freedraw mode on a wave tank:

    Upper plot is dp = 0.05, then 0.025 and finally dp = 0.0125 [m] in last plot.

    Kind regards

  • Interesting.... but difficult to know what is more accurate....

    In order to get a better comparison you should include in the three plots a black line with theoretical surface elevation at 26m from piston...

    You have to use savemotion xpos=26 and plot elevation02 from WavePaddlemkXXX.csv


  • Sorry, but I cannot redo the simulations right now.. for now though I have seen that by accident I have saved paddle data at 40m away from the piston so in theory even better.. When I plot this on top I see (yellow):

    That as expected early on the generated waves and theoretical value overlap but later on the waves lose a bit of height due to reflection as we have discussed. The initial part is just the start up phase. It seems that the mDBC MIGHT represent better, because the last case seems to have a "twist" as well on the generated wave (last subplot), but due to the paddle only returning a value at each 0.3 s, it is not entirely clear. Overall I am happy that theoritical elevations match what is output in the numerical simulation, this is great.

    Kind regards

  • mDBC improves the gap between piston-type wavemaker and fluid which also guarantees a better agreement in the peaks of the throughs!

    This is what we have observed before and it is also confirmed in your simulations. The improvement in the throughs is observed with mDBC.

    Not sure what you mean with better theory at 40m instead of at 26m... note that this is theory, so results will be the same!

    We are still working on mDBC in order to provide different slip modes: i) v=0, ii) no slip, iii) free slip. These options should be available in final v5


  • Ah okay, then I don't think I completely understand why one would want to specify xpos or zpos, if it is the same everywhere? But never the less good to hear.

    And yes it is very nice to see SPH progressing with boundary conditions and the new ones will allow for even better simulations, for example one I want to do for fun is lid driven cavity :-)

    Kind regards

  • edited May 2020

    What I meant is that theoretical signal at one wavelength or higher will be the same in terms of amplitude and phase, however the timing will not fit. If you compare the SPH surface elevation at L (wavelength) from piston and you compare that with theory at L from piston... then they will agree and they should be synchronised, do you know what I mean?

    And yes, Lid driven cavity is one of the cases we also want to include now

    thanks for your support

  • Ah yes I think I understand now, there seems to be a small timing mismatch also in my plots, which I just spotted, but that makes sense with your explanation now.

    Kind regards

  • edited May 2020

    @Alex, I have been diving deeper into the topic and produced this plot now:

    The "Analytical" is done at dp = 0.0125. EDIT: extracted at particle resolution of dp = 0.0125, analytically as you showed with "save motion of paddle"

    The upper subplot is the same as shown earlier in the thread where we see good agreement with wave height of 0.3 initially, but due to reflection issues the wave height gets lower over time.

    The bottom subplot is then a case where I have used different parameters:

    Look at column, "Harsh". Unfortunately in this case it is quite clear that the wave height does not become 1.0, but at max 0.75. I have confirmed with the run file that this is actually what happened:

    And looking at the LeMehaute diagram I see:

    It let me run without any error.

    Question: How come that at higher wave heights the produced waves are more wrong? Especially looking at the first plot in this post

    Kind regards

  • Dear Asalih3d,

    in your case the Harsh case has not just the higher wave height, but also the shorter period. Wave is therefore steeper. H/L=0.1, quite steep indeed. First of all you are generating outside the recommended range: your waves belong to the 3rd or 4th order and I can see a clear second crest in the wave trough of the analytical solution. This suggest that you are over the suggested limit of the Ursell number (8pi/3). besides, steeper is the wave, larger is the error the possible error related to the generation theory itself (Ursell, 1960). For steepness of 0.1, I would expect a generated wave at least 10% smaller than the target one.



  • Thanks for the explanation @iarba27 !

    I assume that H/L = 0.1 is from wave height divided by wave length ?

    And it makes good sense what you are saying because basically using DualSPHysics we are now for the harsh wave trying to approximate a 3rd order theory wave using 2nd order theory..

    I actually don't quite understand what steepness is (when talking about waves), but I have ensured that I did not get any warning when running the simulation about steepness etc., but this shows that it is always good to check numerics with analytics etc.

    Kind regards, thank you

Sign In or Register to comment.