diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/files b/applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/files
index ca7d02162d..3f756728c5 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/files
+++ b/applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/files
@@ -1,4 +1,5 @@
sizeDistribution/sizeDistribution.C
phaseForces/phaseForces.C
+phaseMap/phaseMap.C
LIB = $(FOAM_LIBBIN)/libreactingEulerFoamFunctionObjects
diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseMap/phaseMap.C b/applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseMap/phaseMap.C
new file mode 100644
index 0000000000..f21bcaa1dd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseMap/phaseMap.C
@@ -0,0 +1,99 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#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("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;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseMap/phaseMap.H b/applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseMap/phaseMap.H
new file mode 100644
index 0000000000..84f5e72d04
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseMap/phaseMap.H
@@ -0,0 +1,135 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / 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 .
+
+Class
+ Foam::functionObjects::phaseMap
+
+Description
+ This functionObject writes the phase-fraction map field alpha.map with
+ incremental value ranges for each phase
+ e.g., with values 0-1 for water, 1-2 for air, 2-3 for oil etc.
+
+ Example of function object specification:
+ \verbatim
+ phaseMap
+ {
+ type phaseMap;
+ libs ("libreactingEulerFoamFunctionObjects.so");
+ writeControl writeTime;
+ }
+ \endverbatim
+
+Usage
+ \table
+ Property | Description | Required | Default value
+ type | type name: phaseMap | yes |
+ \endtable
+
+See also
+ Foam::functionObjects::fvMeshFunctionObject
+ Foam::functionObject
+
+SourceFiles
+ phaseMap.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef functionObjects_phaseMap_H
+#define functionObjects_phaseMap_H
+
+#include "fvMeshFunctionObject.H"
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+
+/*---------------------------------------------------------------------------*\
+ Class phaseMap Declaration
+\*---------------------------------------------------------------------------*/
+
+class phaseMap
+:
+ public fvMeshFunctionObject
+{
+protected:
+
+ // Protected data
+
+ //- Constant access to phases
+ const phaseSystem::phaseModelList& phases_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("phaseMap");
+
+
+ // Constructors
+
+ //- Construct from Time and dictionary
+ phaseMap
+ (
+ const word& name,
+ const Time& runTime,
+ const dictionary&
+ );
+
+ //- Disallow default bitwise copy construction
+ phaseMap(const phaseMap&) = delete;
+
+
+ //- Destructor
+ virtual ~phaseMap();
+
+
+ // Member Functions
+
+ //- Calculate the force fields
+ virtual bool execute();
+
+ //- Write the force fields
+ virtual bool write();
+
+
+ // Member Operators
+
+ //- Disallow default bitwise assignment
+ void operator=(const phaseMap&) = delete;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace functionObjects
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
index a477beee5e..a546a55513 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
@@ -53,19 +53,6 @@ namespace Foam
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
-void Foam::multiphaseSystem::calcAlphas()
-{
- scalar level = 0.0;
- alphas_ == 0.0;
-
- forAll(phases(), i)
- {
- alphas_ += level*phases()[i];
- level += 1.0;
- }
-}
-
-
Foam::tmp Foam::multiphaseSystem::nHatfv
(
const volScalarField& alpha1,
@@ -239,20 +226,6 @@ Foam::multiphaseSystem::multiphaseSystem
:
phaseSystem(mesh),
- alphas_
- (
- IOobject
- (
- "alphas",
- mesh_.time().timeName(),
- mesh,
- IOobject::NO_READ,
- IOobject::AUTO_WRITE
- ),
- mesh,
- dimensionedScalar(dimless, 0)
- ),
-
cAlphas_(lookup("interfaceCompression")),
deltaN_
@@ -819,8 +792,6 @@ void Foam::multiphaseSystem::solve
referenceAlpha -= solvePhases[solvePhasei];
}
}
-
- calcAlphas();
}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H
index f20d7a4f3b..4476c380b4 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H
@@ -61,10 +61,6 @@ class multiphaseSystem
// Private Data
- //- The indexed phase-fraction field; e.g., 1 for water, 2 for air, 3
- // for oil, etc...
- volScalarField alphas_;
-
//- Interface compression coefficients
cAlphaTable cAlphas_;
@@ -74,8 +70,6 @@ class multiphaseSystem
// Private Member Functions
- void calcAlphas();
-
tmp nHatfv
(
const volScalarField& alpha1,
diff --git a/etc/caseDicts/postProcessing/fields/phaseMap b/etc/caseDicts/postProcessing/fields/phaseMap
new file mode 100644
index 0000000000..7557526804
--- /dev/null
+++ b/etc/caseDicts/postProcessing/fields/phaseMap
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Version: dev
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+Description
+ Writes the phase-fraction map field alpha.map with incremental value ranges
+ for each phase e.g., with values 0-1 for water, 1-2 for air, 2-3 for oil
+
+\*---------------------------------------------------------------------------*/
+
+type phaseMap;
+libs ("libreactingEulerFoamFunctionObjects.so");
+
+writeControl writeTime;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/controlDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/controlDict
index 517e5b729f..202d6b47c3 100644
--- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/controlDict
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/controlDict
@@ -51,5 +51,9 @@ maxCo 0.5;
maxDeltaT 1;
+functions
+{
+ #includeFunc phaseMap
+}
// ************************************************************************* //