diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files
index 14ed51d6ba..3cf1a5d3cf 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 0000000000..bef8afa3ba
--- /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 0000000000..453321f035
--- /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/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air
new file mode 100644
index 0000000000..77f13e270e
--- /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 0000000000..ad72183d7d
--- /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 0000000000..86e7f20818
--- /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 0000000000..7e419e9413
--- /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 0000000000..2bf5abf150
--- /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 0000000000..8e9abf899b
--- /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 0000000000..83652cfb3d
--- /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 0000000000..ea380a7cfe
--- /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 0000000000..14df0bd61d
--- /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 0000000000..182d4ef480
--- /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 0000000000..ed61ac5435
--- /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 0000000000..0cc222ca34
--- /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 0000000000..a34d27b991
--- /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 0000000000..eb9bb8ab73
--- /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 0000000000..19a2516e6b
--- /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 0000000000..31d8cf0589
--- /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 0000000000..1296429b72
--- /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 0000000000..7f0d75a82f
--- /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 0000000000..b3ecd3c924
--- /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 0000000000..bfe74d9a29
--- /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 0000000000..3356dda13b
--- /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 0000000000..bed262448b
--- /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 0000000000..72c3cb866a
--- /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
+ );
+ }
+);
+
+
+// ************************************************************************* //