From 018da5a3ce4e248ff37c4a5085df800e14f3a6d7 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Wed, 16 May 2018 16:04:17 +0100 Subject: [PATCH] populationBalanceModel: Added Prince and Blanch (1990) coalescence model Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden - Rossendorf (HZDR) --- .../reactingEulerFoam/phaseSystems/Make/files | 1 + .../LaakkonenAlopaeusAittamaa.C | 7 +- .../LaakkonenAlopaeusAittamaa.H | 24 +- .../CoulaloglouTavlaridesCoalescence.C | 2 +- .../CoulaloglouTavlaridesCoalescence.H | 24 +- .../PrinceBlanch/PrinceBlanch.C | 146 +++++++++++++ .../PrinceBlanch/PrinceBlanch.H | 205 ++++++++++++++++++ .../coalescenceModel/coalescenceModel.C | 20 -- .../coalescenceModel/coalescenceModel.H | 10 - .../LaakkonenAlopaeusAittamaaDsd.H | 8 +- .../populationBalanceModel.C | 16 ++ .../populationBalanceModel.H | 7 + 12 files changed, 405 insertions(+), 65 deletions(-) create mode 100644 applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.C create mode 100644 applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.H diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/files b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/files index 6a2a1c9c3..ee88bf056 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/files +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/files @@ -21,6 +21,7 @@ populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.C populationBalanceModel/coalescenceModels/constantCoalescence/constantCoalescence.C populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.C populationBalanceModel/coalescenceModels/hydrodynamic/hydrodynamic.C +populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.C populationBalanceModel/binaryBreakupModels/binaryBreakupModel/binaryBreakupModel.C populationBalanceModel/binaryBreakupModels/powerLawUniformBinary/powerLawUniformBinary.C diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.C index ae0f2b4ef..088817961 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.C @@ -26,7 +26,6 @@ License #include "LaakkonenAlopaeusAittamaa.H" #include "addToRunTimeSelectionTable.H" #include "phaseCompressibleTurbulenceModel.H" -#include "phaseSystem.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -80,10 +79,6 @@ Foam::diameterModels::breakupModels::LaakkonenAlopaeusAittamaa::setBreakupRate { const phaseModel& continuousPhase = popBal_.continuousPhase(); const sizeGroup& fi = *popBal_.sizeGroups()[i]; - const volScalarField sigma - ( - popBal_.fluid().sigma(phasePair(fi.phase(), continuousPhase)) - ); breakupRate = C1_*cbrt(continuousTurbulence().epsilon()) @@ -91,7 +86,7 @@ Foam::diameterModels::breakupModels::LaakkonenAlopaeusAittamaa::setBreakupRate ( sqrt ( - C2_*sigma + C2_*popBal_.sigmaWithContinuousPhase(fi.phase()) /( continuousPhase.rho()*pow(fi.d(), 5.0/3.0) *pow(continuousTurbulence().epsilon(), 2.0/3.0) diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.H index cd1b46a63..57e6b6451 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/breakupModels/LaakkonenAlopaeusAittamaa/LaakkonenAlopaeusAittamaa.H @@ -27,18 +27,18 @@ Class Description Model of Laakkonen et al. (2006). The total breakup rate is calculated by - \f[ - C_1 \epsilon_c^{1/3} - \mathrm{erfc} - \left( - \sqrt - { - C_2 \frac{\sigma}{\rho_c \epsilon_c^{2/3} (6v_i/\pi)^{5/9}} - + C_3 \frac{\mu_c}{\sqrt{\rho_c \rho_d} - \epsilon_c^{1/3} (6v_i/\pi)^{4/9}} - } - \right) - \f] + \f[ + C_1 \epsilon_c^{1/3} + \mathrm{erfc} + \left( + \sqrt + { + C_2 \frac{\sigma}{\rho_c \epsilon_c^{2/3} (6v_i/\pi)^{5/9}} + + C_3 \frac{\mu_c}{\sqrt{\rho_c \rho_d} + \epsilon_c^{1/3} (6v_i/\pi)^{4/9}} + } + \right) + \f] where diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.C index e80209d4c..147827b56 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.C @@ -84,7 +84,7 @@ addToCoalescenceRate ( - C2_*continuousPhase.mu()*continuousPhase.rho() *continuousTurbulence().epsilon() - /sqr(sigma(fi.phase().name(), continuousPhase.name())) + /sqr(popBal_.sigmaWithContinuousPhase(fi.phase())) /pow3(1 + popBal_.alphas()) *pow4(cbrt(fi.x())*cbrt(fj.x())/(cbrt(fi.x()) + cbrt(fj.x()))) ); diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.H index 59bb46e86..b51a0bf96 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/CoulaloglouTavlaridesCoalescence/CoulaloglouTavlaridesCoalescence.H @@ -28,18 +28,18 @@ Description Model of Coulaloglou and Tavlarides (1977). The coalescence rate is calculated by - \f[ - C_1 (v_i^{2/3} + v_j^{2/3}) (v_i^{2/9} + v_j^{2/9})^{1/2} - \frac{\epsilon_c^{1/3}}{1 + \alpha_d} - \text{exp} - \left[ - - C_2 \frac{\mu_c \rho_c}{\sigma^2} - \frac{\epsilon_c}{(1 + \alpha_d)^{3}} - \left( - \frac{v_i^{1/3} v_j^{1/3}}{v_i^{1/3} + v_j^{1/3}} - \right)^{4} - \right] - \f] + \f[ + C_1 (v_i^{2/3} + v_j^{2/3}) (v_i^{2/9} + v_j^{2/9})^{1/2} + \frac{\epsilon_c^{1/3}}{1 + \alpha_d} + \text{exp} + \left[ + - C_2 \frac{\mu_c \rho_c}{\sigma^2} + \frac{\epsilon_c}{(1 + \alpha_d)^{3}} + \left( + \frac{v_i^{1/3} v_j^{1/3}}{v_i^{1/3} + v_j^{1/3}} + \right)^{4} + \right] + \f] where diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.C new file mode 100644 index 000000000..fca600503 --- /dev/null +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.C @@ -0,0 +1,146 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2018 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 . + +\*---------------------------------------------------------------------------*/ + +#include "PrinceBlanch.H" +#include "addToRunTimeSelectionTable.H" +#include "mathematicalConstants.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace coalescenceModels +{ + defineTypeNameAndDebug(PrinceBlanch, 0); + addToRunTimeSelectionTable + ( + coalescenceModel, + PrinceBlanch, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::coalescenceModels::PrinceBlanch:: +PrinceBlanch +( + const populationBalanceModel& popBal, + const dictionary& dict +) +: + coalescenceModel(popBal, dict), + C1_("C1", dimless, dict.lookupOrDefault("C1", 0.356)), + h0_("h0", dimLength, dict.lookupOrDefault("h0", 1e-4)), + hf_("hf", dimLength, dict.lookupOrDefault("h0", 1e-8)), + turbulentCollisions_(dict.lookup("turbulentCollisions")), + buoyantCollisions_(dict.lookup("buoyantCollisions")), + laminarShearCollisions_(dict.lookup("laminarShearCollisions")) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void +Foam::diameterModels::coalescenceModels::PrinceBlanch:: +addToCoalescenceRate +( + volScalarField& coalescenceRate, + const label i, + const label j +) +{ + const phaseModel& continuousPhase = popBal_.continuousPhase(); + const sizeGroup& fi = *popBal_.sizeGroups()[i]; + const sizeGroup& fj = *popBal_.sizeGroups()[j]; + scalar pi = constant::mathematical::pi; + const uniformDimensionedVectorField& g = + popBal_.mesh().lookupObject("g"); + + dimensionedScalar rij = 1.0/(1.0/fi.d() + 1.0/fj.d()); + + volScalarField collisionEfficiency = + exp + ( + - sqrt + ( + pow3(rij)*continuousPhase.rho() + /(16.0*popBal_.sigmaWithContinuousPhase(fi.phase())) + ) + *log(h0_/hf_) + *cbrt(continuousTurbulence().epsilon())/pow(rij, 2.0/3.0) + ); + + if (turbulentCollisions_) + { + coalescenceRate += + ( + C1_*pi*sqr(fi.d() + fj.d()) + *cbrt(continuousTurbulence().epsilon()) + *sqrt(pow(fi.d(), 2.0/3.0) + pow(fj.d(), 2.0/3.0)) + ) + *collisionEfficiency; + } + + if (buoyantCollisions_) + { + dimensionedScalar Sij = pi/4.0*sqr(fi.d() + fj.d()); + + coalescenceRate += + ( + Sij + *mag + ( + sqrt + ( + 2.14*popBal_.sigmaWithContinuousPhase(fi.phase()) + /(continuousPhase.rho()*fi.d()) + 0.505*mag(g)*fi.d() + ) + - sqrt + ( + 2.14*popBal_.sigmaWithContinuousPhase(fi.phase()) + /(continuousPhase.rho()*fj.d()) + 0.505*mag(g)*fj.d() + ) + ) + ) + *collisionEfficiency; + } + + if (laminarShearCollisions_) + { + FatalErrorInFunction + << "Laminar shear collision contribution not implemented for " + << this->type() << " coalescence model." + << exit(FatalError); + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.H new file mode 100644 index 000000000..6c423322b --- /dev/null +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/PrinceBlanch/PrinceBlanch.H @@ -0,0 +1,205 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2018 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 . + +Class + Foam::diameterModels::coalescenceModels::PrinceBlanch + +Description + Model of Prince and Blanch (1990). The coalescence rate is calculated by + + \f[ + \left( \theta_{ij}^{T} + \theta_{ij}^{B} + \theta_{ij}^{LS} \right) + \lambda_{ij} + \f] + + with the coalescence efficiency + + \f[ + \lambda_{ij} = + \mathrm{exp} + \left( + - \sqrt{\frac{r_{ij}^3 \rho_c}{16 \sigma}} + \mathrm{ln} \left(\frac{h_0}{h_f}\right) + \epsilon_c^{1/3}/r_{ij}^{2/3} + \right)\;, + \f] + + the turbulent collision rate + + \f[ + \theta_{ij}^{T} = + C_1 \pi (d_i + d_j)^{2} \epsilon_c^{1/3} + \sqrt{d_{i}^{2/3} + d_{j}^{2/3}}\;, + \f] + + and the buoyancy-driven collision rate + + \f[ + \theta_{ij}^{B} = S_{ij} \left| u_{ri} - u_{rj} \right|\;, + \f] + + where the rise velocity of bubble i is calculated by + + \f[ + u_{ri} = \sqrt{2.14 \sigma / \left(\rho_c d_i \right) + 0.505 g d_i}\;, + \f] + + the equivalent radius by + + \f[ + r_{ij} = \left( \frac{1}{d_i} + \frac{1}{d_j} \right)^{-1} + \f] + + and the collision cross sectional area by + + \f[ + S_{ij} = \frac{\pi}{4} \left(d_i + d_j\right)^{2}\;. + \f] + + Note that in equation 2, the bubble radius has been substituted by the + bubble diameter. Also the expression for the equivalent radius r_ij + (equation 19 in the paper of Prince and Blanch (1990)) was corrected. + The collision rate contribution due to laminar shear in the continuous phase + is currently neglected. + + \vartable + \theta_{ij}^{T} | Turbulent collision rate [m3/s] + \theta_{ij}^{B} | Buoyancy-driven collision rate [m3/s] + \theta_{ij}^{LS} | Laminar shear collision rate [m3/s] + \lambda_{ij} | Coalescence efficiency [-] + r_{ij} | Equivalent radius [m] + \rho_c | Density of continous phase [kg/m3] + \sigma | Surface tension [N/m] + h_0 | Initial film thickness [m] + h_f | Critical film thickness [m] + \epsilon_c | Continuous phase turbulent dissipation rate [m2/s3] + d_i | Diameter of bubble i [m] + d_j | Diameter of bubble j [m] + u_{ri} | Rise velocity of bubble i [m/s] + S_{ij} | Collision cross sectional area [m2] + g | Gravitational constant [m/s2] + \endvartable + + References: + \verbatim + "Bubble Coalescence and Break-Up in Air-Sparged Bubble-Columns" + Prince, M.J., Blanch, H.W. + AIChE Journal, Vol. 36, Issue 10, 1990, pp. 1485-1499 + \endverbatim + +Usage + \table + Property | Description | Required | Default value + C1 | Coefficient C1 | no | 0.089 + \endtable + +SourceFiles + PrinceBlanch.C + +\*---------------------------------------------------------------------------*/ + +#ifndef PrinceBlanch_H +#define PrinceBlanch_H + +#include "coalescenceModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace coalescenceModels +{ + +/*---------------------------------------------------------------------------*\ + Class PrinceBlanch Declaration +\*---------------------------------------------------------------------------*/ + +class PrinceBlanch +: + public coalescenceModel +{ + // Private data + + //- Optional coefficient C1, defaults to 0.089 + dimensionedScalar C1_; + + //- Initial film thickness, defaults to 1e-4m + dimensionedScalar h0_; + + //- Critical film thickness, defaults to 1e-8m + dimensionedScalar hf_; + + //- Switch for considering turbulent collisions + Switch turbulentCollisions_; + + //- Switch for considering buoyancy-induced collisions + Switch buoyantCollisions_; + + //- Switch for considering buoyancy-induced collisions + Switch laminarShearCollisions_; + + +public: + + //- Runtime type information + TypeName("PrinceBlanch"); + + // Constructor + + PrinceBlanch + ( + const populationBalanceModel& popBal, + const dictionary& dict + ); + + + //- Destructor + virtual ~PrinceBlanch() + {} + + + // Member Functions + + //- Add to coalescenceRate + virtual void addToCoalescenceRate + ( + volScalarField& coalescenceRate, + const label i, + const label j + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace coalescenceModels +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.C index a33184b54..799467ecf 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.C @@ -24,7 +24,6 @@ License \*---------------------------------------------------------------------------*/ #include "coalescenceModel.H" -#include "phaseSystem.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -38,25 +37,6 @@ namespace diameterModels } -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -const Foam::tmp -Foam::diameterModels::coalescenceModel::sigma -( - const word& phase1, - const word& phase2 -) const -{ - const phasePairKey key - ( - phase1, - phase2 - ); - - return popBal_.fluid().sigma(key); -} - - // * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // Foam::autoPtr diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.H index 302ce585c..9c4d30817 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/coalescenceModels/coalescenceModel/coalescenceModel.H @@ -59,16 +59,6 @@ protected: const populationBalanceModel& popBal_; - // Protected member functions - - //- Return the surface tension coefficient - const tmp sigma - ( - const word& phase1, - const word& phase2 - ) const; - - public: //- Runtime type information diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/daughterSizeDistributionModels/LaakkonenAlopaeusAittamaaDsd/LaakkonenAlopaeusAittamaaDsd.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/daughterSizeDistributionModels/LaakkonenAlopaeusAittamaaDsd/LaakkonenAlopaeusAittamaaDsd.H index bfcdc9e39..0a80a2cc5 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/daughterSizeDistributionModels/LaakkonenAlopaeusAittamaaDsd/LaakkonenAlopaeusAittamaaDsd.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/daughterSizeDistributionModels/LaakkonenAlopaeusAittamaaDsd/LaakkonenAlopaeusAittamaaDsd.H @@ -32,10 +32,10 @@ Description mass conservation following Kumar and Ramkrishna (1996). Also the internal coordinate was changed to particle volume, which gives - \f[ - \frac{60}{v_j} \left(\frac{v_i}{v_j}\right)^{2} - \left(1 - \frac{v_i}{v_j}\right)^{2} - \f] + \f[ + \frac{60}{v_j} \left(\frac{v_i}{v_j}\right)^{2} + \left(1 - \frac{v_i}{v_j}\right)^{2} + \f] where diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.C index 429c22386..f5a889a86 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.C @@ -1145,6 +1145,22 @@ Foam::diameterModels::populationBalanceModel::gamma } +const Foam::tmp +Foam::diameterModels::populationBalanceModel::sigmaWithContinuousPhase +( + const phaseModel& dispersedPhase +) const +{ + const phasePairKey key + ( + dispersedPhase.name(), + continuousPhase_.name() + ); + + return fluid_.sigma(key); +} + + void Foam::diameterModels::populationBalanceModel::solve() { const dictionary& solutionControls = mesh_.solverDict(name_); diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.H index 2010ef09e..679361071 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.H +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.H @@ -412,6 +412,13 @@ public: const dimensionedScalar& v ) const; + //- Return the surface tension coefficient between a given dispersed + // and the continuous phase + const tmp sigmaWithContinuousPhase + ( + const phaseModel& dispersedPhase + ) const; + //- Solve the population balance equation void solve(); };