CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

OpenFOAM141dev A new implementation of dynamicKistlerGammaContactAngle

Register Blogs Community New Posts Updated Threads Search

Like Tree22Likes

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   November 13, 2008, 06:56
Default Dear all, I would like to s
  #1
Member
 
Edin Berberovic
Join Date: Mar 2009
Posts: 31
Rep Power: 17
eberberovic is on a distinguished road
Dear all,

I would like to share the implementation of a new boundary condition of dynamic contact angle for interFoam aplication. It is based on the investigations of Hoffman, firstly introduced by Kistler(1993) through a Hoffman function. Details can be found in:

@InCollection{Kistler93,
author = {Stephan F. Kistler},
title = {Hydrodynymics of Wetting},
booktitle = {Wettability},
pages = {311--429},
publisher = {Marcel Dekker Inc.},
year = {1993},
editor = {John C. Berg},
chapter = {6},
}

Basically, one of the problems in assigning an expression for the dynamic contact angle (in addition to modelling the contact line velocity) seems to be the appearance of a static contact angle. The static contact angle shows a hysteresis, and is therefore not single valued. In order to overcome this difficulty, a term is introduced in the function for the dynamic contact angle, through which the influence of the static contact angle is absorbed. The function is of the form, Kistler(1993):

thetaD = F_hoff(Ca + F_hoff<sup>-1</sup>(theta0)),

where the symbols are :
thetaD &ndash; dynamic contact angle,
F_hoff &ndash; the function of Hoffman,
Ca &ndash; Capillary number based on the contact line velocity,
F_hoff<sup>-1</sup> &ndash; inverse of the function of Hoffman,
theta0 - advancing or receding contact angle (depending on the advancing or receding motion).

The function must be solved iteratively due to the appearance of the inverse of the function as one of its own arguments. In the implementation, a C++ function object is introduced defining the inverse Hoffman function, which is solved using RiddersRoot (src/ODE/findRoot). ThetaD is then evaluated using Ca number and the value of F_hoff<sup>-1</sup>. The Ca number is evaluated using the existing model for contact line velocity from dynamicContactAngle in OpenFOAM.

The interFoam application is slightly modified. The createFields.H containes initialization of mixture viscosity and surface tension coefficient, which are passed as volScalarFields to the dynamicKistlerContactAngle class. The mixture viscosity is updated during time steps. The application with the new dynamicKistlerContactAngle class and a sample damBreak case are here:




and a couple of snapshots from damBreak case (on a still relatively coarse grid):






This model for the dynamic contact angle (but with another simpler model for contact line velocity) has been successively used in other numerical codes in predictions of drop impact. Examples can be found in:

@Article{Sikalo_etal05,
author = {S. Sikalo and H. D. Wilhelm and I. V. Roisman and S. Jakirlic and C. Tropea},
title = {Dynamic contact angle of spreading droplets: experiments and simulations},
journal = {Physics of Fluids},
year = {2005},
volume = {17},
number = {6},
pages = {62103},
}

@Article{Roisman_etal08,
author = {I. V. Roisman and L. Opfer and C. Tropea and M. Raessi and J. Mostaghimi and S. Chandra},
title = {Drop impact onto a dry surface: Role of the dynamic contact angle},
journal = {Colloids and Surfaces A},
year = {2008},
volume = {322},
pages = {183--191},
}

I am aware that this might not be the most elegant or general way of implementation. Therefore any further suggestions for improvement are welcome.

With kind regards,
Edin Berberovic.
eberberovic is offline   Reply With Quote

Old   November 13, 2008, 07:10
Default Sorry, the files were too larg
  #2
Member
 
Edin Berberovic
Join Date: Mar 2009
Posts: 31
Rep Power: 17
eberberovic is on a distinguished road
Sorry, the files were too large for upload.
Here is the interFoam solver with only the part containing the dynamicKistlerGammaContactAngle class. It should be put into transportModels/interfaceProperties/gammaContactAngle/dynamicKistlerGammaContactAngle

interFoamKistler.tgz
damBreak_thetaA_115.tgz



eberberovic is offline   Reply With Quote

Old   November 13, 2008, 09:50
Default Hi Edin , I am also implement
  #3
New Member
 
Gerard Mouokue
Join Date: Mar 2009
Location: Darmstadt, Hessen, Germany
Posts: 16
Rep Power: 17
gerado is on a distinguished road
Hi Edin ,
I am also implementing some models of dynamic contact angle in Openfoam . why you didn t use interfaceproperties.C in your model

thanks
gerard
gerado is offline   Reply With Quote

Old   November 13, 2008, 10:24
Default Dear Gerard, I didn't want
  #4
Member
 
Edin Berberovic
Join Date: Mar 2009
Posts: 31
Rep Power: 17
eberberovic is on a distinguished road
Dear Gerard,

I didn't want to create any objects of type interfaceProperties within the class of type ...FvPatchScalarField just in order to get some data from them. In such case, I believe I would have to use also the twoPhaseProperties objects.

I wanted to pass the values for mu and sigma from the application itself (interFoam).
Therefore I used as a basis the implementation of totalPressure BC.

Regards,
Edin.
eberberovic is offline   Reply With Quote

Old   November 13, 2008, 10:57
Default Dear Edin , I thank you for y
  #5
New Member
 
Gerard Mouokue
Join Date: Mar 2009
Location: Darmstadt, Hessen, Germany
Posts: 16
Rep Power: 17
gerado is on a distinguished road
Dear Edin ,
I thank you for your fast answer . you know in interfaceproperties.C the contact angle ist corrected (correctgammacontactangle)at each time step . where did you correct it in your inplementation wenn you don t use interfaceproperties.

thanks

gerard
gerado is offline   Reply With Quote

Old   November 13, 2008, 12:00
Default Dear Gerard, OK, now I see
  #6
Member
 
Edin Berberovic
Join Date: Mar 2009
Posts: 31
Rep Power: 17
eberberovic is on a distinguished road
Dear Gerard,

OK, now I see what you are asking.

Yes, I do use the same function from interfaceProperties.C to correct the contact angle. What I did is the following: I derived the dynamicKistlerGammaContactAngleFvPatchScalarField from gammaContactAngleFvPatchScalarField, the same way as the existing dynamicGammaContactAngleFvPatchScalarField was derived. The same function correctContactAngle from interfaceProperties.c is used. Only the way how thetaD is calculated has changed (I had to put in a function object and make use of RiddersRoot) as well as the way of passing the arguments to the constructor of dynamicKistlerGammaContactAngleFvPatchScalarField.

I did not make it global, I copied the transportModels folder from src into my interFoam application folder, and made an additional folder called dynamicKistlerGammaContactAngle within.

This is what I wanted to post here, but it was to large, so if you want I can email it to you.

Regards,
Edin.
eberberovic is offline   Reply With Quote

Old   November 13, 2008, 12:25
Default Dear Edin, I am really happy
  #7
New Member
 
Gerard Mouokue
Join Date: Mar 2009
Location: Darmstadt, Hessen, Germany
Posts: 16
Rep Power: 17
gerado is on a distinguished road
Dear Edin,
I am really happy to have discussed it with you . it would be very nice if you can sent it to me . I have a last question to you . in your code you say
if uwall>0 theta0 = thetaR
if uwall<0 theta0 = thetaA
is that not the opposite?

thanks
Gerard

e-mail mongerard2000@yahoo.fr
gerado is offline   Reply With Quote

Old   November 14, 2008, 00:17
Default Hello Edin, Thanks for shar
  #8
Member
 
vof_user
Join Date: Mar 2009
Posts: 67
Rep Power: 17
asaha is on a distinguished road
Hello Edin,

Thanks for sharing your implementation on dynamic contact angle in interFoam. I have the following question:

Will it be possible to modify the equation for dyanamic contact angle in your implementation with the following equation

|tan(theta)| = a*Ca^(1/3) -
b*(lambda)^0.04*Ca^0.293; a = 7.48, b = 3.28, lambda = 10E-8, Ca = Capillary number

I would be extremely happy to hear from you in this regard.

Thanks again.

A A Saha.
asaha is offline   Reply With Quote

Old   November 14, 2008, 04:46
Default Gerard, No, I believe that
  #9
Member
 
Edin Berberovic
Join Date: Mar 2009
Posts: 31
Rep Power: 17
eberberovic is on a distinguished road
Gerard,

No, I believe that this is correct. This is the most general approach I could make using the exsisting model for contact line velocity in OpenFOAM.
uwall (small u) is evaluated as a dot product of nWall and Uwall. nWall is calculated using nHat by subtracting from it the component normal to the wall. So nWall is parallel to the wall and points into liquid (due to normalized grad(gamma) in nHat). Similarly, Uwall is calculated by taking U from the first cell near the wall and subtracting its normal component. So Uwall is also parallel to the wall, but points in the direction of motion.
Now if the liquid advances, these two vectors point in opposite sides, and if the liquid recedes the point to the same side. Therefore the advancing motion is determined by uwall<0>0.
I also put in some lines to print out all these values at the wall. Uncomment them and you will see that this is correct at the wall.

Saha,

I think this should not be a problem. After you calculate the Ca number, you can simply use your expression for theta. In this case you will not need any function objects, since, as far as I can see, this is an ordinary linear equation which you can evaluate directly (i.e. by theta = arctan(...)).
So, remove the function object I put in, and simply replace the expression for theta.

Regards,
Edin.
amolrajan and Tesbo like this.
eberberovic is offline   Reply With Quote

Old   November 14, 2008, 04:49
Default Sorry for the mistype: Now if
  #10
Member
 
Edin Berberovic
Join Date: Mar 2009
Posts: 31
Rep Power: 17
eberberovic is on a distinguished road
Sorry for the mistype:
Now if the liquid advances, these two vectors point in opposite sides, and if the liquid recedes they point to the same side. Therefore the advancing motion is determined by uwall<0>0.
amolrajan and Tesbo like this.
eberberovic is offline   Reply With Quote

Old   November 14, 2008, 04:51
Default The advancing motion is determ
  #11
Member
 
Edin Berberovic
Join Date: Mar 2009
Posts: 31
Rep Power: 17
eberberovic is on a distinguished road
The advancing motion is determined by uwall<0.
The receding motion is determined by uwall>0.
eberberovic is offline   Reply With Quote

Old   November 14, 2008, 09:49
Default Hello Edin, I would appreci
  #12
Member
 
vof_user
Join Date: Mar 2009
Posts: 67
Rep Power: 17
asaha is on a distinguished road
Hello Edin,

I would appreciate if you can share you code and send the same to asaha@pec.edu.

Thanks,

a a saha
kmou likes this.
asaha is offline   Reply With Quote

Old   October 12, 2009, 23:51
Default
  #13
Member
 
Eelco Gehring
Join Date: Mar 2009
Posts: 70
Rep Power: 17
feijooos is on a distinguished road
First, this is a nice addition to the OF code. Second, I am trying to get this code to work with OF 1.5. I am getting some errors regarding the -llduSolver. Did anybody successfully implement this?

Thanks for the help!
feijooos is offline   Reply With Quote

Old   July 20, 2010, 15:59
Default
  #14
Member
 
Join Date: Nov 2009
Posts: 48
Rep Power: 17
farhagim is on a distinguished road
Hello Edin,

thanks for sharing your information. I could not open your files. Would you please share your code again or is it possible to help me to implement the new one?

farhangi.mehran@gmail.com

Quote:
Originally Posted by eberberovic View Post
The advancing motion is determined by uwall<0.
The receding motion is determined by uwall>0.

Last edited by farhagim; August 2, 2010 at 18:11.
farhagim is offline   Reply With Quote

Old   November 4, 2014, 06:45
Default
  #15
New Member
 
Join Date: May 2014
Posts: 1
Rep Power: 0
benni is on a distinguished road
I try to implement Kistler's dynamic contact angle model in OpenFOAM 2.3.0. With a few changes in Edin's files, I almost could get it work.
Can anybody send me his implementation and particularly the files of a case?
uaecf@student.kit.edu

Thanks a lot!
benni is offline   Reply With Quote

Old   August 20, 2015, 12:24
Default
  #16
New Member
 
Yaoyina
Join Date: Sep 2014
Posts: 7
Rep Power: 12
yaoyina is on a distinguished road
Hello Edin,

thanks for sharing your information. I could not use your files to implement the Kistler model in OF-2.3.0. Would you please share your code again or is it possible to help me to implement the new one?

Thank you very much!

yao-yn14@mails.tsinghua.edu.cn
yaoyina is offline   Reply With Quote

Old   February 15, 2016, 12:30
Default
  #17
Member
 
Camille Bilger
Join Date: Jul 2013
Posts: 43
Rep Power: 13
kmou is on a distinguished road
Hi,

this is all very interesting. Thank you for sharing with us. I am having the same issue as many others, unable to open the .unk folders.
I would greatly appreciate it if you could send it via email, camille.bilger@free.fr
Thank you
kmou is offline   Reply With Quote

Old   February 15, 2016, 13:00
Default
  #18
Member
 
Camille Bilger
Join Date: Jul 2013
Posts: 43
Rep Power: 13
kmou is on a distinguished road
Hi Benni,
Do you have the original files of Edin?
kmou is offline   Reply With Quote

Old   March 16, 2016, 14:15
Default OpenFOAM dynamicKistlerGammaContactAngle
  #19
Member
 
Anastasios
Join Date: Mar 2009
Posts: 34
Rep Power: 17
ageorg is on a distinguished road
I could open the files normally using archive manager in ubuntu. Now I have the same problem I have to translate the implementation in a newer version of OpenFOAM? I will try the following days and keep you informed. In the meanwhile did anyone managed such a version translation?

Thank you very much in advance

A.
Mahmoud_aboukhedr likes this.
ageorg is offline   Reply With Quote

Old   March 23, 2016, 06:26
Default
  #20
Member
 
Camille Bilger
Join Date: Jul 2013
Posts: 43
Rep Power: 13
kmou is on a distinguished road
Quote:
Originally Posted by ageorg View Post
I could open the files normally using archive manager in ubuntu. Now I have the same problem I have to translate the implementation in a newer version of OpenFOAM? I will try the following days and keep you informed. In the meanwhile did anyone managed such a version translation?

Thank you very much in advance

A.
Yes I did put it in OpenFoam 2.3, it works - as in compiles and runs and prints to the screen the dynamic contact angle, but I did it quickly and "blindly" so I still need to understand the interface between the solver and the B.C. to make sure all the variables are passed correctly etc.
kmou is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Installing OpenFoam141dev vtk errors cvv OpenFOAM Installation 0 February 11, 2009 03:54
SpaceVaryingGammaContactAngle in OpenFOAM141dev asaha OpenFOAM Running, Solving & CFD 0 January 23, 2009 11:16
OpenFOAM141dev linking error on IBM AIX 52 matthias OpenFOAM Installation 24 April 28, 2008 16:49
Sample utility problem in OpenFOAM141dev 7islands OpenFOAM Bugs 1 January 4, 2008 09:34
CoupledFvScalarMatrix in OpenFOAM141dev oleg_weinstein OpenFOAM Installation 6 December 13, 2007 14:16


All times are GMT -4. The time now is 11:42.