How to create a shaking container


I'm trying to set up a shaking container (cylinder) of fluid using DualSPHysics. I created a volume with min (-0.05,-0.05,-0.5) max (0.25, 0.25, 0.5) containing a cylinder of radius 0.04 and points (0.05, 0.05, 0.0), (0.05, 0.05, 0.08), and used a fillbox to create some fluid inside the container:

                  <setshapemode>actual | dp | bound</setshapemode>
                  <setmkbound mk="0" />
                    <setdrawmode mode="face" />
                    <drawcylinder radius="0.04" objname="Container">
                        <point x="0.05" y="0.05" z="0.0" />
                        <point x="0.05" y="0.05" z="0.08" />
                    <setmkfluid mk="0" />
                    <fillbox x="0.05" y="0.05" z="0.015" objname="FillBox">
                        <point x="0" y="0" z="0" />
                        <size x="0.1" y="0.1" z="0.031" />

I tried to apply a sinusoidal rectilinear motion to the boundary particles to make them "shake", but I think I'm misunderstanding how the motion works. I tried this motion type:

            <objreal ref="0">
                <begin mov="1" start="0" />
                <mvrectsinu id="1" duration="1.0" anglesunits="degrees" next="1">
                    <freq x="0.0" y="0.0" z="1.0" units_comment="1/s" />
                    <ampl x="0.0" y="0.0" z="0.0001" units_comment="metres (m)" />
                    <phase x="0.0" y="0.0" z="0.0" units_comment="degrees" />

which my understanding would result in a shake with frequency 1 Hz and a maximum amplitude of 0.0001m/s^2, which I think should also result in a maximum displacement of 0.0001m (well within the bounds of 0.5 in the z axis).

When I run this case, after 0.07120s simulation time the simulation halts with the error:

Excluded for: position=20073  rhop=0  velocity=0
Some boundary particle exceeded the +Z limit (top limit) of the simulation domain.*** Exception (JSphCpuSingle::AbortBoundOut)
Text: Fixed, moving or floating particles were excluded. Check VTK file Error_BoundaryOut.vtk with excluded particles.

which suggests somehow some of the boundary particles make it outside the domain super quickly, and I can't understand why. Is there something wrong with my motion understanding (or boxsize or something) that makes this go wrong?


  • Hi,

    I think it is a classic case of:

    You can also check which and where particle are out by looking at the Error_boundaryOut.vtk file in paraview.

    Basically, the simulation domain is computed at the start of the simulation after all part are generated, it contains all particles but no more (and it is different from the limits of gencase you enter in .xml). So as soon as your cylinder goes up or down it goes outside this domain, hence the error.


Sign In or Register to comment.