mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Only generate random numbers when required
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -66,13 +66,8 @@ drippingInjection::drippingInjection
|
|||||||
rndGen_
|
rndGen_
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
diameter_(owner.regionMesh().nCells(), 0.0)
|
diameter_(owner.regionMesh().nCells(), -1.0)
|
||||||
{
|
{}
|
||||||
forAll(diameter_, faceI)
|
|
||||||
{
|
|
||||||
diameter_[faceI] = parcelDistribution_->sample();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
@ -117,27 +112,41 @@ void drippingInjection::correct
|
|||||||
|
|
||||||
|
|
||||||
// Collect the data to be transferred
|
// Collect the data to be transferred
|
||||||
forAll(massToInject, cellI)
|
forAll(massDrip, cellI)
|
||||||
{
|
{
|
||||||
scalar rhoc = rho[cellI];
|
if (massDrip[cellI] > 0)
|
||||||
scalar diam = diameter_[cellI];
|
|
||||||
scalar minMass = particlesPerParcel_*rhoc*pi/6*pow3(diam);
|
|
||||||
|
|
||||||
if (massDrip[cellI] > minMass)
|
|
||||||
{
|
{
|
||||||
// All drip mass can be injected
|
// set new particle diameter if not already set
|
||||||
massToInject[cellI] += massDrip[cellI];
|
if (diameter_[cellI] < 0)
|
||||||
availableMass[cellI] -= massDrip[cellI];
|
{
|
||||||
|
diameter_[cellI] = parcelDistribution_->sample();
|
||||||
|
}
|
||||||
|
|
||||||
// Set particle diameter
|
scalar& diam = diameter_[cellI];
|
||||||
diameterToInject[cellI] = diameter_[cellI];
|
scalar rhoc = rho[cellI];
|
||||||
|
scalar minMass = particlesPerParcel_*rhoc*pi/6*pow3(diam);
|
||||||
|
|
||||||
// Retrieve new particle diameter sample
|
if (massDrip[cellI] > minMass)
|
||||||
diameter_[cellI] = parcelDistribution_->sample();
|
{
|
||||||
|
// 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();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Particle mass below minimum threshold - cannot be injected
|
||||||
|
massToInject[cellI] = 0.0;
|
||||||
|
diameterToInject[cellI] = 0.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Mass below minimum threshold - cannot be injected
|
|
||||||
massToInject[cellI] = 0.0;
|
massToInject[cellI] = 0.0;
|
||||||
diameterToInject[cellI] = 0.0;
|
diameterToInject[cellI] = 0.0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user