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 "BrunDrippingInjection.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
#include "fvMesh.H"
|
|
||||||
#include "Time.H"
|
|
||||||
#include "mathematicalConstants.H"
|
|
||||||
#include "Random.H"
|
|
||||||
#include "volFields.H"
|
|
||||||
#include "kinematicSingleLayer.H"
|
#include "kinematicSingleLayer.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
@ -56,17 +51,8 @@ BrunDrippingInjection::BrunDrippingInjection
|
|||||||
:
|
:
|
||||||
injectionModel(type(), owner, dict),
|
injectionModel(type(), owner, dict),
|
||||||
ubarStar_(coeffDict_.lookupOrDefault("ubarStar", 1.62208)),
|
ubarStar_(coeffDict_.lookupOrDefault("ubarStar", 1.62208)),
|
||||||
deltaStable_(readScalar(coeffDict_.lookup("deltaStable"))),
|
dCoeff_(coeffDict_.lookupOrDefault("dCoeff", 3.3)),
|
||||||
particlesPerParcel_(readScalar(coeffDict_.lookup("particlesPerParcel"))),
|
deltaStable_(coeffDict_.lookupOrDefault("deltaStable", 0)),
|
||||||
rndGen_(label(0), -1),
|
|
||||||
parcelDistribution_
|
|
||||||
(
|
|
||||||
distributionModels::distributionModel::New
|
|
||||||
(
|
|
||||||
coeffDict_.subDict("parcelDistribution"),
|
|
||||||
rndGen_
|
|
||||||
)
|
|
||||||
),
|
|
||||||
diameter_(owner.regionMesh().nCells(), -1.0)
|
diameter_(owner.regionMesh().nCells(), -1.0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -89,8 +75,6 @@ void BrunDrippingInjection::correct
|
|||||||
const kinematicSingleLayer& film =
|
const kinematicSingleLayer& film =
|
||||||
refCast<const kinematicSingleLayer>(this->owner());
|
refCast<const kinematicSingleLayer>(this->owner());
|
||||||
|
|
||||||
const scalar pi = constant::mathematical::pi;
|
|
||||||
|
|
||||||
// Calculate available dripping mass
|
// Calculate available dripping mass
|
||||||
tmp<volScalarField> tsinAlpha(film.gNorm()/mag(film.g()));
|
tmp<volScalarField> tsinAlpha(film.gNorm()/mag(film.g()));
|
||||||
const scalarField& sinAlpha = tsinAlpha();
|
const scalarField& sinAlpha = tsinAlpha();
|
||||||
@ -101,66 +85,47 @@ void BrunDrippingInjection::correct
|
|||||||
const scalarField& sigma = film.sigma();
|
const scalarField& sigma = film.sigma();
|
||||||
const scalar magg = mag(film.g().value());
|
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));
|
const scalar lc = sqrt(sigma[celli]/(rho[celli]*magg));
|
||||||
scalar deltaStable = max
|
const scalar deltaStable = max
|
||||||
(
|
(
|
||||||
3*lc*sqrt(1 - sqr(sinAlpha[i]))
|
3*lc*sqrt(1 - sqr(sinAlpha[celli]))
|
||||||
/(ubarStar_*sqrt(sinAlpha[i])*sinAlpha[i]),
|
/(ubarStar_*sqrt(sinAlpha[celli])*sinAlpha[celli]),
|
||||||
deltaStable_
|
deltaStable_
|
||||||
);
|
);
|
||||||
|
|
||||||
Info<< delta[i] << " " << deltaStable << endl;
|
if (delta[celli] > deltaStable)
|
||||||
if (delta[i] > deltaStable)
|
|
||||||
{
|
{
|
||||||
const scalar ddelta = max(0.0, delta[i] - deltaStable);
|
const scalar ddelta = max(delta[celli] - deltaStable, 0);
|
||||||
massDrip[i] +=
|
massDrip[celli] +=
|
||||||
min(availableMass[i], max(0.0, ddelta*rho[i]*magSf[i]));
|
min
|
||||||
|
(
|
||||||
|
availableMass[celli],
|
||||||
|
max(ddelta*rho[celli]*magSf[celli], 0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Collect the data to be transferred
|
// Collect the data to be transferred
|
||||||
forAll(massDrip, celli)
|
forAll(massDrip, celli)
|
||||||
{
|
{
|
||||||
if (massDrip[celli] > 0)
|
if (massDrip[celli] > 0)
|
||||||
{
|
{
|
||||||
// Set new particle diameter if not already set
|
const scalar rhoc = rho[celli];
|
||||||
if (diameter_[celli] < 0)
|
const scalar diam = dCoeff_*sqrt(sigma[celli]/(rhoc*magg));
|
||||||
{
|
diameter_[celli] = diam;
|
||||||
diameter_[celli] = parcelDistribution_->sample();
|
|
||||||
}
|
|
||||||
|
|
||||||
scalar& diam = diameter_[celli];
|
massToInject[celli] += massDrip[celli];
|
||||||
scalar rhoc = rho[celli];
|
availableMass[celli] -= massDrip[celli];
|
||||||
scalar minMass = particlesPerParcel_*rhoc*pi/6*pow3(diam);
|
|
||||||
|
|
||||||
if (massDrip[celli] > minMass)
|
diameterToInject[celli] = diam;
|
||||||
{
|
addToInjectedMass(massDrip[celli]);
|
||||||
// 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
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -27,10 +27,10 @@ Class
|
|||||||
Description
|
Description
|
||||||
Film Dripping mass transfer model.
|
Film Dripping mass transfer model.
|
||||||
|
|
||||||
If the film thickness exceeds the critical value needed to generate a valid
|
If the film thickness exceeds the critical value needed to generate one or
|
||||||
parcel, the equivalent mass is removed from the film. The critical film
|
more drops, the equivalent mass is removed from the film. The critical film
|
||||||
thickness is calculated from the Rayleigh-Taylor stability analysis
|
thickness is calculated from the Rayleigh-Taylor stability analysis of film
|
||||||
of film flow on an inclined plane by Brun et.al.
|
flow on an inclined plane by Brun et.al.
|
||||||
|
|
||||||
Reference:
|
Reference:
|
||||||
\verbatim
|
\verbatim
|
||||||
@ -39,7 +39,15 @@ Description
|
|||||||
Physics of Fluids (1994-present), 27(8), 084107.
|
Physics of Fluids (1994-present), 27(8), 084107.
|
||||||
\endverbatim
|
\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
|
SourceFiles
|
||||||
BrunDrippingInjection.C
|
BrunDrippingInjection.C
|
||||||
@ -50,8 +58,6 @@ SourceFiles
|
|||||||
#define BrunDrippingInjection_H
|
#define BrunDrippingInjection_H
|
||||||
|
|
||||||
#include "injectionModel.H"
|
#include "injectionModel.H"
|
||||||
#include "distributionModel.H"
|
|
||||||
#include "cachedRandom.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -84,24 +90,19 @@ protected:
|
|||||||
// Protected data
|
// Protected data
|
||||||
|
|
||||||
//- Critical non-dimensional interface velocity
|
//- Critical non-dimensional interface velocity
|
||||||
// Coefficient in the film angle stability function
|
// Coefficient in the film angle stability function.
|
||||||
// defaults to 1.62208
|
// Defaults to 1.62208
|
||||||
scalar ubarStar_;
|
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
|
//- Stable film thickness - drips only formed if thickness
|
||||||
// execeeds this threhold value
|
// execeeds this threhold value
|
||||||
scalar deltaStable_;
|
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
|
//- Diameters of particles to inject into the dripping
|
||||||
scalarList diameter_;
|
scalarList diameter_;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user