Question regarding Poiseuille flow

Greetings forum users,

I'm trying to model Poiseuille flow in DualSPHysics. However, I run into quite a lot of problems. (I will present quickly what I did and then was goes wrong).

For modelling Poiseuille flow, I create a 2D case using the DesignSPHysics plugin for FreeCAD. I create 3 objects, top & bottom which is solid and the center is fluid. I then introduce a constant force (Using example 04_ExternalForces) and enable x_periodicity. I know that a proper "inlet" and "outlet" are not yet added to DualSPHysics 4.2 but will be added in next version so I was trying to use this work-around.

Now the actual problems.
Firstly, my velocity (V_x(z)) never reaches a constant value, it keeps fluctuating quite a lot over time. I let the simulation run for a relatively long time (100 seconds) and I applied a constant force of 0.5 m/s^2 over the whole simulation.
Secondly, I know there are some boundary issues with SPH, but I get too much of a deviation. The velocity very near the walls is quite high and not close to 0 (I believe the no-slip boundary condition is set automatically, please correct me if I am wrong).
Thirdly, the velocity profile across the 2D pipe is not symmetrical, I noticed that the hyperbole is shifted slightly towards one side (usually lower velocity at bottom of the pipe). I do not know what causes it.

My ultimate goal is to simulate blood flow (multi-phase, Re~100), so I was trying to benchmark simple Poiseuille flow.

If anyone got some tips/directions or explanations I will gladly hear them. Additionally, I tried adding figure files but it was not allowed, if there is a need I will try to post some results (and possible input).

Much appreciated already,


  • I hope this helps
    You can follow this exampl:
    But note that witth DBC (boundary conditions) you have to use high resolution...

  • Hey Alex,
    Thanks for the reply.
    I was following the example, and trying to do it from scratch. I indeed narrowed down the issue to the resolution, but thank you for confirming my suspicion.
    I'm just surprised how high the resolution has to be for it to be resolved properly. The diameter of the channel is 1 mm in the example, while I would like to model something along the size of 50 mm diameter. Would this mean that a ridiculous amount of particles would be needed? (Or could I increase the resolution near the boundaries only?)

  • The problem of resolution is more important for this academic case, since DualSPHysics is developed for engieering problems. However this academic case can be also solved if high resolution is used since DBC do not solved properly the boundary layer.
    We are working on different type of boundary conditions, but DBC are ok for real applications, but no for academic cases as this one

  • Hello Dominykas,

    I'm trying to do the same thing as you are. Only difference is I'm using fill algorithm instead of a third rectangle(box) for the fluid.

    In examples/Poiseuille the driving force is the acceleration in z-direction. What I'm trying is to change the geometry such that the flow will be in x-direction due to the force acting in x-direction. I started with taking gravity to be in x-direction with a magnitude of 0.0001 just like in Poiseuille test case.

    Attached is the velocity field I'm getting. Any ideas on what I might be missing?

    Thank you.
  • Hello Circles,

    In the Poiseuille example (15) the driving force should be in the x-direction, 0.0001 G.
    From what you told me I can not pinpoint the error exactly. However, it could be related to your data range. I believe you are using paraview, and you can rescale your data range quite easily. Your data range goes from 3 to 0.003 m/s, which is way too high. The velocity should be around 1e-05, for a force/gravity_x of 0.0001G.
    Have you used the .xml provided by example 15, or did you make your own (by modifying example 01 for example)? You could be possible not simulating it "fine" enough.

    I hope this gives you some direction to work in.

  • Happy Christmas!

    When I use the .xml in example_15, I reproduce the results. What I'm trying to do is to disable gravity, and read the force field from a file at each time step.

    But, it's not reading anything and as a result nothing in the system is moving. I've been trying to pinpoint the issue for quite some time now. I think I'm missing something either essential or minor, could someone please help me figuring this out?

    Google Drive link

    Thank you.
  • @circles

    Your values up here are not defined properly

    Your constant b is equal to 1.12e5 when in theory it should only be 143. The formula is given as (rho_reference*speedsound^2)/gamma, so basically (1000*1^2)/7 in your case - instead you have used an enormous value of b. When you use this enormous value the time steps will be very miniscule which might be the reason that you are not experiencing any movement.

    Refer to the Github documentation of DualSPHysics for Equation of State to find the formula of b.

    Try using b = 143.

    Kind regards

  • Thanks for the reply.
    I thought 1.12e5 is supposed to be used when we're simulating a case without gravity. I tried b=143 and still nothing. I'm not sure if it's reading the data file.
    I'll keep working on it and if I figure it out, I will post it here.

    Thanks again!
  • It seems like your case name is "plates", while your xml file is CaseForces_Def - if you are using the GUI this might be the problem - if you are running bat files ensure that you are accessing the right xml through checking name property etc.

    Else you can always verify which parameters you chose by having a look at the output "run.out" file. So you can verify whether b was changed or not.

    If nothing else works - start over in a new folder.

    Kind regards
  • b seems to be changed in run.out file. I also changed the case name. Still nothing.

    I have no idea on what I'm missing. I'm really confused.

    Thank you for your time!
  • No problem - try starting with the default XML file and changed settings one step at a time and documenting your changes, if it works or not etc. You might discover a bug, and then you can let the DualSPHysics team now or you might solve your problem. I hope you get it to work!

  • Here's the geometry, data file, .bat and the run.out file. X axis is the streamwise direction so that's why I defined acceleration only in x-direction. I know it sees the file but I'm not sure if it is reading it.
    2.PNG 4.7K
    1.PNG 18.6K
    4.PNG 13.5K
    3.PNG 22.4K
  • When I run /examples/main/04_ExternalForces, as circled in red I see the external file configurations. On the other hand, when I run the case that I modified, I do not get that information. But the data file is copied in to case_out folder. So , I guess the computer knows that there is a data file but why would it not read it?

    Thank you.

    6.PNG 39.5K
    5.PNG 38.7K
  • Hey again

    I think your path to the datafile might be wrong then or maybe the way you have entered the data file might be wrong, i.e. DualSPHysics is able to read it, but read the wrong coloumns etc.

    My suggestion would be to try starting from the original XML and change one parameter of a time (of the ones which might have influence) to see what is breaking it. In best case scenario you get it to work or in worst case you discover a bug.

    Another suggestion would be to try using the examples data file in your case - does it work then? This would suggest an error in your modified data file.

    Kind regards
  • Hello again,

    I think I got it to work. Instead of using an open container, I used a closed container with only inlet and outlet being open faces. I am not sure if that was the problem but it works now.

    Thank you for your help! I mean it.

    Have a good day.
  • edited January 25
    No problem, @circles !

    I think your problem with open container might be fixable using the periodic boundary condition. As far as I understand Poiseuille flow phenomena is only observable in a closed container, so I think you did make the right choice.

    "In nonideal fluid dynamics, the Hagen–Poiseuille equation, also known as the Hagen–Poiseuille law, Poiseuille law or Poiseuille equation, is a physical law that gives the pressure drop in an incompressible and Newtonian fluid in laminar flow flowing through a long cylindrical pipe of constant cross section"–Poiseuille_equation

    Of course another fix would be to do a 2D simulation.

    Kind regards
Sign In or Register to comment.