What is the idea behind doubling the number of boundary particles?

I have noticed this possibility among the constants of the settings file:

   <lattice bound="2" fluid="1" />

as also illustrated in the XML file guide.

It also shows up in the standard output of GenCase, where the number of particles is doubled

List of Points:
Points -> Floating-Boundary particles:
 block[ 0] (mk: 31):   729 -->   1458
 block[ 1] (mk: 51):   729 -->   1458
 block[ 2] (mk: 52):   729 -->   1458

In this example 729 is 9³, since I have a cube with edge length equal to 8dp.

I then wondered what is the reason for this 1|2 choice, whether there is a recommended option and to which advantage. Thanks in advance for addressing these questions.


  • Dear colleagues, I wanted to impart a little bit of bouyancy to this old topic. I am intrigued by understanding the purpose of this arrangement and which benefits brings about, or which headaches it takes away. Hence, what is recommended and why. The image above is a clip-out of the XML Guide. Thanks in advance for sharing your views.

  • Hello

    The most obvious benefit would be that in the same discretized area you would have double the amount of particles (in 2D) - therefore a higher resolution. In theory the interpolation Kernel in SPH should not care about the disordering of particles (as far as I know) as long as it is uniformly disordered.

    Doing a very quick and insufficient google search, I found this paper, which seems to go against my initial understanding. They dive a bit deeper into the topic a bit, but not with your exact setup as I can see;


    Still, it could be very interesting to dive deeper into how much different particle configurations actually affect results and accuracy. My personal dream is that one day, DualSPHysics allows one to upload a custom made particle layout and then solve that, i.e. without using GenCase.

    Kind regards

  • That option is old, and it is not used now.

    We will remove it in v5.0

    In the past, first version of the code and as a legacy of the SPHysics fortran code we included the option of creating two layers of boundary particles when we observed penetration of fluid particles. Improving formulation, the penetration of fluid particles was removed so now there is no need to keep that option since it is not recommended and not compatible with latest functionalities since version 4.


  • I don't completely understand why it would be wrong to use, since increasing the amount of particles, but keeping the mass constant of a boundary, should not change the results?

    In the past (as far as I understood) one needed to have a "thicker boundary layer", to ensure that the sum of the weighting kernel function would produce unity (1).

    I would like to understand a bit better, why it is not recommended.

    Kind regards

  • It is not recommend in the sense that our latest developments: coupling with chrono, inlet&outlet, new desnsity diffusion terms and the new multiphase model we are going to release now have been checked with all previous options, but we have not been checking those options when using lattie=2 for boundaries...

    When we have time we can check more options than lattice bound="2" fluid="1", but so far it is not recommended

    However, users can check and report us the results since we plan to release first a beta version of 5.0 this month during https://dual.sphysics.org/5thusersworkshop/, before official complete release in May-June


  • @Alex okay I see, you meant from a practical point of view. Could be fun to test yes :-)

    Kind regards

  • @Alex Thanks for this explanation. I take then that <lattice bound="2" fluid="1"/> is the safe, battle-proven option in terms of robustness.

  • The code v4.4 works perfectly with lattice bound="1" fluid="1" so there is no need to use now lattice bound="2" since we have not checked so far for all the new options


  • edited July 17

    I have seen that in the beta version of DualSPHysics 5.0 the lattice arrangement number 2 has not been removed. If you take suggestions, I would suggest to keep it actually. It can be pretty useful at cases.

    Separately increasing the resolutions of the solid and particles, by setting lattice=1 and lattice=2 for either, can help a user/developer realize what is going on in a testing stage. For example, while setting up new case, starting off with a vanilla design and seeing what the benefits of increased resolution are.

    I understand from the above posts that lattice=2 is a feature not tested with the latest functionalities in DualSPHysics. Therefore, the XML template and guide might report a formulation kind of this:

    <lattice bound="1" fluid="1" comment="Type of lattice to create the initial particles: 1: single (recommended); 2: double staggered (legacy)" />

    instead of the current

    <lattice bound="2" fluid="1" comment="Type of lattice to create the initial particles (default=1)" />

    My one and two cents.

Sign In or Register to comment.