From 1fd4ecb0241b9d21aab46b0a75f74369b4db8b20 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Thu, 5 Apr 2018 09:24:58 +0100 Subject: [PATCH] phaseTransferModels: Added deposition model This model transfers a dispersed droplet phase to a film phase at a rate relative to its intersection with a third phase. The third phase is termed the "surface". It can be enabled in constant/phaseProperties as follows: phaseTransfer ( (droplets and film) { type deposition; droplet droplets; surface solid; efficiency 0.1; } ); The efficiency is an empirical factor which represents a reduction in collisions as a result of droplets flowing around the surface phase and not coalescing on impact. This work was supported by Georg Skillas and Zhen Li, at Evonik --- .../interfacialModels/Make/files | 1 + .../deposition/deposition.C | 99 ++++++++++++++++ .../deposition/deposition.H | 109 ++++++++++++++++++ 3 files changed, 209 insertions(+) create mode 100644 applications/solvers/multiphase/reactingEulerFoam/interfacialModels/phaseTransferModels/deposition/deposition.C create mode 100644 applications/solvers/multiphase/reactingEulerFoam/interfacialModels/phaseTransferModels/deposition/deposition.H diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files index 16066c175..766c5b4d9 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files @@ -76,5 +76,6 @@ wallDampingModels/sine/sineWallDamping.C phaseTransferModels/phaseTransferModel/phaseTransferModel.C phaseTransferModels/phaseTransferModel/newPhaseTransferModel.C +phaseTransferModels/deposition/deposition.C LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialModels diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/phaseTransferModels/deposition/deposition.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/phaseTransferModels/deposition/deposition.C new file mode 100644 index 000000000..68560fb6d --- /dev/null +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/phaseTransferModels/deposition/deposition.C @@ -0,0 +1,99 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / 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 "deposition.H" +#include "phasePair.H" +#include "phaseSystem.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace phaseTransferModels +{ + defineTypeNameAndDebug(deposition, 0); + addToRunTimeSelectionTable(phaseTransferModel, deposition, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phaseTransferModels::deposition::deposition +( + const dictionary& dict, + const phasePair& pair +) +: + phaseTransferModel(dict, pair), + dropletName_(dict.lookup("droplet")), + surfaceName_(dict.lookup("surface")), + efficiency_(readScalar(dict.lookup("efficiency"))) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phaseTransferModels::deposition::~deposition() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp +Foam::phaseTransferModels::deposition::dmdt() const +{ + const phaseModel* dropletPtr = nullptr; + scalar sign = 1; + if (dropletName_ == pair_.first()) + { + dropletPtr = &pair_.phase1(); + sign = -1; + } + else if (dropletName_ == pair_.second()) + { + dropletPtr = &pair_.phase2(); + sign = 1; + } + else + { + FatalErrorInFunction + << "The specified droplet phase, " << dropletName_ << ", is not in " + << "the " << pair_ << " pair" + << exit(FatalError); + } + + const phaseModel& droplet = *dropletPtr; + const phaseModel& surface = droplet.fluid().phases()[surfaceName_]; + + return + 1.5*sign*efficiency_ + *droplet.rho()*droplet*surface/surface.d() + *mag(droplet.U() - surface.U()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/phaseTransferModels/deposition/deposition.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/phaseTransferModels/deposition/deposition.H new file mode 100644 index 000000000..c8ec7181a --- /dev/null +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/phaseTransferModels/deposition/deposition.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / 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::phaseTransferModels::deposition + +Description + Phase transfer model representing change from a dispersed phase to a film as + a result of deposition onto a third phase + +SourceFiles + deposition.C + +\*---------------------------------------------------------------------------*/ + +#ifndef deposition_H +#define deposition_H + +#include "phaseTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace phaseTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class deposition Declaration +\*---------------------------------------------------------------------------*/ + +class deposition +: + public phaseTransferModel +{ +private: + + // Private data + + //- The name of the phase which deposits + const word dropletName_; + + //- The name of the phase onto which deposition occurs + const word surfaceName_; + + //- The deposition efficiency + const scalar efficiency_; + + +public: + + //- Runtime type information + TypeName("deposition"); + + + // Constructors + + //- Construct from components + deposition + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~deposition(); + + + // Member Functions + + //- The mass transfer rate + virtual tmp dmdt() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace phaseTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //