mirror of
https://github.com/OpenFOAM/OpenFOAM-6.git
synced 2025-12-08 06:57:46 +00:00
This patch enables the reactingEulerFoam solvers to simulate polydisperse flow situations, i.e. flows where the disperse phase is subject to a size distribution. The newly added populationBalanceModel class solves the integro-partial differential population balance equation (PBE) by means of a class method, also called discrete or sectional method. This approach is based on discretizing the PBE over its internal coordinate, the particle volume. This yields a set of transport equations for the number concentration of particles in classes with a different representative size. These are coupled through their source-terms and solved in a segregated manner. The implementation is done in a way, that the total particle number and mass is preserved for coalescence, breakup and drift (i.e. isothermal growth or phase change) processes, irrespective of the chosen discretization over the internal coordinate. A population balance can be split over multiple velocity (temperature) fields, using the capability of reactingMultiphaseEulerFoam to solve for n momentum (energy) equations. To a certain degree, this takes into account the dependency of heat- and momentum transfer on the disperse phase diameter. It is also possible to define multiple population balances, e.g. bubbles and droplets simultaneously. The functionality can be switched on by choosing the appropriate phaseSystem type, e.g. populationBalanceMultiphaseSystem and the newly added diameterModel class called velocityGroup. To illustrate the use of the functionality, a bubbleColumnPolydisperse tutorial was added for reactingTwoPhaseEulerFoam and reactingMultiphaseEulerFoam. Furthermore, a reactingEulerFoam-specific functionObject called sizeDistribution was added to allow post-Processing of the size distribution, e.g. to obtain the number density function in a specific region. Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden - Rossendorf (HZDR) and VTT Technical Research Centre of Finland Ltd.
94 lines
2.8 KiB
C
94 lines
2.8 KiB
C
/*---------------------------------------------------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration |
|
|
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
|
\\/ M anipulation |
|
|
-------------------------------------------------------------------------------
|
|
License
|
|
This file is part of OpenFOAM.
|
|
|
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
#include "binaryBreakupModel.H"
|
|
|
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
|
|
namespace Foam
|
|
{
|
|
namespace diameterModels
|
|
{
|
|
defineTypeNameAndDebug(binaryBreakupModel, 0);
|
|
defineRunTimeSelectionTable(binaryBreakupModel, dictionary);
|
|
}
|
|
}
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * //
|
|
|
|
Foam::autoPtr<Foam::diameterModels::binaryBreakupModel>
|
|
Foam::diameterModels::binaryBreakupModel::New
|
|
(
|
|
const word& type,
|
|
const populationBalanceModel& popBal,
|
|
const dictionary& dict
|
|
)
|
|
{
|
|
dictionaryConstructorTable::iterator cstrIter =
|
|
dictionaryConstructorTablePtr_->find(type);
|
|
|
|
if (cstrIter == dictionaryConstructorTablePtr_->end())
|
|
{
|
|
FatalErrorInFunction
|
|
<< "Unknown binary breakup model type "
|
|
<< type << nl << nl
|
|
<< "Valid binary breakup model types : " << endl
|
|
<< dictionaryConstructorTablePtr_->sortedToc()
|
|
<< exit(FatalError);
|
|
}
|
|
|
|
return autoPtr<binaryBreakupModel>(cstrIter()(popBal, dict));
|
|
}
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
|
|
|
Foam::diameterModels::binaryBreakupModel::binaryBreakupModel
|
|
(
|
|
const populationBalanceModel& popBal,
|
|
const dictionary& dict
|
|
)
|
|
:
|
|
popBal_(popBal),
|
|
C_("C", dimless, dict.lookupOrDefault("C", 1.0))
|
|
{}
|
|
|
|
|
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
|
|
const Foam::diameterModels::populationBalanceModel&
|
|
Foam::diameterModels::binaryBreakupModel::popBal() const
|
|
{
|
|
return popBal_;
|
|
}
|
|
|
|
|
|
void Foam::diameterModels::binaryBreakupModel::correct()
|
|
{}
|
|
|
|
|
|
// ************************************************************************* //
|