Forum Replies Created
In my second post I indeed did not use the maxwell construction rule to show that the simulation follows the young-laplace law. The results show the same trend, but are quite dissimilar.
If you look at the difference between droplet center pressure minus the pressure far away, that pressure difference increases linearly with 1/r. This is the young-laplace law.
If you look at the difference between droplet center density minus the equilibrium density, it increases linearly with 1/r. It follows the same trend as the laplace law and has a similar origin, but is an aphysical phenomena. In the pseudopotential method, the “liquid phase” is slightly compressible (real liquids are not). Since the pressure increases due to the young-laplace, that compresses the liquid as well, thus increasing the density.
I can’t help you with the multicomponent case since I am not working with it. I’ll be releaseing my thermal multiphase code soon (1-2 weeks). That should feature the laplace pressure test.
I hope that answeres your question.
A small correction to my previous statement.
When only looking at density, then the difference between the density at the center of the droplet and the rim of the droplet should be taken. When looking at the pressure
p = cs2 \rho + G 0.5cs2 \psi^2then the difference between the center and the edge of the simulation should be taken. Both will result in a linear relation to 1/r showing that is follows the laplace, but only the pressure version should be used to calculate the resultant surface tension.
At a tr=0.7, I get a center pressure of around O(1e-3), and a pressure of around O(1e-4) at the simulation edge. I hope that clarifies the problem a bit more.
Regarding your Young-Laplace question, this is how I did mine.
I simulated a droplet and let it come to rest. The maximum time step that I have allowed for the simulation is 500k, or if it converged. Convergence was done via OpenLB’s ValueTracer using the average energy, over an interval of 100 steps and 1e-5 for the standard deviation.
The young-laplace law is regarding the pressure difference between the center of the drop and the rim of the droplet. For the “center” I used the location of maximum density in the simulation domain. For the “outer edge” I used the liquid density gotten via the Maxwell construction (equal area).
1) I am also currently working on simulating the Young-Laplace test. I’ll get back to you when I have my results.
2) In OpenLB there is no SC MRT operator. You can make your own MRT descriptor by adding the tag::MRT to your descriptor. As far as I know the standard Forced MRT operator uses the Gou forcing scheme which is notoriously bad for the pseudopotential method. I am currently working on implementing Li’s MRT for D2Q9. If you have problems with high spurious currents, try using a thicker phase interface.
3) All OpenLB boundaries technically work with the pseudopotential method. Using a pressure BC also sets the density and as such the phase. There is also a hidden away convection BC in OpenLB which is as far as I know meant to be used in combination with advection diffusion dynamics but works with normal dynamics as well.
Also relevant is my question here: https://www.openlb.net/forum/topic/setting-both-density-and-velocity-at-boundary/
Thank you for the rename trick.
I have managed to get my simulations to work with the ramp idea, but the possiblity to set layers is helpful and opens up some other simualtion possibilities.
In most cases you can use the converter provided by OpenLB to convert from non-dimensional to dimensional numbers.
Do note that the pressure in the converter assumes no pseudopotential modification, i.e.:
p = cs^2 * ρand not
p = cs^2 *( ρ + G/2 Ψ^2 )
I can highly recommend the book The Lattice Boltzmann Method Principles and Practice by Krüger et al.
They have a good section on multicomponent flow. They also detail how to convert from dimensional to non-dimensional numbers.
Even when simulating a droplet at rest, there are always spurious currents that arise. Those are numerical artifacts and aphysical, however that means that there is a non-zero velocity component in the simulation. You also have the grid spacing dx and time step dt to work with.
The surface tension that emerges in LBM is a function of the pseudopotential and not density as it is in real life. Thus your surface tension depends on your pseudopotential function used.
Since I have purely worked with single component multiphase flow, I cannot help you with your rayleighTaylor2d omega problem.
JuliusOctober 9, 2020 at 12:23 pm in reply to: Compiling OpenLB in parallel and running it with a set number of threads #5218
In my config.mk I have
PARALLEL_MODE := MPIand
CXX := mpic++
Running that with the
mpiruncommand allows me to change the number of threads.
I also have as a first message:
[MpiManager] Sucessfully initialized, numThreads=15for me. Maybe the manager is an issue?
Regards, JuliusOctober 8, 2020 at 11:14 pm in reply to: Compiling OpenLB in parallel and running it with a set number of threads #5214
I think in the user manual page 38, “2.11 Lesson 11: Run Your Programs on a Parallel Machine” has your answer.
“To run the program in parallel, use the command
mpirun -np 2 ./cavity2d. Here
-np 2specifies the number of processors to be used”
Use the flag
--use-hwthread-cpusto enable threads in addition to individual cores.
I just realized that I overread your need for multicomponent flow.
My answer came from the point of single-componet flow, but I do hope that it is still useful to you
I’m currently doing my Msc thesis on a similar topic. So while I am not an OpenLB dev, I am quite familiar with the workings. So here are my answers to your questions:
1) The ShanChen method is possible to use in OpenLB. The forces are added via a coupling given in
shanCehnForcedSingleComponentPostProcessor. An example of that on OpenLB is given in:
examples\multicomponent\phaseSeparation. You can give walls a fictitous density and set the surface wettability in that way.
2) I am also using Li’s method, and yes indeed it is possible to use it. You would need to create / modify a couple files however (I highly recommend create). You need an additional descriptor field in your fluid lattice to save the calculated pseudopotential. Then you need to copy the post processor, adapt it for your new NSdescriptor and save the calculated pseuodopotentials into the descriptor field. Then you need to copy the Gou forcing and modify the velocity before the force calculation, but after the collision calculations.
3) I cannot say anything about that.
4) That depends on your equation of state. Li’s method deals with the thermodynamic inconsistency when using an EoS, like the peng robinson one. I believe the instability occurs due to high spurious currents. You can use an MRT collision operator to reduce those, or decrease the repulsive coefficient in your equation of state (that is
ain the PR EoS). While the thermodynamic inconsistency suffers a bit, I have managed to reach a density ratio of 1000 at a temperature ratio of 0.6 with the BGK collision operator in 3D.
5) External forces can be added easily. Just add to the force a
F=g*(rho_local - rho_average). Do note that you should exclude that force for the modified velocity when using the Li’s method.
I hope that helps you a bit further.
If any of the developers would like to chime in and correct a mistake I’ve made, please do so.
- This reply was modified 12 months ago by Julius.
Thank you for looking into my bug report.
Your comment regarding how the population is stored into the cell values was very helpful. And indeed, with that in mind, my bug report was erroneous.
Since I am relatively new to the LBM scene, I was not aware that such measures are taken to reduce the numerical roundoff error. Perhaps it would be nice to make that clear in the documentation. Technically, it is written in there on page 49 (olb_ug-1.3r0), but only in one sentence, which can be easily read over.
Thank you for your time and help!
Thank you! It didn’t occur to me that I can just set the velocity and density at the inlet with iniEquilibrium and simply not use a boundary manager.
For all other users who want to do the same, do not forget to exclude the inlet material from the shan-chen coupling, since there are now no ghost nodes to grab density from. (or make your own ghost nodes)