filmSurfaceVelocityFvPatchVectorField: Added option to use the fluid viscous shear stress rather than the simple drag model

Class
    Foam::filmSurfaceVelocityFvPatchVectorField

Description
    Film surface velocity boundary condition

    Evaluates the surface velocity from the shear imposed by the neighbouring
    fluid velocity using either a simple drag model based on the difference
    between the fluid and film velocities multiplied by the coefficient \c Cs or
    if \c Cs is not specified or set to 0 the fluid viscous shear stress.

    The simple model might be used in preference to the fluid viscous shear
    stress model in order to provide some means to include the drag enhancing
    effect of surface ripples, rivulets etc. in the film surface.

Usage
    \table
        Property     | Description             | Required    | Default value
        Cs           | Fluid-film drag coefficient | no | 0
    \endtable

    Example of the boundary condition specification using the simple drag model:
    \verbatim
    <patchName>
    {
        type            filmSurfaceVelocity;
        Cs              0.005;
        value           $internalField;
    }
    \endverbatim

    Example of the boundary condition specification using the fluid stress:
    \verbatim
    <patchName>
    {
        type            filmSurfaceVelocity;
        value           $internalField;
    }
    \endverbatim

See also
    Foam::mixedFvPatchField

SourceFiles
    filmSurfaceVelocityFvPatchVectorField.C
This commit is contained in:
Henry Weller
2023-03-08 13:12:08 +00:00
parent 4d63b39e3e
commit 0b0957f03d
2 changed files with 59 additions and 17 deletions

View File

@ -55,7 +55,7 @@ filmSurfaceVelocityFvPatchVectorField
)
:
mixedFvPatchField<vector>(p, iF, dict, false),
Cs_(dict.lookup<scalar>("Cs"))
Cs_(dict.lookupOrDefault<scalar>("Cs", 0))
{
refValue() = Zero;
refGrad() = Zero;
@ -139,16 +139,41 @@ void Foam::filmSurfaceVelocityFvPatchVectorField::updateCoeffs()
const momentumTransportModel& transportModel =
db().lookupType<momentumTransportModel>();
// Get the patch laminar viscosity
const tmp<scalarField> nuEff(transportModel.nuEff(patch().index()));
// Get the patch laminar viscosity divided by delta
const tmp<scalarField> nuEffByDelta
(
transportModel.nuEff(patch().index())*patch().deltaCoeffs()
);
// Calculate the drag coefficient from the drag constant
// and the magnitude of the velocity difference
const scalarField Ds(Cs_*mag(refValue() - *this));
if (Cs_ > 0)
{
// Calculate the drag coefficient from the drag constant
// and the magnitude of the velocity difference
const scalarField Ds(Cs_*mag(refValue() - *this));
// Calculate the value-fraction from the balance between the
// external fluid drag and internal film stress
valueFraction() = Ds/(Ds + patch().deltaCoeffs()*nuEff);
// Calculate the value-fraction from the balance between the
// external fluid drag and internal film stress
valueFraction() = Ds/(Ds + nuEffByDelta);
}
else
{
// Lookup the neighbour momentum transport model
const momentumTransportModel& transportModelNbr =
mpp.nbrMesh().lookupType<momentumTransportModel>();
// Get the patch laminar viscosity
const tmp<scalarField> nuEffByDeltaNbr
(
mpp.distribute
(
transportModelNbr.nuEff(patchiNbr)*patchNbr.deltaCoeffs()
)
);
// Calculate the value-fraction from the balance between the
// external fluid and internal film stresses
valueFraction() = nuEffByDeltaNbr()/(nuEffByDelta + nuEffByDeltaNbr());
}
mixedFvPatchField<vector>::updateCoeffs();
@ -163,7 +188,12 @@ void Foam::filmSurfaceVelocityFvPatchVectorField::write
) const
{
fvPatchField<vector>::write(os);
writeEntry(os, "Cs", Cs_);
if (Cs_ > 0)
{
writeEntry(os, "Cs", Cs_);
}
writeEntry(os, "value", *this);
}

View File

@ -28,24 +28,36 @@ Description
Film surface velocity boundary condition
Evaluates the surface velocity from the shear imposed by the neighbouring
fluid velocity using a simple drag model based on the difference between the
fluid and film velocities multiplied by the coefficient \c Cs. This simple
model is used in preference to the standard viscous shear stress model in
order to provide some means to include the drag enhancing effect
of surface ripples, rivulets etc. in the film surface.
fluid velocity using either a simple drag model based on the difference
between the fluid and film velocities multiplied by the coefficient \c Cs or
if \c Cs is not specified or set to 0 the fluid viscous shear stress.
The simple model might be used in preference to the fluid viscous shear
stress model in order to provide some means to include the drag enhancing
effect of surface ripples, rivulets etc. in the film surface.
Usage
\table
Property | Description | Required | Default value
Cs | Fluid-film drag coefficient | yes |
Cs | Fluid-film drag coefficient | no | 0
\endtable
Example of the boundary condition specification:
Example of the boundary condition specification using the simple drag model:
\verbatim
<patchName>
{
type filmSurfaceVelocity;
Cs 0.005;
value $internalField;
}
\endverbatim
Example of the boundary condition specification using the fluid stress:
\verbatim
<patchName>
{
type filmSurfaceVelocity;
value $internalField;
}
\endverbatim