diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C
index da38c966c..581855e65 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2015-2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,12 +25,14 @@ License
#include "massTransferModel.H"
#include "phasePair.H"
+#include "BlendedInterfacialModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(massTransferModel, 0);
+ defineBlendedInterfacialModelTypeNameAndDebug(massTransferModel, 0);
defineRunTimeSelectionTable(massTransferModel, dictionary);
}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files
index 14ed51d6b..3cf1a5d3c 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files
@@ -15,6 +15,7 @@ dragModels/Tenneti/Tenneti.C
dragModels/TomiyamaKataokaZunSakaguchi/TomiyamaKataokaZunSakaguchi.C
dragModels/WenYu/WenYu.C
dragModels/IshiiZuber/IshiiZuber.C
+dragModels/AttouFerschneider/AttouFerschneider.C
swarmCorrections/swarmCorrection/swarmCorrection.C
swarmCorrections/swarmCorrection/newSwarmCorrection.C
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C
new file mode 100644
index 000000000..bef8afa3b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C
@@ -0,0 +1,179 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / 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 "AttouFerschneider.H"
+#include "phasePair.H"
+#include "phaseSystem.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+ defineTypeNameAndDebug(AttouFerschneider, 0);
+ addToRunTimeSelectionTable(dragModel, AttouFerschneider, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
+
+Foam::tmp
+Foam::dragModels::AttouFerschneider::KGasLiquid
+(
+ const phaseModel& gas,
+ const phaseModel& liquid
+) const
+{
+ const phaseModel& solid = gas.fluid().phases()[solidName_];
+
+ const volScalarField oneMinusGas(max(1 - gas, liquid.residualAlpha()));
+ const volScalarField cbrtR(solid/oneMinusGas);
+ const volScalarField magURel(mag(gas.U() - liquid.U()));
+
+ return
+ E2_*gas.mu()*sqr(oneMinusGas/solid.d())*sqr(cbrtR)
+ /max(gas, gas.residualAlpha())
+ + E2_*gas.rho()*magURel*(1 - gas)/solid.d()*cbrtR;
+}
+
+
+Foam::tmp
+Foam::dragModels::AttouFerschneider::KGasSolid
+(
+ const phaseModel& gas,
+ const phaseModel& solid
+) const
+{
+ const volScalarField oneMinusGas(max(1 - gas, solid.residualAlpha()));
+ const volScalarField cbrtR(solid/oneMinusGas);
+
+ return
+ E1_*gas.mu()*sqr(oneMinusGas/solid.d())*sqr(cbrtR)
+ /max(gas, gas.residualAlpha())
+ + E2_*gas.rho()*mag(gas.U())*(1 - gas)/solid.d()*cbrtR;
+}
+
+
+Foam::tmp
+Foam::dragModels::AttouFerschneider::KLiquidSolid
+(
+ const phaseModel& liquid,
+ const phaseModel& solid
+) const
+{
+ const phaseModel& gas = liquid.fluid().phases()[gasName_];
+
+ return
+ E1_*liquid.mu()*sqr(max(solid, solid.residualAlpha())/solid.d())
+ /max(liquid, liquid.residualAlpha())
+ + E2_*liquid.rho()*mag(gas.U())*solid/solid.d();
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::dragModels::AttouFerschneider::AttouFerschneider
+(
+ const dictionary& dict,
+ const phasePair& pair,
+ const bool registerObject
+)
+:
+ dragModel(dict, pair, registerObject),
+ gasName_(dict.lookup("gas")),
+ liquidName_(dict.lookup("liquid")),
+ solidName_(dict.lookup("solid")),
+ E1_("E1", dimless, dict),
+ E2_("E1", dimless, dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::dragModels::AttouFerschneider::~AttouFerschneider()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+Foam::tmp
+Foam::dragModels::AttouFerschneider::CdRe() const
+{
+ FatalErrorInFunction
+ << "Not implemented."
+ << "Drag coefficient is not defined for the AttouFerschneider model."
+ << exit(FatalError);
+
+ return tmp(nullptr);
+}
+
+
+Foam::tmp
+Foam::dragModels::AttouFerschneider::K() const
+{
+ switch (Pair::compare(pair_, phasePairKey(gasName_, liquidName_)))
+ {
+ case 1:
+ return KGasLiquid(pair_.phase1(), pair_.phase2());
+ case -1:
+ return KGasLiquid(pair_.phase2(), pair_.phase1());
+ }
+
+ switch (Pair::compare(pair_, phasePairKey(gasName_, solidName_)))
+ {
+ case 1:
+ return KGasSolid(pair_.phase1(), pair_.phase2());
+ case -1:
+ return KGasSolid(pair_.phase2(), pair_.phase1());
+ }
+
+ switch (Pair::compare(pair_, phasePairKey(liquidName_, solidName_)))
+ {
+ case 1:
+ return KLiquidSolid(pair_.phase1(), pair_.phase2());
+ case -1:
+ return KLiquidSolid(pair_.phase2(), pair_.phase1());
+ }
+
+ FatalErrorInFunction
+ << "The pair does not contain two of out of the gas, liquid and solid "
+ << "phase models."
+ << exit(FatalError);
+
+ return tmp(nullptr);
+}
+
+
+Foam::tmp
+Foam::dragModels::AttouFerschneider::Kf() const
+{
+ return fvc::interpolate(K());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.H
new file mode 100644
index 000000000..453321f03
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.H
@@ -0,0 +1,155 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / 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::dragModels::AttouFerschneider
+
+Description
+ Attou and Ferschneider's Drag model for film flow through packed beds. The
+ implementation follows the desciption of Gunjal and Ranade, who, in the
+ reference below, formulate the model in more convenient terms.
+
+ Reference:
+ \verbatim
+ "Modeling of laboratory and commercial scale hydro-processing reactors
+ using CFD"
+ Gunjal, P.R., Ranade, V.V.,
+ Chemical Engineering Science
+ Volume 62, Issues 18-20, September-October 2007, pp. 5512 - 5526
+ \endverbatim
+
+SourceFiles
+ AttouFerschneider.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef AttouFerschneider_H
+#define AttouFerschneider_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+class phaseModel;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class AttouFerschneider Declaration
+\*---------------------------------------------------------------------------*/
+
+class AttouFerschneider
+:
+ public dragModel
+{
+ // Private data
+
+ //- Name of the gaseous phase
+ const word gasName_;
+
+ //- Name of the liquidphase
+ const word liquidName_;
+
+ //- Name of the solid phase
+ const word solidName_;
+
+ //- Ergun constant 1
+ const dimensionedScalar E1_;
+
+ //- Ergun constant 2
+ const dimensionedScalar E2_;
+
+
+ // Private member functions
+
+ //- Return the momentum transfer coefficient between gas and liquid
+ virtual tmp KGasLiquid
+ (
+ const phaseModel& gas,
+ const phaseModel& liquid
+ ) const;
+
+ //- Return the momentum transfer coefficient between gas and solid
+ virtual tmp KGasSolid
+ (
+ const phaseModel& gas,
+ const phaseModel& solid
+ ) const;
+
+ //- Return the momentum transfer coefficient between liquid and solid
+ virtual tmp KLiquidSolid
+ (
+ const phaseModel& liquid,
+ const phaseModel& solid
+ ) const;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("AttouFerschneider");
+
+
+ // Constructors
+
+ //- Construct from a dictionary and a phase pair
+ AttouFerschneider
+ (
+ const dictionary& dict,
+ const phasePair& pair,
+ const bool registerObject
+ );
+
+
+ //- Destructor
+ virtual ~AttouFerschneider();
+
+
+ // Member Functions
+
+ //- Drag coefficient
+ virtual tmp CdRe() const;
+
+ //- The drag coefficient used in the momentum equation
+ virtual tmp K() const;
+
+ //- The drag coefficient used in the face-momentum equations
+ virtual tmp Kf() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C
index 29a7bdf88..e7a9d01d5 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -27,12 +27,14 @@ License
#include "phasePair.H"
#include "swarmCorrection.H"
#include "surfaceInterpolate.H"
+#include "BlendedInterfacialModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(dragModel, 0);
+ defineBlendedInterfacialModelTypeNameAndDebug(dragModel, 0);
defineRunTimeSelectionTable(dragModel, dictionary);
}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
index 478cd5350..24b571bac 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,12 +25,14 @@ License
#include "heatTransferModel.H"
#include "phasePair.H"
+#include "BlendedInterfacialModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(heatTransferModel, 0);
+ defineBlendedInterfacialModelTypeNameAndDebug(heatTransferModel, 0);
defineRunTimeSelectionTable(heatTransferModel, dictionary);
}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
index 7c0bf86c9..451cff9ad 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2014-2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -28,12 +28,14 @@ License
#include "fvcCurl.H"
#include "fvcFlux.H"
#include "surfaceInterpolate.H"
+#include "BlendedInterfacialModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(liftModel, 0);
+ defineBlendedInterfacialModelTypeNameAndDebug(liftModel, 0);
defineRunTimeSelectionTable(liftModel, dictionary);
}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
index 07490e769..8268e675b 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
@@ -29,12 +29,14 @@ License
#include "surfaceInterpolate.H"
#include "fvcSnGrad.H"
#include "phaseCompressibleTurbulenceModel.H"
+#include "BlendedInterfacialModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(turbulentDispersionModel, 0);
+ defineBlendedInterfacialModelTypeNameAndDebug(turbulentDispersionModel, 0);
defineRunTimeSelectionTable(turbulentDispersionModel, dictionary);
}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C
index a2ece4192..27c4173c3 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2014-2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -26,12 +26,14 @@ License
#include "virtualMassModel.H"
#include "phasePair.H"
#include "surfaceInterpolate.H"
+#include "BlendedInterfacialModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(virtualMassModel, 0);
+ defineBlendedInterfacialModelTypeNameAndDebug(virtualMassModel, 0);
defineRunTimeSelectionTable(virtualMassModel, dictionary);
}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C
index edcc48fff..71747e15b 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2014-2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -28,12 +28,14 @@ License
#include "fvcFlux.H"
#include "surfaceInterpolate.H"
#include "wallFvPatch.H"
+#include "BlendedInterfacialModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
defineTypeNameAndDebug(wallLubricationModel, 0);
+ defineBlendedInterfacialModelTypeNameAndDebug(wallLubricationModel, 0);
defineRunTimeSelectionTable(wallLubricationModel, dictionary);
}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
index 7ba04bfc5..b567e3927 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
@@ -199,6 +199,15 @@ Foam::BlendedInterfacialModel::BlendedInterfacialModel
const bool correctFixedFluxBCs
)
:
+ regIOobject
+ (
+ IOobject
+ (
+ IOobject::groupName(typeName, phasePair(phase1, phase2).name()),
+ phase1.mesh().time().timeName(),
+ phase1.mesh()
+ )
+ ),
phase1_(phase1),
phase2_(phase2),
blending_(blending),
@@ -220,6 +229,15 @@ Foam::BlendedInterfacialModel::BlendedInterfacialModel
const bool correctFixedFluxBCs
)
:
+ regIOobject
+ (
+ IOobject
+ (
+ IOobject::groupName(typeName, pair.name()),
+ pair.phase1().mesh().time().timeName(),
+ pair.phase1().mesh()
+ )
+ ),
phase1_(pair.phase1()),
phase2_(pair.phase2()),
blending_(blending),
@@ -348,4 +366,11 @@ Foam::BlendedInterfacialModel::D() const
}
+template
+bool Foam::BlendedInterfacialModel::writeData(Ostream& os) const
+{
+ return os.good();
+}
+
+
// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
index 4debb7db0..be3dc21bc 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
@@ -65,6 +65,8 @@ class blendedInterfacialModel
template
class BlendedInterfacialModel
+:
+ public regIOobject
{
// Private data
@@ -123,6 +125,10 @@ class BlendedInterfacialModel
public:
+ //- Runtime type information
+ TypeName("BlendedInterfacialModel");
+
+
// Constructors
//- Construct from two phases, blending method and three models
@@ -183,9 +189,26 @@ public:
//- Return the blended diffusivity
tmp D() const;
+
+ //- Dummy write for regIOobject
+ bool writeData(Ostream& os) const;
};
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define defineBlendedInterfacialModelTypeNameAndDebug(ModelType, DebugSwitch) \
+ \
+ defineTemplateTypeNameAndDebugWithName \
+ ( \
+ BlendedInterfacialModel, \
+ ( \
+ word(BlendedInterfacialModel::typeName_()) + "<" \
+ + ModelType::typeName_() + ">" \
+ ).c_str(), \
+ DebugSwitch \
+ );
+
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
index d1a15f73b..8585f0f15 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
@@ -30,6 +30,9 @@ License
#include "fvcDdt.H"
#include "localEulerDdtScheme.H"
+#include "dragModel.H"
+#include "BlendedInterfacialModel.H"
+
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
index 19426058f..91882816e 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
@@ -367,6 +367,11 @@ public:
const phaseModel& continuous
) const;
+ //- Return a blended sub model between a phase pair
+ template
+ const BlendedInterfacialModel&
+ lookupBlendedSubModel(const phasePair& key) const;
+
// Field construction
diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C
index 69aebd5ed..8d835991e 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C
@@ -377,4 +377,16 @@ const modelType& Foam::phaseSystem::lookupSubModel
}
+template
+const Foam::BlendedInterfacialModel&
+Foam::phaseSystem::lookupBlendedSubModel(const phasePair& key) const
+{
+ return
+ mesh().lookupObject>
+ (
+ IOobject::groupName(modelType::typeName, key.name())
+ );
+}
+
+
// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air
new file mode 100644
index 000000000..77f13e270
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object T.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 0 1 0 0 0];
+
+internalField uniform 300;
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type zeroGradient;
+ }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid
new file mode 100644
index 000000000..ad72183d7
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object T.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 0 1 0 0 0];
+
+internalField uniform 300;
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type zeroGradient;
+ }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water
new file mode 100644
index 000000000..86e7f2081
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object T.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 0 1 0 0 0];
+
+internalField uniform 300;
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type zeroGradient;
+ }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air
new file mode 100644
index 000000000..7e419e941
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format binary;
+ class volVectorField;
+ object U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 1 -1 0 0 0 0];
+
+internalField uniform (0 0 0);
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type noSlip;
+ }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water
new file mode 100644
index 000000000..2bf5abf15
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format binary;
+ class volVectorField;
+ object U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 1 -1 0 0 0 0];
+
+internalField uniform (0 0 0);
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type noSlip;
+ }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig
new file mode 100644
index 000000000..8e9abf899
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 0 0 0 0 0];
+
+internalField uniform 0.5;
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type zeroGradient;
+ }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.solid.orig b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.solid.orig
new file mode 100644
index 000000000..83652cfb3
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.solid.orig
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object alpha.solid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 0 0 0 0 0];
+
+internalField uniform 0.5;
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type zeroGradient;
+ }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig
new file mode 100644
index 000000000..ea380a7cf
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object alpha.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 0 0 0 0 0];
+
+internalField uniform 0;
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type zeroGradient;
+ }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p
new file mode 100644
index 000000000..14df0bd61
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [1 -1 -2 0 0 0 0];
+
+internalField uniform 1e5;
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type calculated;
+ value $internalField;
+ }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh
new file mode 100644
index 000000000..182d4ef48
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [1 -1 -2 0 0 0 0];
+
+internalField uniform 1e5;
+
+boundaryField
+{
+ "(bottom|top|walls)"
+ {
+ type fixedFluxPressure;
+ value $internalField;
+ }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/Allrun b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/Allrun
new file mode 100755
index 000000000..ed61ac543
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/Allrun
@@ -0,0 +1,11 @@
+#!/bin/sh
+cd ${0%/*} || exit 1 # Run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication setFields
+runApplication $(getApplication)
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/g b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/g
new file mode 100644
index 000000000..0cc222ca3
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class uniformDimensionedVectorField;
+ location "constant";
+ object g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 1 -2 0 0 0 0];
+value (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/phaseProperties b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/phaseProperties
new file mode 100644
index 000000000..a34d27b99
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/phaseProperties
@@ -0,0 +1,193 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type heatAndMomentumTransferMultiphaseSystem;
+
+phases (air water solid);
+
+air
+{
+ type pureIsothermalPhaseModel;
+ diameterModel isothermal;
+ isothermalCoeffs
+ {
+ d0 3e-3;
+ p0 1e5;
+ }
+
+ residualAlpha 1e-6;
+}
+
+water
+{
+ type pureIsothermalPhaseModel;
+ diameterModel constant;
+ constantCoeffs
+ {
+ d 1e-4;
+ }
+
+ residualAlpha 1e-6;
+}
+
+solid
+{
+ type pureStationaryIsothermalPhaseModel;
+ diameterModel constant;
+ constantCoeffs
+ {
+ d 1e-3;
+ }
+
+ residualAlpha 1e-6;
+}
+
+blending
+{
+ default
+ {
+ type none;
+ continuousPhase none;
+ }
+}
+
+surfaceTension
+(
+ (air and water)
+ {
+ type constant;
+ sigma 0.07;
+ }
+
+ (air and solid)
+ {
+ type constant;
+ sigma 0;
+ }
+
+ (solid and water)
+ {
+ type constant;
+ sigma 0;
+ }
+);
+
+aspectRatio
+(
+ (air in water)
+ {
+ type constant;
+ E0 1.0;
+ }
+
+ (water in air)
+ {
+ type constant;
+ E0 1.0;
+ }
+
+ (air in solid)
+ {
+ type constant;
+ E0 1.0;
+ }
+
+ (solid in air)
+ {
+ type constant;
+ E0 1.0;
+ }
+
+ (water in solid)
+ {
+ type constant;
+ E0 1.0;
+ }
+
+ (solid in water)
+ {
+ type constant;
+ E0 1.0;
+ }
+);
+
+drag
+(
+ (air and water)
+ {
+ type AttouFerschneider;
+ gas air;
+ liquid water;
+ solid solid;
+ E1 280;
+ E2 4.8;
+ swarmCorrection
+ {
+ type none;
+ }
+ }
+
+ (air and solid)
+ {
+ type AttouFerschneider;
+ gas air;
+ liquid water;
+ solid solid;
+ E1 280;
+ E2 4.8;
+ swarmCorrection
+ {
+ type none;
+ }
+ }
+
+ (water and solid)
+ {
+ type AttouFerschneider;
+ gas air;
+ liquid water;
+ solid solid;
+ E1 280;
+ E2 4.8;
+ swarmCorrection
+ {
+ type none;
+ }
+ }
+);
+
+virtualMass
+();
+
+heatTransfer
+();
+
+lift
+();
+
+wallLubrication
+();
+
+turbulentDispersion
+();
+
+interfaceCompression
+();
+
+pMin 10000;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.air
new file mode 100644
index 000000000..eb9bb8ab7
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+ type heRhoThermo;
+ mixture pureMixture;
+ transport const;
+ thermo hConst;
+ equationOfState perfectGas;
+ specie specie;
+ energy sensibleInternalEnergy;
+}
+
+mixture
+{
+ specie
+ {
+ molWeight 28.9;
+ }
+ thermodynamics
+ {
+ Cp 1007;
+ Hf 0;
+ }
+ transport
+ {
+ mu 1.84e-05;
+ Pr 0.7;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.solid b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.solid
new file mode 100644
index 000000000..19a2516e6
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.solid
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object thermophysicalProperties.solid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+ type heRhoThermo;
+ mixture pureMixture;
+ transport const;
+ thermo hConst;
+ equationOfState rhoConst;
+ specie specie;
+ energy sensibleInternalEnergy;
+}
+
+mixture
+{
+ specie
+ {
+ molWeight 100;
+ }
+ equationOfState
+ {
+ rho 2500;
+ }
+ thermodynamics
+ {
+ Cp 6000;
+ Hf 0;
+ }
+ transport
+ {
+ mu 0;
+ Pr 1;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.water
new file mode 100644
index 000000000..31d8cf058
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.water
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+ type heRhoThermo;
+ mixture pureMixture;
+ transport const;
+ thermo hConst;
+ equationOfState perfectFluid;
+ specie specie;
+ energy sensibleInternalEnergy;
+}
+
+mixture
+{
+ specie
+ {
+ molWeight 18;
+ }
+ equationOfState
+ {
+ R 3000;
+ rho0 1027;
+ }
+ thermodynamics
+ {
+ Cp 4195;
+ Hf 0;
+ }
+ transport
+ {
+ mu 3.645e-4;
+ Pr 2.289;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.air
new file mode 100644
index 000000000..1296429b7
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.air
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.water
new file mode 100644
index 000000000..7f0d75a82
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.water
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/blockMeshDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/blockMeshDict
new file mode 100644
index 000000000..b3ecd3c92
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+ (0 0 0)
+ (0.15 0 0)
+ (0.15 1 0)
+ (0 1 0)
+ (0 0 0.1)
+ (0.15 0 0.1)
+ (0.15 1 0.1)
+ (0 1 0.1)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+ patch top
+ (
+ (3 7 6 2)
+ )
+ patch bottom
+ (
+ (1 5 4 0)
+ )
+ wall walls
+ (
+ (0 4 7 3)
+ (2 6 5 1)
+ )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/controlDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/controlDict
new file mode 100644
index 000000000..bfe74d9a2
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/controlDict
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application reactingMultiphaseEulerFoam;
+
+startFrom startTime;
+
+startTime 0;
+
+stopAt endTime;
+
+endTime 100;
+
+deltaT 0.5;
+
+writeControl runTime;
+
+writeInterval 1;
+
+purgeWrite 0;
+
+writeFormat ascii;
+
+writePrecision 6;
+
+writeCompression uncompressed;
+
+timeFormat general;
+
+timePrecision 6;
+
+runTimeModifiable yes;
+
+adjustTimeStep no;
+
+maxCo 0.5;
+
+maxDeltaT 1;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSchemes b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSchemes
new file mode 100644
index 000000000..3356dda13
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSchemes
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+ default Euler;
+}
+
+gradSchemes
+{
+ default Gauss linear;
+}
+
+divSchemes
+{
+ default none;
+
+ "div\(phi,alpha.*\)" Gauss vanLeer;
+ "div\(phir,alpha.*,alpha.*\)" Gauss vanLeer;
+
+ "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1;
+ "div\(phi.*,U.*\)" Gauss limitedLinearV 1;
+
+ "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1;
+ "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1;
+ "div\(alphaPhi.*,p\)" Gauss limitedLinear 1;
+
+ "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+ default Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+ default linear;
+}
+
+snGradSchemes
+{
+ default uncorrected;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSolution b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSolution
new file mode 100644
index 000000000..bed262448
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSolution
@@ -0,0 +1,78 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+ "alpha.*"
+ {
+ nAlphaCorr 1;
+ nAlphaSubCycles 2;
+ }
+
+ p_rgh
+ {
+ solver GAMG;
+ smoother DIC;
+ tolerance 1e-8;
+ relTol 0;
+ }
+
+ p_rghFinal
+ {
+ $p_rgh;
+ relTol 0;
+ }
+
+ "U.*"
+ {
+ solver smoothSolver;
+ smoother symGaussSeidel;
+ tolerance 1e-5;
+ relTol 0;
+ minIter 1;
+ }
+
+ "e.*"
+ {
+ solver smoothSolver;
+ smoother symGaussSeidel;
+ tolerance 1e-8;
+ relTol 0;
+ minIter 1;
+ }
+}
+
+PIMPLE
+{
+ nOuterCorrectors 3;
+ nCorrectors 1;
+ nNonOrthogonalCorrectors 0;
+ pRefCell 0;
+ pRefValue 1e5;
+ partialElimination true;
+}
+
+relaxationFactors
+{
+ equations
+ {
+ ".*" 1;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/setFieldsDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/setFieldsDict
new file mode 100644
index 000000000..72c3cb866
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/setFieldsDict
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.org |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+ volScalarFieldValue alpha.air 0.5
+ volScalarFieldValue alpha.water 0.0
+ volScalarFieldValue alpha.solid 0.5
+);
+
+regions
+(
+ boxToCell
+ {
+ box (0 0.5001 -0.1) (0.15 1.0 0.1);
+ fieldValues
+ (
+ volScalarFieldValue alpha.air 0.4
+ volScalarFieldValue alpha.water 0.1
+ volScalarFieldValue alpha.solid 0.5
+ );
+ }
+);
+
+
+// ************************************************************************* //