multiphase: Rationalised alphaContactAngle handling

Alpha contact angle boundaries are now specified in the following way
for multiphase solvers (i.e., multiphaseInterFoam,
compressibleMultiphaseInterFoam, and multiphaseEulerFoam):

   boundaryField
   {
       wall
       {
           type            alphaContactAngle;
           contactAngleProperties
           {
               water
               {
                   // Constant contact angle
                   theta0 90;
               }
               oil
               {
                   // Dynamic contact angle
                   theta0 90;
                   uTheta 1;
                   thetaA 125;
                   thetaR 85;
               }
           }
           value           uniform 0;
       }
   }

All solvers now share the same implementation of the alphaContactAngle
boundary condition and the contact angle correction algorithm.

If alpha contact angle boundary conditions are used they must be
specified for all phases or an error will result. The consistency of the
input will also be checked. The angles given for water in the alpha.air
file must be 180 degrees minus the angles given for air in the
alpha.water file.
This commit is contained in:
Will Bainbridge
2022-01-28 17:10:17 +00:00
parent ba5612414a
commit ba130ec083
41 changed files with 641 additions and 1281 deletions

View File

@ -23,43 +23,34 @@ boundaryField
leftWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 1;
}
lowerWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -23,43 +23,34 @@ boundaryField
leftWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 1;
}
lowerWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -23,43 +23,34 @@ boundaryField
leftWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 1;
}
lowerWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -23,43 +23,34 @@ boundaryField
leftWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 1;
}
lowerWall
{
type alphaContactAngle;
thetaProperties
(
( water air ) 90 0 0 0
( oil air ) 90 0 0 0
( mercury air ) 90 0 0 0
( water oil ) 90 0 0 0
( water mercury ) 90 0 0 0
( oil mercury ) 90 0 0 0
);
contactAngleProperties
{
oil { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
water { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
water { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere
{

View File

@ -22,15 +22,36 @@ boundaryField
{
leftWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
rightWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
lowerWall
{
type zeroGradient;
type alphaContactAngle;
contactAngleProperties
{
air { theta0 90; }
oil { theta0 90; }
mercury { theta0 90; }
}
value uniform 0;
}
atmosphere
{