mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
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:
@ -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;
|
||||
|
||||
@ -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_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user