# OpenFOAM141dev A new implementation of dynamicKistlerGammaContactAngle

 Register Blogs Members List Search Today's Posts Mark Forums Read

 November 13, 2008, 05:56 Dear all, I would like to s #1 Member   Edin Berberovic Join Date: Mar 2009 Posts: 31 Rep Power: 17 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-1(theta0)), where the symbols are : thetaD – dynamic contact angle, F_hoff – the function of Hoffman, Ca – Capillary number based on the contact line velocity, F_hoff-1 – 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-1. 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. Nikhilcfd, frantov, yeyinglcn and 4 others like this.

 November 13, 2008, 06:10 Sorry, the files were too larg #2 Member   Edin Berberovic Join Date: Mar 2009 Posts: 31 Rep Power: 17 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 Ehsan Khalili, Nikhilcfd, hua1015 and 4 others like this.

 November 13, 2008, 08:50 Hi Edin , I am also implement #3 New Member   Gerard Mouokue Join Date: Mar 2009 Location: Darmstadt, Hessen, Germany Posts: 16 Rep Power: 17 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

 November 13, 2008, 09:24 Dear Gerard, I didn't want #4 Member   Edin Berberovic Join Date: Mar 2009 Posts: 31 Rep Power: 17 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.

 November 13, 2008, 09:57 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 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

 November 13, 2008, 11:00 Dear Gerard, OK, now I see #6 Member   Edin Berberovic Join Date: Mar 2009 Posts: 31 Rep Power: 17 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.

 November 13, 2008, 11:25 Dear Edin, I am really happy #7 New Member   Gerard Mouokue Join Date: Mar 2009 Location: Darmstadt, Hessen, Germany Posts: 16 Rep Power: 17 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

 November 13, 2008, 23:17 Hello Edin, Thanks for shar #8 Member   vof_user Join Date: Mar 2009 Posts: 67 Rep Power: 17 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.

 November 14, 2008, 03:46 Gerard, No, I believe that #9 Member   Edin Berberovic Join Date: Mar 2009 Posts: 31 Rep Power: 17 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.

 November 14, 2008, 03:49 Sorry for the mistype: Now if #10 Member   Edin Berberovic Join Date: Mar 2009 Posts: 31 Rep Power: 17 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.

 November 14, 2008, 03:51 The advancing motion is determ #11 Member   Edin Berberovic Join Date: Mar 2009 Posts: 31 Rep Power: 17 The advancing motion is determined by uwall<0. The receding motion is determined by uwall>0.

 November 14, 2008, 08:49 Hello Edin, I would appreci #12 Member   vof_user Join Date: Mar 2009 Posts: 67 Rep Power: 17 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.

 October 12, 2009, 22:51 #13 Member   Eelco Gehring Join Date: Mar 2009 Posts: 70 Rep Power: 17 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!

July 20, 2010, 14:59
#14
Member

Join Date: Nov 2009
Posts: 48
Rep Power: 16
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 The advancing motion is determined by uwall<0. The receding motion is determined by uwall>0.

Last edited by farhagim; August 2, 2010 at 17:11.

 November 4, 2014, 05:45 #15 New Member   Join Date: May 2014 Posts: 1 Rep Power: 0 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!

 August 20, 2015, 11:24 #16 New Member   Yaoyina Join Date: Sep 2014 Posts: 7 Rep Power: 11 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

 February 15, 2016, 11:30 #17 Member   Camille Bilger Join Date: Jul 2013 Posts: 43 Rep Power: 12 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

 February 15, 2016, 12:00 #18 Member   Camille Bilger Join Date: Jul 2013 Posts: 43 Rep Power: 12 Hi Benni, Do you have the original files of Edin?

 March 16, 2016, 13:15 OpenFOAM dynamicKistlerGammaContactAngle #19 Member   Anastasios Join Date: Mar 2009 Posts: 34 Rep Power: 17 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.

March 23, 2016, 05:26
#20
Member

Camille Bilger
Join Date: Jul 2013
Posts: 43
Rep Power: 12
Quote:
 Originally Posted by ageorg 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.

 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 OffTrackbacks are Off Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post cvv OpenFOAM Installation 0 February 11, 2009 02:54 asaha OpenFOAM Running, Solving & CFD 0 January 23, 2009 10:16 matthias OpenFOAM Installation 24 April 28, 2008 15:49 7islands OpenFOAM Bugs 1 January 4, 2008 08:34 oleg_weinstein OpenFOAM Installation 6 December 13, 2007 13:16

All times are GMT -4. The time now is 00:12.