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

InterFoam contact angle

Register Blogs Community New Posts Updated Threads Search

Like Tree6Likes
  • 1 Post By michielm
  • 1 Post By vigneshTG
  • 4 Post By vigneshTG

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   October 15, 2010, 15:28
Default InterFoam contact angle
  #1
New Member
 
Joao Miranda
Join Date: Oct 2010
Posts: 1
Rep Power: 0
JoaoMiranda is on a distinguished road
Usually in a VOF method the contact angle is introduced in the simulation in the calculation of the curvature. The curvature near the boundary is determined based the vector normal to the surface. The vector normal to the surface is calculated from the contact angle.



The vector normal to the surface, n=(nx,ny,nz) is related to the angle by:

ny/SQRT(nx^2+nz^2)=cot(theta)


According to the following paper:


Chen Fang, Carlos Hidrovo, Fu-min Wang, John Eaton, Kenneth Goodson, 3-D numerical simulation of contact angle hysteresis for microscale two phase flow, International Journal of Multiphase Flow, Volume 34, Issue 7, July 2008, Pages 690-705


the calculation of the contact angle becomes complicated in corners, where two angles exist. The calculation of the vector normal do the surface becomes impossible for angles smaller than 45 degrees.


The vector n=(1,ny,nz) is related to the angle by:


ny=cos(theta1)/(1-cos(theta1)^2-cos(theta2)^2)


nz=cos(theta2)/(1-cos(theta1)^2-cos(theta2)^2)


These equation only work for cos(theta1)^2+cos(theta2)^2>1


How are these calculations handled in InterFoam? Specifically, how are contact angles handled in corners?
JoaoMiranda is offline   Reply With Quote

Old   September 4, 2011, 04:06
Default It's not the calculation that becomes impossible ....
  #2
Member
 
Michiel
Join Date: Oct 2010
Location: Delft, Netherlands
Posts: 97
Rep Power: 16
michielm is on a distinguished road
I know this question is about a year old, but maybe for the benefit of other openfoam (or CFD) users it is good to know:

The reason that there is no solution to the equations for 45 degrees or less is that it is an unphysical situation to have a contact line in the corner if the CA is below 45 degrees. If this happens, you will get a corner with the low CA fluid completely filling the corners: so called gutter flow.

Check out Concus and Finn or Oron for more details on the math behind this:

* Concus and Finn, On The Behavior Of A Capillary Surface In A Wedge, PNAS, 1969
* Ajaev and Homsy, Modeling Shapes and Dynamics of Confined Bubbles, ARFM, 2006

In some situations, the existence of these `gutters' is essential to describe the physics of two-phase microflows:
* van Steijn et al., Flows Around Confined Bubbles And Their Importance In Triggering Pinch-off, Phys. Rev. Lett., 2009
v_scientist likes this.

Last edited by michielm; September 4, 2011 at 11:44. Reason: Wrong reference
michielm is offline   Reply With Quote

Old   January 31, 2014, 08:40
Angry Conatct angle in multiphaseinterfoam
  #3
New Member
 
Rajesh
Join Date: Jul 2012
Location: New Delhi
Posts: 8
Rep Power: 14
rajeshchem is on a distinguished road
Hi,

Could anyone tell me the implementation of dynamic contact angle in multiphaseInterfoam solver?

There are four contact angle values to be input for multiphaseInterFoam, via.. equlibrium contact angle, Utheta, Advancing contact angle, Receding contact angle.

I found some details , how contact angle is being calculated in multiphaseInterFoam as follows,
θ = (θA − θR ) ∗ tanh(uwall/uθ)

my question is when i use no slip boundary condition, u wall is zero then the theta on left hand side is also becomes zero. Then how the contact angle effect is being imposed in multiphaseinterFoam under no slip BC. First of all, is this solver requires all four contact angle to be defined?

Please help me to understand this contact angle issue.
rajeshchem is offline   Reply With Quote

Old   August 26, 2014, 12:29
Default Contact Angle Correction
  #4
Member
 
Vignesh
Join Date: Oct 2012
Location: Darmstadt, Germany
Posts: 66
Rep Power: 14
vigneshTG is on a distinguished road
Hi everyone !

I am trying to understand how contact angle is corrected in interfoam based on theta value given either as input (constant contact angle mode) or calculated dynamically.
I started looking at the function correctcontactangle in interfaceProperties.C and i am confused as to how it corrects the contact angle . The correctcontactangle function is given below

Code:
void Foam::interfaceProperties::correctContactAngle
(
    surfaceVectorField::GeometricBoundaryField& nHatb,
    surfaceVectorField::GeometricBoundaryField& gradAlphaf
) const
{
    const fvMesh& mesh = alpha1_.mesh();
    const volScalarField::GeometricBoundaryField& abf = alpha1_.boundaryField();

    const fvBoundaryMesh& boundary = mesh.boundary();

    forAll(boundary, patchi)
    {
        if (isA<alphaContactAngleFvPatchScalarField>(abf[patchi]))
        {
            alphaContactAngleFvPatchScalarField& acap =
                const_cast<alphaContactAngleFvPatchScalarField&>
                (
                    refCast<const alphaContactAngleFvPatchScalarField>
                    (
                        abf[patchi]
                    )
                );

            fvsPatchVectorField& nHatp = nHatb[patchi];
            const scalarField theta
            (
                convertToRad*acap.theta(U_.boundaryField()[patchi], nHatp)
            );

            const vectorField nf
            (
                boundary[patchi].nf()
            );

            // Reset nHatp to correspond to the contact angle

            const scalarField a12(nHatp & nf);
            const scalarField b1(cos(theta));

            scalarField b2(nHatp.size());
            forAll(b2, facei)
            {
                b2[facei] = cos(acos(a12[facei]) - theta[facei]);
            }

            const scalarField det(1.0 - a12*a12);

            scalarField a((b1 - a12*b2)/det);
            scalarField b((b2 - a12*b1)/det);

            nHatp = a*nf + b*nHatp;
            nHatp /= (mag(nHatp) + deltaN_.value());

            acap.gradient() = (nf & nHatp)*mag(gradAlphaf[patchi]);
            acap.evaluate();
        }
    }
}


Can anyone point me to some reference where it is explained or Can someone explain how the code !!


Thanks for your time
kmou likes this.
__________________
Thanks and Regards

Vignesh
vigneshTG is offline   Reply With Quote

Old   October 19, 2016, 13:08
Default
  #5
Member
 
Camille Bilger
Join Date: Jul 2013
Posts: 43
Rep Power: 13
kmou is on a distinguished road
Quote:
Originally Posted by vigneshTG View Post
Hi everyone !

I am trying to understand how contact angle is corrected in interfoam based on theta value given either as input (constant contact angle mode) or calculated dynamically.
I started looking at the function correctcontactangle in interfaceProperties.C and i am confused as to how it corrects the contact angle . The correctcontactangle function is given below


Thanks for your time
Hi Vignesh, Did you understand how the variable theta is being passed correctly to the function correctContactAngle from the boundary condition implementation that calculates theta ?
Thank you
kmou is offline   Reply With Quote

Old   October 19, 2016, 15:13
Default
  #6
Member
 
Vignesh
Join Date: Oct 2012
Location: Darmstadt, Germany
Posts: 66
Rep Power: 14
vigneshTG is on a distinguished road
Quote:
Originally Posted by kmou View Post
Hi Vignesh, Did you understand how the variable theta is being passed correctly to the function correctContactAngle from the boundary condition implementation that calculates theta ?
Thank you
Hi kmou,

Check kunkelman's thesis in the link, section 3.2.4


Please read it and let me know if you don't understand !!
__________________
Thanks and Regards

Vignesh
vigneshTG is offline   Reply With Quote

Old   October 20, 2016, 07:05
Default
  #7
Member
 
Camille Bilger
Join Date: Jul 2013
Posts: 43
Rep Power: 13
kmou is on a distinguished road
Quote:
Originally Posted by vigneshTG View Post
Hi kmou,

Check kunkelman's thesis in the link, section 3.2.4


Please read it and let me know if you don't understand !!
That helps a lot thank you! Although I am still wondering how is theta passed from the dynamicContactAngle imposed boundary condition.
I'm guessing the answer lies in here:

if (isA<gammaContactAngleFvPatchScalarField>(gbf[patchi]))
{
const gammaContactAngleFvPatchScalarField& gcap =
refCast<const gammaContactAngleFvPatchScalarField>
(gbf[patchi]);
kmou is offline   Reply With Quote

Old   October 20, 2016, 07:27
Default
  #8
Member
 
Vignesh
Join Date: Oct 2012
Location: Darmstadt, Germany
Posts: 66
Rep Power: 14
vigneshTG is on a distinguished road
Quote:
Originally Posted by kmou View Post
That helps a lot thank you! Although I am still wondering how is theta passed from the dynamicContactAngle imposed boundary condition.
I'm guessing the answer lies in here:

if (isA<gammaContactAngleFvPatchScalarField>(gbf[patchi]))
{
const gammaContactAngleFvPatchScalarField& gcap =
refCast<const gammaContactAngleFvPatchScalarField>
(gbf[patchi]);

Yes you are right !!
__________________
Thanks and Regards

Vignesh
vigneshTG is offline   Reply With Quote

Reply

Tags
contact angle, corner, interfoam


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
Dynamic contact angle rmousavibt Fluent UDF and Scheme Programming 12 October 31, 2021 23:38
solved: contact angle correction in interFoam rcastilla OpenFOAM Bugs 24 March 2, 2016 14:43
Slug Flow, interFoam, problems with Contact Angle PrzemekPL OpenFOAM Running, Solving & CFD 13 February 18, 2014 23:10
[Netgen] Import netgen mesh to OpenFOAM hsieh OpenFOAM Meshing & Mesh Conversion 32 September 13, 2011 06:50
Theoretical background of formula for dynamic contact angle in interfoam sebastian_vogl OpenFOAM Running, Solving & CFD 3 June 22, 2009 13:25


All times are GMT -4. The time now is 03:23.