ENH: Only generate random numbers when required

This commit is contained in:
andy
2013-02-12 10:12:54 +00:00
parent c5755f7aed
commit 124ad071a7

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -66,13 +66,8 @@ drippingInjection::drippingInjection
rndGen_
)
),
diameter_(owner.regionMesh().nCells(), 0.0)
{
forAll(diameter_, faceI)
{
diameter_[faceI] = parcelDistribution_->sample();
}
}
diameter_(owner.regionMesh().nCells(), -1.0)
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
@ -117,10 +112,18 @@ void drippingInjection::correct
// Collect the data to be transferred
forAll(massToInject, cellI)
forAll(massDrip, cellI)
{
if (massDrip[cellI] > 0)
{
// set new particle diameter if not already set
if (diameter_[cellI] < 0)
{
diameter_[cellI] = parcelDistribution_->sample();
}
scalar& diam = diameter_[cellI];
scalar rhoc = rho[cellI];
scalar diam = diameter_[cellI];
scalar minMass = particlesPerParcel_*rhoc*pi/6*pow3(diam);
if (massDrip[cellI] > minMass)
@ -130,14 +133,20 @@ void drippingInjection::correct
availableMass[cellI] -= massDrip[cellI];
// Set particle diameter
diameterToInject[cellI] = diameter_[cellI];
diameterToInject[cellI] = diam;
// Retrieve new particle diameter sample
diameter_[cellI] = parcelDistribution_->sample();
diam = parcelDistribution_->sample();
}
else
{
// Particle mass below minimum threshold - cannot be injected
massToInject[cellI] = 0.0;
diameterToInject[cellI] = 0.0;
}
}
else
{
// Mass below minimum threshold - cannot be injected
massToInject[cellI] = 0.0;
diameterToInject[cellI] = 0.0;
}