Simulation of a Raising Droplet in a Channel Help
OpenLB – Open Source Lattice Boltzmann Code › Forums › on OpenLB › General Topics › Simulation of a Raising Droplet in a Channel Help
 This topic has 0 replies, 1 voice, and was last updated 7 years, 11 months ago by ivan.

AuthorPosts

August 27, 2016 at 1:50 pm #1854ivanMember
Hello, everybody, rnrnI am currently working on a project in which I have to simulate and study a raising droplet of a lighter fluid in a heavier one in a channel, and have been facing a couple challenges I think some of you could be able to help me out with. rnrnInitially, I took the “”MultiphaseComponentxD”” example as a start and, for simulating the channel, I have changed the dimensions of the geometry as shown below:rnrnBeforern
Code:// Parameters for the simulation setuprnconst int nx = 400;rnconst int ny = 200;rnconst int maxIter = 20000;rnrnAfterrn
Code:// Parameters for the simulation setuprnconst int nx = 100;rnconst int ny = 200;rnconst int maxIter = 5000;rnrnThen, for simulating the droplet, what was basically done was to change the origin and extend of the upper cuboid, which represented the heavier fluid, as shown below:rnrnBeforern
Code:// Sets material number for fluid and boundaryrn superGeometry.rename(0,1);rnrn std::vector<T> origin1(2,T());rn origin1[0] = 2.;rn origin1[1] = 2.;rn std::vector<T> origin2(2,T());rn origin2[0] = 2.;rn origin2[1] = ny/2.;rn std::vector<T> origin3(2,T());rn origin3[0] = 2.;rn origin3[1] = ny1.;rnrn std::vector<T> extend1(2,T());rn extend1[0] = nx+3.;rn extend1[1] = 2.;rn std::vector<T> extend2(2,T());rn extend2[0] = nx+3.;rn extend2[1] = ny/2.+2.;rnrn IndicatorCuboid2D<T> bottom(extend1, origin1);rn IndicatorCuboid2D<T> upper(extend2, origin2);rn IndicatorCuboid2D<T> top(extend1, origin3);rnrn superGeometry.rename(1,2,upper);rn superGeometry.rename(1,3,bottom);rn superGeometry.rename(2,4,top);rnrnAfterrn
Code:// Sets material number for fluid and boundaryrn superGeometry.rename(0,1);rnrn std::vector<T> origin1(2,T());rn origin1[0] = 2.;rn origin1[1] = 2.;rn std::vector<T> origin2(2,T()); > [b]Changed just to set the droplet on the horizontal centre of the channel[/b]rn origin2[0] = (nx10.)/2;rn origin2[1] = 25.;rn std::vector<T> origin3(2,T());rn origin3[0] = 2.;rn origin3[1] = ny1.;rnrn std::vector<T> extend1(2,T());rn extend1[0] = nx+3.;rn extend1[1] = 2.;rn std::vector<T> extend2(2,T()); > [b]Changed to a 10×10 cuboid[/b]rn extend2[0] = 10.;rn extend2[1] = 10.;rnrn IndicatorCuboid2D<T> bottom(extend1, origin1);rn IndicatorCuboid2D<T> upper(extend2, origin2);rn IndicatorCuboid2D<T> top(extend1, origin3);rnrn superGeometry.rename(1,2,upper);rn superGeometry.rename(1,3,bottom);rn superGeometry.rename(2,4,top);rnrnAs the cuboid that represents the heavier fluid is now much smaller ( 10×10 ), it is completely submerse on the lighter fluid, and the result is a descend spherical droplet (once the model considers the superficial tension between the fluids) .rnrnThe next step was to switch the sign of the buoyancy force in order to represent a raising droplet, as shown below:rnrnBeforern
Code:/// === 1st Step: Initialization ===rnrn olbInit(&argc, &argv);rn singleton::directories().setOutputDir(“”./tmp/””);rn OstreamManager clout(std::cout,””main””);rnrn const T omega1 = 1.0;rn const T omega2 = 1.0;rn const T G = 3.;rn [b]T force = 30./(T)ny/(T)ny;[/b]rnrnAfterrn
Code:/// === 1st Step: Initialization ===rnrn olbInit(&argc, &argv);rn singleton::directories().setOutputDir(“”./tmp/””);rn OstreamManager clout(std::cout,””main””);rnrn const T omega1 = 1.0;rn const T omega2 = 1.0;rn const T G = 3.;rn [b]T force = 30./(T)ny/(T)ny;[/b]rnrnAs result, I do get the simulation of a raising droplet on a lighter fluid in a heavier one in a channel.rnrn1. For my study, I have to analyse the influence of the droplet size on the whole simulation. Thus, I have been testing different cuboid sizes and I have observed that for smaller ones, such as 5×5 and 7×7, the size of the raising droplet diminishes with time until it completely disappears and I would like to know why it happens. My first thought was the G cohesion parameter.rnrn
Code:/// === 1st Step: Initialization ===rnrn olbInit(&argc, &argv);rn singleton::directories().setOutputDir(“”./tmp/””);rn OstreamManager clout(std::cout,””main””);rnrn const T omega1 = 1.0;rn const T omega2 = 1.0;rn const T G = 3.; // cohesion parameterrn T force = 30./(T)ny/(T)ny;rnrnOnce the G parameter is related to the cohesive forces between both fluids – in the way that if G<Gcrit the fluids will simply mix – I was wondering if it makes sense to think that, with smaller droplets, a bigger G is necessary in order to avoid them mixing. Thus, I have set a 5×5 size cuboid as droplet and raised the G parameter from 3 to 4. The droplet size still diminishes but not enough for it to disappear, which might be a sign that my thought is logical. Still, I would like to understand why this bigger G is necessary and why the droplet size diminishes. Does the Shan Chen Multiphase model considers any mass transport?rnrnrn2. Besides analysing the simulation, I am supposed to simulate it in laboratory scale, using water as the heavy fluid and decane as the light one. Thus, I would have to set the simulation in order to represent the same physical properties (density and viscosity) as the fluids I am interested into. As far as I understood, the viscosity of the fluids in this example is related to the relaxation time, which is the inverse of the relaxation frequency, set as omega, and the densities (or the difference between them) is set by the buoyancy force, as shown below:rnrn
Code:/// === 1st Step: Initialization ===rnrn olbInit(&argc, &argv);rn singleton::directories().setOutputDir(“”./tmp/””);rn OstreamManager clout(std::cout,””main””);rnrn const T omega1 = 1.0; // relaxation frequencyrn const T omega2 = 1.0; // relaxation frequencyrn const T G = 3.;rn T force = 30./(T)ny/(T)ny; //body force – buoyancy forcernrnIs it possible for me to set values for omega1, omega2, G and force that will properly represent the fluids and I am interested in? Also, would be possible to set the whole example in physical units? If so, how? Yes, I have already read about the class LBconverter but the question still persists.rnrnThank you so much for the attentionrnrnI will be having a look at this post daily so we can try to discuss is the best way possiblernrnAlso, if preferable, you guys can also write me: depalma.ivan@gmail.comrnrn

AuthorPosts
 You must be logged in to reply to this topic.