/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 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::twoPhaseSystem
Description
Incompressible multi-phase mixture with built in solution for the
phase fractions with interface compression for interface-capturing.
Derived from transportModel so that it can be unsed in conjunction with
the incompressible turbulence models.
Surface tension and contact-angle is handled for the interface
between each phase-pair.
SourceFiles
twoPhaseSystem.C
\*---------------------------------------------------------------------------*/
#ifndef twoPhaseSystem_H
#define twoPhaseSystem_H
#include "IOdictionary.H"
#include "phaseModel.H"
#include "dragModel.H"
#include "heatTransferModel.H"
#include "volFields.H"
#include "surfaceFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declarations
class dragModel;
class heatTransferModel;
/*---------------------------------------------------------------------------*\
Class twoPhaseSystem Declaration
\*---------------------------------------------------------------------------*/
class twoPhaseSystem
:
public IOdictionary
{
// Private data
const fvMesh& mesh_;
phaseModel phase1_;
phaseModel phase2_;
dimensionedScalar Cvm_;
dimensionedScalar Cl_;
autoPtr drag1_;
autoPtr drag2_;
autoPtr heatTransfer1_;
autoPtr heatTransfer2_;
word dispersedPhase_;
scalar residualPhaseFraction_;
dimensionedScalar residualSlip_;
public:
// Constructors
//- Construct from fvMesh
twoPhaseSystem(const fvMesh&);
//- Destructor
virtual ~twoPhaseSystem()
{}
// Member Functions
const fvMesh& mesh() const
{
return mesh_;
}
const phaseModel& phase1() const
{
return phase1_;
}
const phaseModel& phase2() const
{
return phase2_;
}
const phaseModel& otherPhase(const phaseModel& phase) const
{
if (&phase == &phase1_)
{
return phase2_;
}
else
{
return phase1_;
}
}
phaseModel& phase1()
{
return phase1_;
}
phaseModel& phase2()
{
return phase2_;
}
const dragModel& drag1() const
{
return drag1_();
}
const dragModel& drag2() const
{
return drag2_();
}
const dragModel& drag(const phaseModel& phase) const
{
if (&phase == &phase1_)
{
return drag1_();
}
else
{
return drag2_();
}
}
scalar residualPhaseFraction() const
{
return residualPhaseFraction_;
}
const dimensionedScalar& residualSlip() const
{
return residualSlip_;
}
tmp dragCoeff() const;
tmp liftForce(const volVectorField& U) const;
const heatTransferModel& heatTransfer1() const
{
return heatTransfer1_();
}
const heatTransferModel& heatTransfer2() const
{
return heatTransfer2_();
}
tmp heatTransferCoeff() const;
//- Return the mixture density
tmp rho() const;
//- Return the mixture velocity
tmp U() const;
//- Return the mixture flux
tmp phi() const;
//- Return the virtual-mass coefficient
dimensionedScalar Cvm() const
{
return Cvm_;
}
//- Return the lift coefficient
dimensionedScalar Cl() const
{
return Cl_;
}
//- Dummy correct
void correct()
{}
//- Read base phaseProperties dictionary
bool read();
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //