The new multiphaseEulerFoam is based on reactingMultiphaseEulerFoam with some improvements and rationalisation to assist maintenance and further development. The phase system solution has been enhanced to handle two phases more effectively and all two-phase specific models updated for compatibility so that multiphaseEulerFoam can also replace reactingTwoPhaseEulerFoam. When running multiphaseEulerFoam with only two-phases the default behaviour is to solve for both phase-fractions but optionally a reference phase can be specified so that only the other phase-fraction is solved, providing better compatibility with the behaviour of reactingTwoPhaseEulerFoam. All reactingMultiphaseEulerFoam and reactingTwoPhaseEulerFoam tutorials have been updated for multiphaseEulerFoam.
100 lines
2.6 KiB
C
100 lines
2.6 KiB
C
/*---------------------------------------------------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration | Website: https://openfoam.org
|
|
\\ / A nd | Copyright (C) 2020 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 "phaseMap.H"
|
|
#include "addToRunTimeSelectionTable.H"
|
|
|
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
|
|
namespace Foam
|
|
{
|
|
namespace functionObjects
|
|
{
|
|
defineTypeNameAndDebug(phaseMap, 0);
|
|
addToRunTimeSelectionTable(functionObject, phaseMap, dictionary);
|
|
}
|
|
}
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
|
|
|
Foam::functionObjects::phaseMap::phaseMap
|
|
(
|
|
const word& name,
|
|
const Time& runTime,
|
|
const dictionary& dict
|
|
)
|
|
:
|
|
fvMeshFunctionObject(name, runTime, dict),
|
|
phases_(mesh_.lookupObject<phaseSystem>("phaseProperties").phases())
|
|
{}
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
|
|
|
Foam::functionObjects::phaseMap::~phaseMap()
|
|
{}
|
|
|
|
|
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
|
|
bool Foam::functionObjects::phaseMap::execute()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
|
|
bool Foam::functionObjects::phaseMap::write()
|
|
{
|
|
volScalarField phaseMap
|
|
(
|
|
IOobject
|
|
(
|
|
IOobject::groupName(phases_[0].member(), "map"),
|
|
mesh_.time().timeName(),
|
|
mesh_,
|
|
IOobject::NO_READ,
|
|
IOobject::AUTO_WRITE
|
|
),
|
|
mesh_,
|
|
dimensionedScalar(dimless, 0)
|
|
);
|
|
|
|
scalar level = 0;
|
|
|
|
forAll(phases_, i)
|
|
{
|
|
phaseMap += level*phases_[i];
|
|
level += 1;
|
|
}
|
|
|
|
phaseMap.write();
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
// ************************************************************************* //
|