Difference between revisions of "Bubble growth detachment influence BC domain size by Michael Alletto"

From OpenFOAM Wiki
Jump to navigation Jump to search
Line 48: Line 48:
  
 
The next listing shows the blockMeshDict. The main parts are taken from here: https://openfoamwiki.net/index.php/Main_ContribExamples/AxiSymmetric. Note that the line mergeType points  should be added in the file. Otherwise zero area faces are created at the axis which cause errors in the checkMesh utility. The extension of the domain in z and x-direction can be specified by the entries Lx and Lz. The position of the points delimiting the domain boundary are calculated via the eval functionality of OpenFOAM. The number of points in x- and z-direction a specified by the variables nx and nz. The points are distributed with equal spacing.
 
The next listing shows the blockMeshDict. The main parts are taken from here: https://openfoamwiki.net/index.php/Main_ContribExamples/AxiSymmetric. Note that the line mergeType points  should be added in the file. Otherwise zero area faces are created at the axis which cause errors in the checkMesh utility. The extension of the domain in z and x-direction can be specified by the entries Lx and Lz. The position of the points delimiting the domain boundary are calculated via the eval functionality of OpenFOAM. The number of points in x- and z-direction a specified by the variables nx and nz. The points are distributed with equal spacing.
 +
 +
<TT>
 +
/*--------------------------------*- C++ -*----------------------------------*\
 +
| =========                |                                                |
 +
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
 +
|  \\    /  O peration    | Version:  v2012                                |
 +
|  \\  /    A nd          | Website:  www.openfoam.com                      |
 +
|    \\/    M anipulation  |                                                |
 +
\*---------------------------------------------------------------------------*/
 +
FoamFile
 +
{
 +
    version    2.0;
 +
    format      ascii;
 +
    class      dictionary;
 +
    object      blockMeshDict;
 +
}
 +
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 +
 +
scale  0.001;
 +
 +
mergeType points;  // Wedge geometry - Merge points instead of topology
 +
 +
Lx 10.0;
 +
Lz 20.0;
 +
 +
nx  50;
 +
ny  1;
 +
 +
nz  100;
 +
 +
Px #eval{ $Lx * cos(pi()*2.5/180) };
 +
Py #eval{ $Lx * sin(pi()*2.5/180) };
 +
MPy #eval{ -$Lx * sin(pi()*2.5/180) };
 +
 +
 +
 +
vertices
 +
(
 +
(0 0 0)
 +
($Px $Py 0)
 +
($Px $Py $Lz)
 +
(0 0 $Lz)
 +
($Px $MPy 0)
 +
($Px $MPy $Lz)
 +
);
 +
 +
 +
 +
blocks
 +
(
 +
    hex (0 4 1 0 3 5 2 3) ($nx  1 $nz) simpleGrading (1 1 1)
 +
);
 +
 +
edges
 +
(
 +
);
 +
 +
boundary
 +
(
 +
    front
 +
    {
 +
          type wedge;
 +
          faces 
 +
          (
 +
              (0 1 2 3)
 +
          );
 +
      }
 +
    back
 +
    {
 +
          type wedge;
 +
          faces 
 +
          (
 +
              (0 3 5 4)
 +
          );
 +
      }
 +
    tankWall
 +
    {
 +
          type wall;
 +
          faces 
 +
          (
 +
              (1 4 5 2)
 +
          );
 +
      }
 +
    wallBottom
 +
    {
 +
          type patch;
 +
          faces 
 +
          (
 +
              (0 4 1 0)
 +
          );
 +
      }
 +
    outlet
 +
    {
 +
          type patch;
 +
          faces 
 +
          (
 +
              (3 5 2 3)
 +
          );
 +
      }
 +
    axis
 +
    {
 +
          type empty;
 +
          faces 
 +
          (
 +
              (0 3 3 0)
 +
          );
 +
      }
 +
);
 +
 +
mergePatchPairs
 +
(
 +
);
 +
 +
// ************************************************************************* //
 +
</TT>
 +
 +
===Simulation setup===
  
 
==References==
 
==References==

Revision as of 17:54, 13 April 2021

Go back to Collection by authors.


Bubble growth detachment influence BC domain

You can download the case files [1] here.

Introduction

In a resent OpenFOAM version (see https://www.openfoam.com/releases/openfoam-v1706/numerics.php) a new interphase advection scheme was released. It is a geometric volume of fluid method. Geometric volume of fluid method means that a geometric model for the interphase position and orientation within a cell is established and advected within a time step. One can imagine that the interphase between two fluids within a cell is described as a plane which has a given position of the plane center and orientation of the normal vector. Two different method to reconstruct this plane are currently available within interIsoFoam: isoAlpha and plicRDF. isoAlpha calculates the surface dividing the two fluids based on the α iso-value which cuts the cell according to the volume occupied by the two fluids. For details see [6,7]. plicRDF uses a piece wise linear radial distance function to compute the orientation and position of the interphase within a cell. The gradient of the distance function gives the normal of the interphase. By moving the interphase position within the cell the volume fraction of the two fluids divided by the interface can be adjusted to the α value. For details see [6]. This reconstruction method was released with OF2006 (see https://www.openfoam.com/releases/openfoam-v2006/solver-and-physics.php).

In a resent paper [2] performed an extensive comparison and validation of the two reconstruction methods of interIsoFoam. They compared interIsoFoam with interFoam and another volume of fluid code (Basilisk). The main findings of the paper were that: (i) plicRDF causes the smallest parasitic currents in a static bubble, (ii) regarding a rising 2D bubble plicRDF delivers slightly better results than MULES with a bit smaller computational times and (iii) plicRDF was the only OpenFOAM version capable to predict the spiraling movement on a coarse grid of a 3D rising bubble. Note that the test cases of the paper can be downloaded here: https://wiki.openfoam.com/Collection_by_authors\#Lionel_Gamet.

Inspired by the novelty of the plicRDF interface reconstruction method and the promising results of [2], the purpose of this tutorial is to analyze the solver interIsoFoam with the plicRDF reconstruction method a bit more in detail. For this purpose the experiment described in [1] is taken as reference. [1] measured the shape of a axial symmetric air bubble exiting a circular orifice. The orifice was submerged by a liquid. This kind of test case is often used as preliminary test case for solvers which are meant to be used later to simulate boiling (see [3,4]).

In this first tutorial of a series we will analyze the influence of the boundary conditions and domain size on the flow and detachment time of a rising bubble. The next tutorials will have a look at the influence of the grid size, time step size, number of inner and outer iterations, settings of the parameter influencing the interphase advection scheme and finally also the way the curvature of the interphase is computed.

Setup of the experiment

In the next figure the experimental setup used in [1] is sketched. The experimental facility comprises a horizontal surface from which the bubble growth takes place. This surface is submerged in a 20 mm water column within a square 50 mm glass tank. The growth orifice has a diameter of 1.6 mm, is manufactured from stainless steel and is inserted into the submerged surface. With a high speed camera [1] measured the evolution and detachment of the gas bubble released from the orifice. The measured detachment time was 0.684 s. This is our main quantity of interest against we compare our simulations.

setup of the experiment


Having analyzed the experimental setup, we see that we have clear defined physical boundaries: Air enters the domain by a circular pipe. From the description of the experiment it is known that the velocity profile was parabolic like in a fully developed laminar pipe flow. The water was placed in a quadratic glass tank: From this we known that the setup was confined by walls. The height of the liquid column is also known. From the description of the experiment we also know that the rising bubble was rotational symmetric. Unfortunately the tank wall are not rotational symmetric (they are quadratic actually). For this reason the problem is not completely rotational symmetric.

Knowing the physical boundaries of the experiment we want to reproduce, we have to decided the boundary of our numerical simulation. Being this a tutorial, we want to keep the computational afford small. For this reason, we want to exploit the rotational symmetric bubble shape and decide to use a rotational symmetric grid. With this approach we can perform a 2D simulation which reduces the computational time considerably.

Furthermore we decide that the height of the domain should be equal to the liquid column since at the upper boundary the boundary condition is known. The last decision which has to be taken is the lateral extent of the computational domain. If we decide to cut the computational domain before the lateral wall, we need to carefully choose the type of boundary condition which mimics best the real condition at this artificial boundary.


Setup

The next figure shows the setup chosen for our simulation. It consists in a wedge type computational domain (it is how a rotational symmetric problem is solved in OpenFOAM). The z-coordinates points against the direction of gravity and the x-coordinate points in radial direction. At the lateral boundary we set an empty boundary condition. At the axis we set an axis boundary condition. At the inflow we will set a parabolic velocity profile to be in line with the experiment. The bottom wall boundary is also fixed. Since the top boundary conditions was not trivial to set (at least for me) we will vary it in order to see its influence on the simulation results. The boundary conditions at the outer radius is a artificial boundary conditions: Since the experimental setup was not rotational symmetric (the squared tank in which the bubble is released) we artificially restrict the possible solution by using an axis symmetric configuration. For this reason we will also vary the type of this boundary condition and its axial position to see its influence on the solution.


setup of simulation

Mesh generation

The next listing shows the blockMeshDict. The main parts are taken from here: https://openfoamwiki.net/index.php/Main_ContribExamples/AxiSymmetric. Note that the line mergeType points should be added in the file. Otherwise zero area faces are created at the axis which cause errors in the checkMesh utility. The extension of the domain in z and x-direction can be specified by the entries Lx and Lz. The position of the points delimiting the domain boundary are calculated via the eval functionality of OpenFOAM. The number of points in x- and z-direction a specified by the variables nx and nz. The points are distributed with equal spacing.


/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2012 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile {

   version     2.0;
   format      ascii;
   class       dictionary;
   object      blockMeshDict;

} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

scale 0.001;

mergeType points; // Wedge geometry - Merge points instead of topology

Lx 10.0; Lz 20.0;

nx 50; ny 1;

nz 100;

Px #eval{ $Lx * cos(pi()*2.5/180) }; Py #eval{ $Lx * sin(pi()*2.5/180) }; MPy #eval{ -$Lx * sin(pi()*2.5/180) };


vertices ( (0 0 0) ($Px $Py 0) ($Px $Py $Lz) (0 0 $Lz) ($Px $MPy 0) ($Px $MPy $Lz) );


blocks (

   hex (0 4 1 0 3 5 2 3) ($nx  1 $nz) simpleGrading (1 1 1)

);

edges ( );

boundary (

    front
    { 
          type wedge;
          faces  
          (
              (0 1 2 3)
          );
     }
    back
    { 
          type wedge;
          faces  
          (
              (0 3 5 4)
          );
     }
    tankWall
    { 
          type wall;
          faces  
          (
              (1 4 5 2)
          );
     }
    wallBottom
    { 
          type patch;
          faces  
          (
              (0 4 1 0)
          );
     }
    outlet
    { 
          type patch;
          faces  
          (
              (3 5 2 3)
          );
     }
    axis
    { 
          type empty;
          faces  
          (
              (0 3 3 0)
          );
     }

);

mergePatchPairs ( );

// ************************************************************************* //


Simulation setup

References

[1] A Albadawi, DB Donoghue, AJ Robinson, DB Murray, and YMC De- lauré. On the analysis of bubble growth and detachment at low capillary and bond numbers using volume of fluid and level set methods. Chemical Engineering Science, 90:77–91, 2013.


[2] Lionel Gamet, Marco Scala, Johan Roenby, Henning Scheufler, and Jean-Lou Pierson. Validation of volume-of-fluid openfoam R isoad- vector solvers using single bubble benchmarks. Computers & Fluids, 213:104722, 2020.


[3] Anastasios Georgoulas, Manolia Andredaki, and Marco Marengo. An enhanced vof method coupled with heat transfer and phase change to characterise bubble detachment in saturated pool boiling. Energies, 10(3):272, 2017.


[4] Anastasios Georgoulas, P Koukouvinis, Manolis Gavaises, and Marco Marengo. Numerical investigation of quasi-static bubble growth and de- tachment from submerged orifices in isothermal liquid pools: The effect of varying fluid properties and gravity levels. International Journal of Multiphase Flow, 74:59–78, 2015.


[5] Johan Roenby, Henrik Bredmose, and Hrvoje Jasak. A computational method for sharp interface advection. Royal Society open science, 3(11):160405, 2016.

[6] Henning Scheufler and Johan Roenby. Accurate and efficient surface reconstruction from volume fraction data on general meshes. Journal of computational physics, 383:1–23, 2019.


[7] Henning Scheufler and Johan Roenby. Twophaseflow: An openfoam based framework for development of two phase flow solvers. arXiv preprint arXiv:2103.00870, 2021.