Use of Initial Surface Condition

I am looking to create a case whereby the wave generated is created by gravity-driven propagation from an initial condition of particular surface water elevations.

So, for example, I would start at t=0 with a deformation in the water surface, and then allow the effects of gravity to propagate the subsequent wave.

Is this possible within DualSPHysics? If so, please could someone point me in the direction of finding out how to achieve this?

Any advice is much appreciated. Thanks.


  • There are many waves to create waves in the code:

    • imposing automatic generation condition to a piston or a flap: regular, irregular and solitary
    • using inlet conditions (inletoutlet examples)
    • using relaxation zone (wavecoupling examples)


  • Hi Alex,

    Thank you for your reply, I have experimented with these options previously and it wasn't quite what i was after.

    Perhaps I could just create a custom geometry as the upper bound of the wave tank and remove it at t=1, thus essentially creating a proxy initial condition - I'm not sure if this has been done before.

    Thanks again.

  • Could you not just use an CAD geometry with your initial shape of liquid, fill it with particles and then let gravity do what it tends to do?

    But maybe I don't quite understand what you want to achieve.

  • Thanks for your suggestion @InDie , I think I understand what you are suggesting, but please let me clarify:

    I am trying to make a wave tank with some complex geometry as a base (1), not amazingly illustrated here but may have a rock, or similar along the track.

    I would normally then use a BoxFill or similar to fill this tank to a level (2), as this allows me to fill any gaps in this complex geometry with fluid particles.

    What I am trying to achieve (as shown in (3)) is to start at t=0 with a depression (or, indeed a perturbation) which can then be allowed to propagate outwards. This is where I am struggling, to create this 'cut out' or inverse 'perturbation'. Is there a way to create a non-straight fluid surface like this already?

  • What I did for my simulations which is a bit different: I have a container created with a CAD tool, saved it as stl and use the xml files to fill the volume with boundary particles. The fluid is also generated by filling up a volume stored in a stl file.

    What I did to obtain both: I've used CATIA and created the container geometry, then a box that extended beyond the container but which had the correct liquid surface shape. Using the boolean operations I could create a volume that represented exactly the fluid volume I wanted (basically using the container as a cutting geometry to substract from the fluid box the useless outer parts.

    In the image below the black contour represents my container, the blue box the geometry that was to become my fluid geometry. By doing as described above I could delete the blue parts outside the black contour and the remaining shape is now my fluid volume. I've saved this remaining volume as stl and used it with the appropriate xml tags to fill it with fluid particles.

    Please note: The image below is 2D while of course the CATIA geometry is 3D. In order to have a 2D simulation it is sufficient to set the appropriate dimension in <geometry><definition> to zero.

    Please also note that you cannot use CATIA stl directly with DualSPHysics. It won't work. To make it work you have to export your CATIA geometry as stl, then open it in FreeCAD and export it again as stl. Then it will work.

  • Hello, it is difficult for me to create an .stl file as an inlet boundary with initial velocity (using: special->Inlet/outlet->zone3D), the error is as follow:

    *** Exception (JSphInOutPoints::Create2d3d_Particles) at ..\source\JSphInOutPoints.cpp:165

    Text: Domain size of particles in direction Y is not zero.

    File: C:/Users/1/Desktop/3/heart_Part3/heart_Part3_out/heart_Part3.xml(row:63)

    Could you give me some tips? Thanks!

Sign In or Register to comment.