56 void Foam::threePhaseInterfaceProperties::correctContactAngle
58 surfaceVectorField::GeometricBoundaryField& nHatb
61 const volScalarField::GeometricBoundaryField& alpha1 =
63 const volScalarField::GeometricBoundaryField& alpha2 =
65 const volScalarField::GeometricBoundaryField& alpha3 =
67 const volVectorField::GeometricBoundaryField&
U =
71 const fvBoundaryMesh&
boundary = mesh.boundary();
75 if (isA<alphaContactAngleFvPatchScalarField>(alpha1[
patchi]))
77 const alphaContactAngleFvPatchScalarField& a2cap =
78 refCast<const alphaContactAngleFvPatchScalarField>
81 const alphaContactAngleFvPatchScalarField& a3cap =
82 refCast<const alphaContactAngleFvPatchScalarField>
89 twoPhaseAlpha2 + twoPhaseAlpha3 + SMALL;
91 twoPhaseAlpha2 /= sumTwoPhaseAlpha;
92 twoPhaseAlpha3 /= sumTwoPhaseAlpha;
99 twoPhaseAlpha2*(180 - a2cap.theta(U[patchi], nHatp))
100 + twoPhaseAlpha3*(180 - a3cap.theta(U[patchi], nHatp))
115 b2[facei] =
cos(
acos(a12[facei]) - theta[facei]);
123 nHatp = a*nf + b*nHatp;
125 nHatp /= (
mag(nHatp) + deltaN_.
value());
131 void Foam::threePhaseInterfaceProperties::calculateK()
135 const fvMesh& mesh = alpha1.
mesh();
146 correctContactAngle(nHatfv.boundaryField());
149 nHatf_ = nHatfv & Sf;
164 Foam::threePhaseInterfaceProperties::threePhaseInterfaceProperties
174 mixture.U().mesh().
solutionDict().subDict(
"PISO").lookup(
"cAlpha")
177 sigma12_(mixture.lookup(
"sigma12")),
178 sigma13_(mixture.lookup(
"sigma13")),
191 ) & mixture.alpha1().mesh().Sf()
200 mixture.alpha1().mesh()