BrunDrippingInjection: Calculate drop diameter from the capillary length

The diameter of the drops formed are obtained from the local capillary
length multiplied by the \c dCoeff coefficient which defaults to 3.3.

Reference:
    Lefebvre, A. (1988).
    Atomization and sprays
    (Vol. 1040, No. 2756). CRC press.
This commit is contained in:
Henry Weller
2016-08-04 15:02:51 +01:00
parent 6131d5c1a3
commit c022e5ade3
2 changed files with 44 additions and 78 deletions

View File

@ -25,11 +25,6 @@ License
#include "BrunDrippingInjection.H"
#include "addToRunTimeSelectionTable.H"
#include "fvMesh.H"
#include "Time.H"
#include "mathematicalConstants.H"
#include "Random.H"
#include "volFields.H"
#include "kinematicSingleLayer.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -56,17 +51,8 @@ BrunDrippingInjection::BrunDrippingInjection
:
injectionModel(type(), owner, dict),
ubarStar_(coeffDict_.lookupOrDefault("ubarStar", 1.62208)),
deltaStable_(readScalar(coeffDict_.lookup("deltaStable"))),
particlesPerParcel_(readScalar(coeffDict_.lookup("particlesPerParcel"))),
rndGen_(label(0), -1),
parcelDistribution_
(
distributionModels::distributionModel::New
(
coeffDict_.subDict("parcelDistribution"),
rndGen_
)
),
dCoeff_(coeffDict_.lookupOrDefault("dCoeff", 3.3)),
deltaStable_(coeffDict_.lookupOrDefault("deltaStable", 0)),
diameter_(owner.regionMesh().nCells(), -1.0)
{}
@ -89,8 +75,6 @@ void BrunDrippingInjection::correct
const kinematicSingleLayer& film =
refCast<const kinematicSingleLayer>(this->owner());
const scalar pi = constant::mathematical::pi;
// Calculate available dripping mass
tmp<volScalarField> tsinAlpha(film.gNorm()/mag(film.g()));
const scalarField& sinAlpha = tsinAlpha();
@ -101,68 +85,49 @@ void BrunDrippingInjection::correct
const scalarField& sigma = film.sigma();
const scalar magg = mag(film.g().value());
scalarField massDrip(film.regionMesh().nCells(), 0.0);
scalarField massDrip(film.regionMesh().nCells(), scalar(0));
forAll(delta, i)
forAll(delta, celli)
{
if (sinAlpha[i] > SMALL && delta[i] > deltaStable_)
if (sinAlpha[celli] > SMALL && delta[celli] > deltaStable_)
{
scalar lc = sqrt(sigma[i]/(rho[i]*magg));
scalar deltaStable = max
const scalar lc = sqrt(sigma[celli]/(rho[celli]*magg));
const scalar deltaStable = max
(
3*lc*sqrt(1 - sqr(sinAlpha[i]))
/(ubarStar_*sqrt(sinAlpha[i])*sinAlpha[i]),
3*lc*sqrt(1 - sqr(sinAlpha[celli]))
/(ubarStar_*sqrt(sinAlpha[celli])*sinAlpha[celli]),
deltaStable_
);
Info<< delta[i] << " " << deltaStable << endl;
if (delta[i] > deltaStable)
if (delta[celli] > deltaStable)
{
const scalar ddelta = max(0.0, delta[i] - deltaStable);
massDrip[i] +=
min(availableMass[i], max(0.0, ddelta*rho[i]*magSf[i]));
const scalar ddelta = max(delta[celli] - deltaStable, 0);
massDrip[celli] +=
min
(
availableMass[celli],
max(ddelta*rho[celli]*magSf[celli], 0)
);
}
}
}
// Collect the data to be transferred
forAll(massDrip, celli)
{
if (massDrip[celli] > 0)
{
// Set new particle diameter if not already set
if (diameter_[celli] < 0)
{
diameter_[celli] = parcelDistribution_->sample();
}
const scalar rhoc = rho[celli];
const scalar diam = dCoeff_*sqrt(sigma[celli]/(rhoc*magg));
diameter_[celli] = diam;
scalar& diam = diameter_[celli];
scalar rhoc = rho[celli];
scalar minMass = particlesPerParcel_*rhoc*pi/6*pow3(diam);
if (massDrip[celli] > minMass)
{
// All drip mass can be injected
massToInject[celli] += massDrip[celli];
availableMass[celli] -= massDrip[celli];
// Set particle diameter
diameterToInject[celli] = diam;
// Retrieve new particle diameter sample
diam = parcelDistribution_->sample();
addToInjectedMass(massDrip[celli]);
}
else
{
// Particle mass below minimum threshold - cannot be injected
massToInject[celli] = 0;
diameterToInject[celli] = 0;
}
}
else
{
massToInject[celli] = 0;
diameterToInject[celli] = 0;

View File

@ -27,10 +27,10 @@ Class
Description
Film Dripping mass transfer model.
If the film thickness exceeds the critical value needed to generate a valid
parcel, the equivalent mass is removed from the film. The critical film
thickness is calculated from the Rayleigh-Taylor stability analysis
of film flow on an inclined plane by Brun et.al.
If the film thickness exceeds the critical value needed to generate one or
more drops, the equivalent mass is removed from the film. The critical film
thickness is calculated from the Rayleigh-Taylor stability analysis of film
flow on an inclined plane by Brun et.al.
Reference:
\verbatim
@ -39,7 +39,15 @@ Description
Physics of Fluids (1994-present), 27(8), 084107.
\endverbatim
New parcel diameters are sampled from a PDF.
The diameter of the drops formed are obtained from the local capillary
length multiplied by the \c dCoeff coefficient which defaults to 3.3.
Reference:
\verbatim
Lefebvre, A. (1988).
Atomization and sprays
(Vol. 1040, No. 2756). CRC press.
\endverbatim
SourceFiles
BrunDrippingInjection.C
@ -50,8 +58,6 @@ SourceFiles
#define BrunDrippingInjection_H
#include "injectionModel.H"
#include "distributionModel.H"
#include "cachedRandom.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -84,24 +90,19 @@ protected:
// Protected data
//- Critical non-dimensional interface velocity
// Coefficient in the film angle stability function
// defaults to 1.62208
// Coefficient in the film angle stability function.
// Defaults to 1.62208
scalar ubarStar_;
//- Coefficient relating the diameter of the drops formed to
// the capillary length.
// Defaults to 3.3
scalar dCoeff_;
//- Stable film thickness - drips only formed if thickness
// execeeds this threhold value
scalar deltaStable_;
//- Number of particles per parcel
scalar particlesPerParcel_;
//- Random number generator
cachedRandom rndGen_;
//- Parcel size PDF model
const autoPtr<distributionModels::distributionModel>
parcelDistribution_;
//- Diameters of particles to inject into the dripping
scalarList diameter_;