Files
OpenFOAM-12/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/PhaseTransferPhaseSystem/PhaseTransferPhaseSystem.H
Will Bainbridge 85a9e17dd5 reactingEulerFoam: Added phase transfer structure
An additional layer has been added into the phase system hierarchy which
facilitates the application of phase transfer modelling. These are
models which exchange mass between phases without the thermal coupling
that would be required to represent phase change. They can be thought of
as representation changes; e.g., between two phases representing
different droplet sizes of the same physical fluid.

To facilitate this, the heat transfer phase systems have been modified
and renamed and now both support mass transfer. The two sided version
is only required for derivations which support phase change.

The following changes to case settings have been made:

- The simplest instantiated phase systems have been renamed to
basicTwoPhaseSystem and basicMultiphaseSystem. The
heatAndMomentumTransfer*System entries in constant/phaseProperties files
will need updating accordingly.

- A phaseTransfer sub-model entry will be required in the
constant/phaseProperties file. This can be an empty list.

- The massTransfer switch in thermal phase change cases has been renamed
phaseTransfer, so as not to be confused with the mass transfer models
used by interface composition cases.

This work was supported by Georg Skillas and Zhen Li, at Evonik
2018-04-05 15:11:39 +01:00

136 lines
3.8 KiB
C++

/*---------------------------------------------------------------------------*\
========= |
\\ / 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 <http://www.gnu.org/licenses/>.
Class
Foam::MassTransferTransferPhaseSystem
Description
Class which models non-thermally-coupled mass transfers; i.e.,
representation changes, rather than phase changes.
SourceFiles
PhaseTransferPhaseSystem.C
\*---------------------------------------------------------------------------*/
#ifndef PhaseTransferPhaseSystem_H
#define PhaseTransferPhaseSystem_H
#include "phaseSystem.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
class blendingMethod;
template<class modelType> class BlendedInterfacialModel;
class phaseTransferModel;
/*---------------------------------------------------------------------------*\
Class PhaseTransferPhaseSystem Declaration
\*---------------------------------------------------------------------------*/
template<class BasePhaseSystem>
class PhaseTransferPhaseSystem
:
public BasePhaseSystem
{
protected:
// Protected typedefs
typedef HashTable
<
autoPtr<BlendedInterfacialModel<phaseTransferModel>>,
phasePairKey,
phasePairKey::hash
> phaseTransferModelTable;
typedef HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash>
rDmdtTable;
// Protected data
// Sub Models
//- Mass transfer models
phaseTransferModelTable phaseTransferModels_;
//- Mass transfer rates
rDmdtTable rDmdt_;
// Protected member functions
//- Return the representation mass transfer rate
virtual tmp<volScalarField> rDmdt(const phasePairKey& key) const;
public:
// Constructors
//- Construct from fvMesh
PhaseTransferPhaseSystem(const fvMesh&);
//- Destructor
virtual ~PhaseTransferPhaseSystem();
// Member Functions
//- Return the mass transfer rate for a pair
virtual tmp<volScalarField> dmdt(const phasePairKey& key) const;
//- Return the mass transfer rates for each phase
virtual Xfer<PtrList<volScalarField>> dmdts() const;
//- Return the mass transfer matrices
virtual autoPtr<phaseSystem::massTransferTable> massTransfer() const;
//- Correct the mass transfer rates
virtual void correct();
//- Read base phaseProperties dictionary
virtual bool read();
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
#include "PhaseTransferPhaseSystem.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //